Ubuntu18.04 Djangoプロジェクトの導入(Nginx+uWSDI)

6982 ワード

1.Nginxのインストール

  • 取付
  • sudo apt-get install nginx
    
  • サービス
  • を開始
    sudo service nginx start
    sudo service nginx stop
    sudo service nginx restart
    

    または
    sudo /etc/init.d/ngnix start
    sudo /etc/init.d/nginx stop
    sudo /etc/init.d/nginx restart
    
  • エラーログを表示
  • grep /var/log/nginx/error.log
    

    2.uWSDIのインストール

  • python-dev
  • をインストール
    apt-get install python-dev
    
  • uWSDi
  • をインストール
    pip install uwsgi
    
  • uWSDiが関数を使用してuWSDiが正常かどうかをテストし、testを新規作成します.pyファイル、次の関数を定義します:
  • def application(env, start_response):
    	start_response('200 OK',  [('Contest-Type', 'text/html')] )
    	return [b'uWSGI is Good!']   #python3
    	#return ['uWSGI is Good!']   #python2
    

    uWSDiをテストし、正しく表示されている場合は、web client uWSDi Pythonの3つのセクションがスムーズであることを示します.
    uwsgi --http :8080 --wsgi-file test.py
    

    パラメータの説明:1.http:8080:httpプロトコルを使用し、ポート番号は8080 2.wsgi-file test.py:指定したファイルをロード
  • Djangoプロジェクトをテストし、web client uWSDi Djangoの3つの段階がスムーズかどうかをテストします.次の文を実行するには、Djangoプロジェクトディレクトリ
  • に進む必要があります.
    uwsgi --http :8080 --module mysite.uwsg
    

    3.Nginxの構成


    3.1サーバ構成の追加

  • /etc/nginx/下のuwsgi_paramsファイルをプロジェクトディレクトリにコピーします.
  • プロジェクトディレクトリの下にプロファイルmysiteを作成するnginx.confは、次の内容を書き込みます:
  • # the upstream component nginx needs to connect to
    upstream django {
        # server unix:///home/wfc/works/Django/LicenseSite/license.sock;  #  socket  
        server 127.0.0.1:8080;   #   TCP  
    }
    # configuration of the server
    server {
        # the port your site will be served on
        listen      8080;
        # the domain name it will serve for
        server_name 127.0.0.1; # substitute your machine's IP address or FQDN
        charset     utf-8;
    
        # max upload size
        client_max_body_size 75M;   # adjust to taste
    
        location /static {
            alias /home/wfc/works/Django/LicenseSite/static; # your Django project's static files - amend as required
        }
    
        # Finally, send all non-media requests to the Django server.
        location / {
            uwsgi_pass  django;
            include     /home/wfc/works/Django/LicenseSite/uwsgi_params;  # the uwsgi_params file you installed
        }
    }
    
  • /etc/nginx/sites-enabled/ディレクトリの下にプロファイルを作成する接続
  • sudo ln -s /home/wfc/works/Django/LicenseSite/mysite_nginx.conf /etc/nginx/sites-enabled/
    

    3.2 staticファイルの配備


    djangoプロジェクトのsettingファイルに、次の行を追加します.
    STATIC_ROOT = os.path.join(BASE_DIR, 'static/')
    

    collectstaticを実行し、主にadminの静的ファイルをプロジェクトディレクトリにコピーします.そうしないと、開いているページにはフォーマット効果がありません.
    python manage.py collectstatic
    

    3.3試験Nginx

  • サービス再開
  • sudo service nginx restart
    
  • 静的ファイルに正常なアクセスが表示されるかどうかをテストします.http://127.0.0.1:8080/static/image.jpg

  • 4.TCP portの代わりにUnix socketを使用

  • プロファイルを変更してserver unix前のコメントをキャンセルし、server 127.注記
  • server unix:///home/wfc/works/Django/LicenseSite/license.sock;  #  socket  
    #server 127.0.0.1:8080;   #   TCP  
    
  • Nginxを再起動しuWSDi
  • を実行
    uwsgi --socket mysite.sock --module mysite.wsgi --chmod-socket=666 # (very permissive)
    

    または
    uwsgi --socket mysite.sock --module mysite.wsgi --chmod-socket=664 # (more sensible)
    

    5.使用iniファイル実行uWSDI

  • プロジェクトディレクトリの下にmysiteを作成するuwsgi.iniファイル
  • [uwsgi]
    
    # Django-related settings
    # the base directory (full path)
    chdir           = /home/wfc/works/Django/LicenseSite/
    # Django's wsgi file
    module          = LicenseSite.wsgi
    # the virtualenv (full path)
    home            = /home/wfc/works/Django/LicenseSite/venv/
    
    # process-related settings
    # master
    master          = true
    # maximum number of worker processes
    processes       = 10
    # the socket (use the full path to be safe
    socket          = /home/wfc/works/Django/LicenseSite/license.sock
    # ... with appropriate permissions - may be needed
    chmod-socket    = 666
    # clear environment on exit
    vacuum          = true
    
  • uWSDi
  • を起動
    uwsgi --ini mysite_uwsgi.ini
    

    6.uWSDIの自己起動を設定する

  • /etc/systemd/systemm/ディレクトリの下にサービスプロファイルmysiteを作成します.service
  • [Unit]
    Description=uWSGI instance
    After=network.target
     
    [Service]
    User=wfc
    WorkingDirectory=/home/wfc/works/Django/LicenseSite
    Enviroment=/home/wfc/works/Django/LicenseSite/venv/pyvenv.cfg
    ExecStart=/home/wfc/.local/bin/uwsgi --ini /home/wfc/works/Django/LicenseSite/license_uwsgi.ini
    
    [Install]
    WantedBy=multi-user.target
    
  • 設定項目自己起動
  • sudo systemctl enable mysite
    
  • サービスの他の動作
  • sudo systemctl start epolicense
    sudo systemctl restart epolicense
    sudo systemctl stop epolicense
    sudo systemctl status epolicense