ホームページ > 運用・保守 > Nginx > nginx + uwsgi を使用して独自の Django プロジェクトをデプロイする方法

nginx + uwsgi を使用して独自の Django プロジェクトをデプロイする方法

WBOY
リリース: 2023-05-12 22:10:05
転載
1405 人が閲覧しました

    ステップ 1: ソースを変更する

    コマンドを入力して Ubuntu ダウンロード ソースを置き換えます

    sudo nano /etc/apt/sources.list
    ログイン後にコピー

    以下をすべて元のソースに置き換えますここで使用しているのは Alibaba のソースですが、他のソースに変更することもできます。

    deb http://mirrors.aliyun.com/ubuntu/ bionic main restricted
    deb http://mirrors.aliyun.com/ubuntu/ bionic-updates main restricted
    deb http://mirrors.aliyun.com/ubuntu/ bionic universe
    deb http://mirrors.aliyun.com/ubuntu/ bionic-updates universe
    deb http://mirrors.aliyun.com/ubuntu/ bionic multiverse
    deb http://mirrors.aliyun.com/ubuntu/ bionic-updates multiverse
    deb http://mirrors.aliyun.com/ubuntu/ bionic-backports main restricted universe multiverse
    deb http://mirrors.aliyun.com/ubuntu/ bionic-security main restricted
    deb http://mirrors.aliyun.com/ubuntu/ bionic-security universe
    deb [arch=amd64] https://mirrors.aliyun.com/docker-ce/linux/ubuntu bionic stable
    ログイン後にコピー
    分别输入以下命令,更新源
    sudo apt update
    sudo apt upgrade
    ログイン後にコピー

    ステップ 2: 関連パッケージをインストールします

    1. python3

    # 安装python3
    sudo apt install python3
    # 查看python安装路径:
    which python
    # 查看python版本:建议使用3.6之后的版本,因为其他的笔者没试过,笔者用的是3.6.9版本
    python
    ログイン後にコピー

    2. 以下に示すように openssh-server と net-tools

    # 安装 openssh-server
    sudo apt install openssh-server
    #开启:
    sudo service ssh start
     
    # 安装net-tools  
    sudo apt install net-tools
    # 查看虚拟机ip:
    ifconfig
    ログイン後にコピー

    をインストールします示されているように、これは仮想マシンです。 IP

    nginx + uwsgi を使用して独自の Django プロジェクトをデプロイする方法

    django の実行環境をインストールします。

    #安装django运行环境:
    sudo apt install virtualenv
    # 创建环境
    virtualenv --python=/usr/bin/python3 myblog
    # 进入环境:
    cd myblog
    # 激活环境:
    source bin/activate
    ログイン後にコピー

    django をインストールします。pip3 install Django

    プロジェクトの作成:django-admin.py startproject blog

    プロジェクトをアクティブ化して作成すると、基本的には以下の図のようになります

    nginx + uwsgi を使用して独自の Django プロジェクトをデプロイする方法#

    # 进入到blog中安装 uwsgi:
    pip3 install uwsgi
    ログイン後にコピー

    ステップ 3: テスト ファイルを作成してテストを実行します

    1. テスト ファイルを作成します

    インストール後、テストするためのテスト ファイルを作成します。実行されるプロジェクトは実際のプロジェクトと同じです。ここでは nano の編集と書き込み方法を使用します。vim を使用することもできます。方法は限定されません。作成と書き込みができる場合は、次のコマンドを実行できます:

    sudo nano test.py

    必須 書き込まれたファイルの内容:

    def application(env,start_response):
            start_response('200 ok',[('Content-Type','text/html')])
            return [b"Hello World"]
    ログイン後にコピー

    2. テスト実行

    テスト コマンド:

    uwsgi --http :8000 --wsgi-file test.py

    Enter キーを押した後、ブラウザに IP とポート番号を入力します。私の場合は 192.168.217.133:8000 です。ブラウザで開いてみると以下のようなエラーが出ました。

    nginx + uwsgi を使用して独自の Django プロジェクトをデプロイする方法

    このエラーの場合は、プロジェクト ファイルの settings.py ファイルを開いて、ALLOWED_HOSTS に独自の仮想マシンのアドレスを追加するだけで問題ありません。をテストして実行すると、正常であることがわかり、Web ページに hello world が出力されます。これは、uwsgi がテスト ファイルを正常に実行できることを示しています。

    nginx + uwsgi を使用して独自の Django プロジェクトをデプロイする方法

    しかし、test.py ファイルを実行しているのではなく、独自の django プロジェクトを実行しています。ここで、前のコマンドを次のように変更する必要があります: uwsgi - -http :8000 --module blog.wsgi

    ステップ 4: nginx

    を導入する1. nginx

    をインストールして起動する IP アドレスを入力するときにポート番号を入力しないことを避けるために、軽量の nginx を紹介します。ここでは、コマンド ラインを使用して nginx をインストールして開始します。

    インストール:

    sudo apt install nginx

    開始:

    sudo service nginx start

    2. conf 設定ファイルを書き込みます

    コマンドを入力します:

    sudo nano /etc/nginx/sites-available/blog_nginx.conf

    新しい conf ファイルを作成し、次の内容を記述します。それに含まれるすべてのパスを独自のプロジェクトのパスに変更します:

    upstream django {
        # server unix:///home/python/myblog/blog/blog.sock; # 这里的路径改为你自己项目路径
        server 127.0.0.1:8001; # for a web port socket (we'll use this first)
    }
    server {
        listen      8000;
        server_name 192.168.217.133; # 将这里的ip地址改为你自己的虚拟机或者服务器地址
        charset     utf-8;
        client_max_body_size 75M;   # adjust to taste
        location /media  {
            alias /home/python/myblog/blog/media;  # your Django project's media files - amend as required
        }
        location /static {
            alias /home/python/myblog/blog/static; # your Django project's static files - amend as required
        }
        location / {
            uwsgi_pass  django;
            include     /home/python/myblog/blog/uwsgi_params; # the uwsgi_params file you installed
        }
    }
    ログイン後にコピー

    ファイルを作成した後、ソフトを作成する必要がありますリンクでは、次のコマンドを入力する必要があります:

    sudo ln -s /etc/nginx/sites-available/blog_nginx.conf /etc/nginx/sites-enabled

    完了したら、コマンド ll /etc/nginx/sites-enabled/ を使用して、設定が正しいかどうかを確認できます。下の図を参照してください。

    nginx + uwsgi を使用して独自の Django プロジェクトをデプロイする方法##3. uwsgi_params ファイルと静的フォルダーの構成

    1)、uwsgi_params

    ここでは uwsgi_params ファイルを作成する必要があります。作成コマンドは次のとおりです:
    sudo nano uwsgi_params

    そして次の行を追加します。内容をそのまま uwsgi_params ファイルに書き込み、保存して終了します

    uwsgi_param  QUERY_STRING       $query_string;
    uwsgi_param  REQUEST_METHOD     $request_method;
    uwsgi_param  CONTENT_TYPE       $content_type;
    uwsgi_param  CONTENT_LENGTH     $content_length;
    uwsgi_param  REQUEST_URI        $request_uri;
    uwsgi_param  PATH_INFO          $document_uri;
    uwsgi_param  DOCUMENT_ROOT      $document_root;
    uwsgi_param  SERVER_PROTOCOL    $server_protocol;
    uwsgi_param  REQUEST_SCHEME     $scheme;
    uwsgi_param  HTTPS              $https if_not_empty;
    uwsgi_param  REMOTE_ADDR        $remote_addr;
    uwsgi_param  REMOTE_PORT        $remote_port;
    uwsgi_param  SERVER_PORT        $server_port;
    uwsgi_param  SERVER_NAME        $server_name;
    ログイン後にコピー

    ファイルを保存した後、nginx

    2) を再起動し、静的フォルダーを作成します

    Open django プロジェクトの settings.py ファイルに、以下に示すように静的ファイルのパスを追加します。

    nginx + uwsgi を使用して独自の Django プロジェクトをデプロイする方法次に、保存して終了し、マップされた静的ファイルをコピーします。コマンドは:

    python manage.pycollectstatic

    メディア フォルダーの作成:

    mkdir media

    最後にコマンドを入力して、静的かどうかを確認します。フォルダーは正しく構成されています:

    nginx + uwsgi を使用して独自の Django プロジェクトをデプロイする方法ステップ 5: uwsgi と nginx の間のパイプライン通信を確立する

    uwsgi で http 通信をソケット通信に変更し、コマンドを次のように変更します。 uwsgi --socket :8001 --wsgi-file test .py

    この時点ではブロックを入力し、ブラウザに IP アドレス 192.168.217.133:8000 を入力すると、開くことができ、hello と表示されることがわかります。世界は成功しました。これは、uesgi と nginx 間の通信が正常であることを意味します。

    nginx 設定ファイルを入力します: sudo nano /etc/nginx/sites-available/blog_nginx.conf

    次の 2 行目をコメントします。ファイル内の 2 行 オフ、最初の行を開きます。ただし、パスは正しい必要があります。代わりにパイプ通信を使用してください。

    server unix:///home/python/myblog/blog.sock; # for a file socket

    # server 127.0.0.1:8001; # for a web port socket (we'll use this first)

    保存退出,重启nginx:sudo service nginx restart

    将uwsgi参数套节字改为blog.sock

    uwsgi --socket blog.sock --wsgi-file test.py

    回到浏览器输入:192.168.217.133:8000得到502:如图

    nginx + uwsgi を使用して独自の Django プロジェクトをデプロイする方法

    我们查看一下错误日志,发现是因为权限问题,解决办法,在命令行后面加入--chmod=666

    uwsgi --socket blog.sock --wsgi-file test.py --chmod=666

    运行之后发现没有问题,并且正常显示Hello World界面。

    现在我们运行django项目,命令为:uwsgi --socket blog.sock --module blog.wsgi --chmod=666

    刷新192.168.217.133:8000得到django的基础页面。

    目前可以说明nginx和uwsgi管道通信正常。

    第六步:将项目改为后台运行

    创建一个uwsgi的配置文件:sudo nano blog_uwsgi.ini

    写入一下内容,将其中的路径改为自己的项目路径

    # mysite_uwsgi.ini file
    [uwsgi]
    # Django-related settings
    # the base directory (full path)
    chdir = /home/python/myblog/blog
    # Django's wsgi file
    module = blog.wsgi
    # the virtualenv (full path)
    home = /home/python/myblog
    # process-related settings
    # master
    master = true
    # maximum number of worker processes
    processes = 10
    # the socket (use the full path to be safe
    socket = /home/python/myblog/blog/mysite.sock
    # ... with appropriate permissions - may be needed
    chmod-socket = 664
    # clear environment on exit
    vacuum = true
    # daemonize uwsgi and write messages into given log
    daemonize = /home/python/myblog/blog/uwsgi.log
    ログイン後にコピー

    保存退出并且启动配置文件,命令为:uwsgi --ini blog_uwsgi.ini

    我们可以查看一下后台进程,是否正常启动,输入:ps aux

    nginx + uwsgi を使用して独自の Django プロジェクトをデプロイする方法

    最后回到nginx配置文件中,将监听端口改为80,重启nginx即可。在浏览器中输192.168.217.133得到django页面结果,表示项目运行正常。

    以上がnginx + uwsgi を使用して独自の Django プロジェクトをデプロイする方法の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。

    関連ラベル:
    ソース:yisu.com
    このウェブサイトの声明
    この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。
    人気のチュートリアル
    詳細>
    最新のダウンロード
    詳細>
    ウェブエフェクト
    公式サイト
    サイト素材
    フロントエンドテンプレート