서버 구축 프로 세 스 기록 Nginx + uwsgi + Django

7371 단어
서버 구축 프로 세 스 기록 Nginx + uwsgi + Django
본문 진행 의 전제:
로 컬 에서 Django 프로젝트 디 버 깅 을 마 친 후 서버 로 이동 하 는 데 하루 가 걸 렸 습 니 다. 절 차 를 참고 하 십시오.
첫 번 째 Django 프로젝트 설정 수정 완료
  • settings. py 파일 의 수정
    //settings.py
    DEBUG = False
    ALLOWED_HOSTS = ['*']
    
    # STATICFILES_DIRS           django                 
    # STATIC_ROOT          ./manage.py collectstatic (   app       )                
    #    nginx        STATIC_ROOT           
    
    STATIC_URL = '/static/'
    STATIC_ROOT = os.path.join(BASE_DIR, 'static')
    # STATICFILES_DIRS = [
    #     os.path.join(BASE_DIR, 'static')
    # ]   
    
  • manage. py 와 같은 등급 의 디 렉 터 리 에서 procject. conf 파일 을 만 듭 니 다
  • 배치 전에 원리
    #           ,
    #nginx           ,           http  ,   、  ,
    #            nginx         ,       ,
    #        ,nginx       ,      uWSGI;uWSGI           ,      wsgi,
    #wsgi      django          ,    django      wsgi,
    #wsgi        ,   uWSGI,
    #uWSGI      nginx,nginx            (    )。
    #* :                        
    
    # project.conf 
    user www-data;
    worker_processes auto;
    pid /run/nginx.pid;
    
    events {
      worker_connections 768;
      # multi_accept on;
    }
    
    http {
      sendfile on;
      tcp_nopush on;
      tcp_nodelay on;
      keepalive_timeout 65;
      types_hash_max_size 2048;
      include /etc/nginx/mime.types;
      default_type application/octet-stream;
      ssl_protocols TLSv1 TLSv1.1 TLSv1.2; # Dropping SSLv3, ref: POODLE
      ssl_prefer_server_ciphers on;
      access_log /var/log/nginx/access.log;
      error_log /var/log/nginx/error.log;
      gzip on;
      gzip_disable "msie6";
      include /etc/nginx/conf.d/*.conf;
      include /etc/nginx/sites-enabled/*;
      
      #      
      server {
          listen         80;
          server_name    www.19950314nina.top;   #           
          charset UTF-8;
          access_log      /var/log/nginx/myweb_access.log; 
          error_log       /var/log/nginx/myweb_error.log;
      
          client_max_body_size 75M;
      #        ,nginx      uWSGI;uWSGI          ,   wsgi,
          location / {
             include uwsgi_params;
             uwsgi_pass 127.0.0.1:8000;    #       8000         uwsgi.ini     
             uwsgi_read_timeout 10;    #                   504
          }
         #            nginx         ,       ,
          location /static {
              expires 30d;
              autoindex on;
              add_header Cache-Control private;
              alias /home/mrg/PycharmProjects/myblog/static/; #               setting.py     STATIC_ROOT    
         }
       }
    }
    
  • manage. py 와 같은 등급 의 디 렉 터 리 에 procject name 을 만 듭 니 다.uwsgi. ini 파일
    [uwsgi]
    socket = :8000   #       nginx         
    chdir=/home/mrg/PycharmProjects/myblog  # django        
    module= myblog.wsgi       # wsgi.py          
    master = true         
    processes=2
    threads=2
    max-requests=2000
    chmod-socket=664
    vacuum=true
    daemonize = /home/mrg/PycharmProjects/myblog/uwsgi.log # uwsgi             
    
    #    
    [uwsgi]
    socket= :8000
    chdir = /home/mrg/PycharmProjects/myblog  #django        
    module = myblog.wsgi
    master = true
    processes = 4
    vacumm = true
    
  • 마지막
  • nginx 프로필 의 루트 디 렉 터 리 에 가서 mime. types (/ etc / nginx / mime. types) 를 복사 하고 uwsgiparams 는 프로젝트 디 렉 터 리 와 procject. conf 를 함께 복사 합 니 다.


  • 두 번 째 사용 git
    저 한 테 는 git 를 사용 하 는 게 편 해 요.
    다른 방식 으로 파일 을 서버 에 업로드 할 수도 있 습 니 다.
  • Github 빈 창고 만 들 기
  • 프로젝트 디 렉 터 리 에서 다음 절 차 를 수행 합 니 다
    git init   #     
    git remote add origin          #       
    source ~/env/bin/activate    #             django     
    pip freeze > requirements.txt   #       
    git add .  #       
    git commit -m '    '  #        
    git push origin master   #        
    
    코드 충돌 상황
    #                 ,        ,       :
    git stash
    git pull
    git stash pop
    
    #                      .     :
    git reset --hard
    git pull
    
  • ubuntu 자체 ssh 도 구 를 사용 하여 서버 에 로그 인
    ssh [email protected]
    
    한 후 사용 자 를 만 듭 니 다 (이미 있 으 면 중복 할 필요 가 없습니다)
    #   root                 ,mrg     
    #            ,          
    root@localhost:~# useradd -m -s /bin/bash mrg
    
    #               
    root@localhost:~# usermod -a -G sudo mrg
    
    #         
    #                 ,        ,      
    root@localhost:~# passwd mrg
    
    #          
    root@localhost:~# su  mrg
    
    #     ,@               root  
    mrg@localhost:~$
    
  • 3 단계 환경 설정
  • 흔 한 라 이브 러 리 설치
  • - sudo apt-get update
    - sudo apt-get upgrade
    - sudo apt-get install man gcc  make sudo lsof ssh openssl tree vim dnsutils iputils-ping net-tools psmisc sysstat curl telnet traceroute wget libbz2-dev libpcre3 libpcre3-dev libreadline-dev libsqlite3-dev libssl-dev zlib1g-dev git mysql-server mysql-client zip  p7zip mycli
    
  • 가상 환경 만 들 기
    - sudo apt-get python3-pip
    - sudo pip3 install virtualenv  
    - sudo virtualenv -p python3 env_name        
    - source ~/env_name/bin/active          
    - pip install uwsgi    uwsgi
    - deactivate        
    - sudo ufw allow 80     80  
    
    
  • mysql 데이터베이스 수정 문자 집합
      mysql     
    
    cd /etc/mysql/mysql.conf.d
    
    sudo cp mysql.cnf  mysql.cnf.bak
    
    sudo vim mysql.cnf
    
     [mysqld]     :
    
    character_set_server = utf8
    
           
    
    sudo systemctl restart mysql.service  #    
    
  • Nginx 설치
    sudo apt-get install nginx  #  
    sudo /etc/init.d/nginx start[or stop or restart]  #  ,  ,  
    
  • git 창고 에서 코드 끌 기
  • git clone          #    clone  
    # cd       
    source ~/env/bin/activate    #                      
    pip install -r requirements.txt   #       
    

    네 번 째 단계 설정 확인 및 수정
  • 데이터베이스 의 일부 조작
    #     
    grant all on *.* to 'django'@'%' identified by 'djangopwd';
    #        
    flush privileges;
    #       
    create database project
    
  • django 데이터베이스 이전 및 정적 폴 더 생 성
    #cd      
    ./manage.py makemigrations  #       
    ./manage.py migrate  #   
    ./manage.py collectstatic  #        
    
  • 프로젝트 디 렉 터 리 아래 설정 파일 의 경로 가 서버 에 대응 하 는 경로 와 일치 하 는 지 확인 합 니 다.
  • 주로 다음 과 같이 확인 해 야 할 프로필
    1.settings.py 
    
    2.project.conf
    alias /home/mrg/PycharmProjects/myblog/static/; #               setting.py     STATIC_ROOT    
    
    3.projectname_uwsgi.ini
    chdir=/home/mrg/PycharmProjects/myblog  # django        
    
       2,3               
    
  • 확인 후
    # cd       
    uwsgi --ini project_uwsgi.ini   
    
    nginx -c /home/mrg/PycharmProjects/myblog/project.conf    #             
    
    
  • 여기까지 기본적으로 설정 이 완료 되 었 으 니, 당신 도 웹 페이지 에서 당신 의 페이지 를 열 수 있 습 니 다.
    -----------------------------------------------------------------------------------------------------------------------------
  • 시작 할 때 오류 가 발생 하면 터미널 정 보 를 보고 오 류 를 해결한다.터미널 에서 오류 가 발생 하지 않 았 지만 탐색 중 500, 502 등의 오류 가 발생 하면 프로젝트 디 렉 터 리 에 가서 nginx 로그 와 uwSGI 로 그 를 보고 오 류 를 해결 합 니 다.
  • 본 논문 에서 virtualenv 개발 환경 을 사 용 했 으 나 하나의 conf 파일 로 nginx 에 하나의 공 사 를 배 치 했 을 뿐 여러 공정 을 배치 하 는 문 제 를 설명 하지 않 았 고 슈퍼 바 이 저 를 사용 하여 프로 세 스 를 관리 하 는 등 설명 하지 않 았 다.개인의 취미 와 수요 에 따라 실천 을 확장 하 세 요.

  • 후기
    나 처럼 어 리 석 은 가운데 끊임없이 지식 을 얻 고 진보 하 는 사람들 에 게 바 칩 니 다.
    네온사인 이 반 짝 이지 만, 사람들 이 진정 으로 필요 로 하 는 것 은 단지 앞길 을 밝 힐 수 있 는 촛불 일 뿐이다.
    참고 블 로그:
    https://blog.csdn.net/c465869935/article/details/53242126
    https://www.cnblogs.com/fnng/p/5268633.html
    https://www.zmrenwu.com/post/20/

    좋은 웹페이지 즐겨찾기