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

    ステップ 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 サイトの他の関連記事を参照してください。

    声明
    この記事は亿速云で複製されています。侵害がある場合は、admin@php.cn までご連絡ください。
    NginxとApache:重要な違​​いを理解するNginxとApache:重要な違​​いを理解するApr 26, 2025 am 12:01 AM

    NginxとApacheにはそれぞれ独自の利点と欠点があり、選択は特定のニーズに基づいている必要があります。 1.Nginxは、非同期の非ブロッキングアーキテクチャのため、高い並行性シナリオに適しています。 2。Apacheは、モジュラー設計のため、複雑な構成を必要とする低変動シナリオに適しています。

    Nginxユニット:主要な機能と機能Nginxユニット:主要な機能と機能Apr 25, 2025 am 12:17 AM

    Nginxunitは、複数のプログラミング言語をサポートし、動的構成、ゼロダウンタイム更新、組み込みのロードバランシングなどの機能を提供するオープンソースアプリケーションサーバーです。 1。動的構成:再起動せずに構成を変更できます。 2。多言語サポート:Python、Go、Java、PHPなどと互換性があります。 4。ビルトインロードバランシング:リクエストは、複数のアプリケーションインスタンスに配布できます。

    Nginxユニットvs他のアプリケーションサーバーNginxユニットvs他のアプリケーションサーバーApr 24, 2025 am 12:14 AM

    nginxunitは、多言語プロジェクトや動的な構成要件に適した、apachetomcat、gunicorn、node.jsビルトインHTTPサーバーよりも優れています。 1)複数のプログラミング言語をサポートします。2)動的な構成リロード、3)高いスケーラビリティと信頼性を必要とするプロジェクトに適した組み込みの負荷分散機能を提供します。

    Nginxユニット:アーキテクチャとその仕組みNginxユニット:アーキテクチャとその仕組みApr 23, 2025 am 12:18 AM

    Nginxunitは、モジュラーアーキテクチャと動的な再構成機能により、アプリケーションのパフォーマンスと管理性を向上させます。 1)モジュラー設計には、マスタープロセス、ルーター、アプリケーションプロセスが含まれ、効率的な管理と拡張をサポートします。 2)動的再構成により、CI/CD環境に適した、実行時に構成をシームレスに更新できます。 3)多言語サポートは、言語ランタイムの動的なロードを通じて実装され、開発の柔軟性が向上します。 4)イベント駆動型モデルと非同期I/Oによって高性能が達成され、高い並行性の下でも効率的なままです。 5)申請プロセスを分離し、アプリケーション間の相互の影響を減らすことにより、セキュリティが改善されます。

    Nginxユニットの使用:アプリケーションの展開と管理Nginxユニットの使用:アプリケーションの展開と管理Apr 22, 2025 am 12:06 AM

    nginxunitを使用して、アプリケーションを複数の言語で展開および管理できます。 1)nginxunitをインストールします。 2)PythonやPHPなどのさまざまなタイプのアプリケーションを実行するように構成します。 3)アプリケーション管理に動的構成関数を使用します。これらの手順を通じて、アプリケーションを効率的に展開および管理し、プロジェクトの効率を向上させることができます。

    Nginx vs. Apache:Webサーバーの比較分析Nginx vs. Apache:Webサーバーの比較分析Apr 21, 2025 am 12:08 AM

    NGINXは、高い並行接続の処理に適していますが、Apacheは複雑な構成とモジュール拡張が必要な​​シナリオにより適しています。 1.Nginxは、高性能と低リソース消費で知られており、高い並行性に適しています。 2. Apacheは、その安定性とリッチモジュール拡張機能で知られています。これは、複雑な構成ニーズに適しています。

    Nginxユニットの利点:柔軟性とパフォーマンスNginxユニットの利点:柔軟性とパフォーマンスApr 20, 2025 am 12:07 AM

    Nginxunitは、動的な構成と高性能アーキテクチャにより、アプリケーションの柔軟性とパフォーマンスを向上させます。 1.動的構成により、サーバーを再起動せずにアプリケーション構成を調整できます。 2.高性能は、イベント駆動型および非ブロッキングアーキテクチャおよびマルチプロセスモデルに反映され、同時接続を効率的に処理し、マルチコアCPUを利用できます。

    Nginx vs. Apache:パフォーマンス、スケーラビリティ、効率Nginx vs. Apache:パフォーマンス、スケーラビリティ、効率Apr 19, 2025 am 12:05 AM

    NginxとApacheはどちらも強力なWebサーバーであり、それぞれがパフォーマンス、スケーラビリティ、効率の点で独自の利点と短所を備えています。 1)nginxは、静的なコンテンツを処理し、逆プロキシを逆にするときにうまく機能します。 2)Apacheは、動的コンテンツを処理するときにパフォーマンスが向上し、リッチモジュールサポートが必要なプロジェクトに適しています。サーバーの選択は、プロジェクトの要件とシナリオに基づいて決定する必要があります。

    See all articles

    ホットAIツール

    Undresser.AI Undress

    Undresser.AI Undress

    リアルなヌード写真を作成する AI 搭載アプリ

    AI Clothes Remover

    AI Clothes Remover

    写真から衣服を削除するオンライン AI ツール。

    Undress AI Tool

    Undress AI Tool

    脱衣画像を無料で

    Clothoff.io

    Clothoff.io

    AI衣類リムーバー

    Video Face Swap

    Video Face Swap

    完全無料の AI 顔交換ツールを使用して、あらゆるビデオの顔を簡単に交換できます。

    ホットツール

    VSCode Windows 64 ビットのダウンロード

    VSCode Windows 64 ビットのダウンロード

    Microsoft によって発売された無料で強力な IDE エディター

    MinGW - Minimalist GNU for Windows

    MinGW - Minimalist GNU for Windows

    このプロジェクトは osdn.net/projects/mingw に移行中です。引き続きそこでフォローしていただけます。 MinGW: GNU Compiler Collection (GCC) のネイティブ Windows ポートであり、ネイティブ Windows アプリケーションを構築するための自由に配布可能なインポート ライブラリとヘッダー ファイルであり、C99 機能をサポートする MSVC ランタイムの拡張機能が含まれています。すべての MinGW ソフトウェアは 64 ビット Windows プラットフォームで実行できます。

    EditPlus 中国語クラック版

    EditPlus 中国語クラック版

    サイズが小さく、構文の強調表示、コード プロンプト機能はサポートされていません

    SAP NetWeaver Server Adapter for Eclipse

    SAP NetWeaver Server Adapter for Eclipse

    Eclipse を SAP NetWeaver アプリケーション サーバーと統合します。

    Dreamweaver Mac版

    Dreamweaver Mac版

    ビジュアル Web 開発ツール