프로젝트 배치 (Nginx + django + uwsgi + MySQL + ubuntu)

3331 단어
목표: ubto 에 배치, 가상 호스트, 포트 번호 8000
준비 단계
  • 완전한 프로젝트 를 준비 하고 git push 를 GitHub 에 올 립 니 다.프로젝트 가 독립 적 으로 운행 할 수 있 도록 확보 하 다.
  • Ubuntu 환경 Python 3 pip 3 django 1.11.6 uwsgi MySQL 을 준비 하여 모든 부분 이 정확 하도록 확보 합 니 다

  • 배치 원리
  • nginx 는 웹 요청 을 받 아들 이 는 것 을 제공 합 니 다. 즉, Nginx 는 브 라 우 저 요청 이 가장 먼저 도착 한 곳 입 니 다.Nginx 는 브 라 우 저의 요청 에 따라 정적 자원 의 요청 을 자신 에 게 맡 깁 니 다.정적 자원 이 아 닌 요청 은 uwsgi 에 게 맡 깁 니 다.uwsgi 는 django 와 상호작용 을 담당 합 니 다.

  • 상세 설정
  • nginx 설정 은 / etc / nginx / conf. d / 디 렉 터 리 에 Nginx 설정 파일 bank. conf. d 디 렉 터 리 에 여러 개의 Nginx 설정 파일 을 동시에 만 들 수 있 습 니 다. 그들 사 이 는 서로 독립 되 어 뒤로 영향 을 주지 않 습 니 다
  • upstream django {
        #server    127.0.0.1:8001;
         server      unix://home/sunmingming/sites/bank-manage/Bank-manage1/bank/my_sock.sock;
     #Nginx uwsgi    Sock  。    uwsgi Sock  
    }
    
    
    server {
        listen      8000;  #         ,   web          
        server_name www.sunmingming.top;  #     ip     
        server_name sunmingming.top;
        charset     utf-8;  #    
           root /;      
    
        location /static {
            alias /home/sunmingming/sites/bank-manage/Bank-manage1/bank/static/;  #          
        }
        #           Django    
        location / {
            uwsgi_pass      django;  #        
            #         uwsgi 
            include  uwsgi_params; # uwsgi_params   ,nginx uwsgi          
        }
    }
    
  • uwsgi 의 설정 은 django 의 루트 디 렉 터 리 (manage. py 와 같은 등급) 에 uwsgi 설정 파일 my 를 만 듭 니 다.uwsgi.ini
  • [uwsgi]
    #   nginx      nginx    socket
     socket = 0:8001
    
    #    web     
    #http = 0:8080
    
    #     
    chdir = /home/sunmingming/sites/bank-manage/Bank-manage1/bank
    
    #    wsgi.py     
    wsgi-file = /home/sunmingming/sites/bank-manage/Bank-manage1/bank/bank/wsgi.py
    
    #    
    master = true
    
    #    &   
    processes = 6
    threads = 2
    
    # .sock      Nginx        
     socket = /home/sunmingming/sites/bank-manage/Bank-manage1/bank/my_sock.sock
     chmod-socket = 666
    
    #           
    vacuum = true
    
    #   pid  
    pidfile=uwsgi.pid
    
    #   log  
    daemonize=uwsgi.log
    
  • django 설정 django 는 MySQL 을 사용 하려 면.변경 사항 이 필요 합 니 다
  • 프로젝트 의 init. py 에 추가
  • import pymysql
    pymysql.install_as_MySQLdb()
    
  • django 에서 MySQL 을 사용 하려 면 pymysql
  • 을 설치 해 야 합 니 다.
    sudo apt-get install python3-pymysql 
    

    3. settings. py 변경
    DEBUG = False
    ALLOWED_HOSTS = ["*"]   #    ip  ,*        
     MIDDLEWARE        
    
    DATABASES = {
        'default': {
            'ENGINE': 'django.db.backends.mysql',
            'NAME': 'bank_db',
            'USER':'root',
            'PASSWORD':'         ',
            'HOST':'localhost',
            'PORT':'3306',
        }
    }
    
    STATIC_URL = '/static/'
    STATICFILES_DIRS=(
        os.path.join(BASE_DIR, "static"),
    )
    

    배치 과정 에서 자주 사용 되 는 명령 들
    python manage.py migrate    #        
    python manage.py makemigrations  #              
    python manage.py createsuperuser  #       
    mysql -u root -p    #  mysql
    create database bank_db character set utf8;  # MySQL      ,       utf-8
    show databases; #     
    sudo nginx -t #  Nginx       
    sudo /etc/init.d/nginx restart   #  nginx
    uwsgi --stop uwsgi.pid   #   uwsgi         ,  uwsgi
    uwsgi --ini my_uwsgi.ini  #  uwsgi
    

    좋은 웹페이지 즐겨찾기