複数のDjangoアプリケーションをnginxでどのようにデプロイするか
Djangoアプリケーションを複数展開する場合、Nginxを用いた展開を行うには、以下の手順を行います。
- Nginxのインストールと設定:まず、Nginxをインストールし、基本的なサーバの設定を行います。Nginxは次のコマンドでインストールできます:
- sudo apt-get install nginx
- 次に、サーバーの設定を行うには、Nginxの設定ファイル/etc/nginx/nginx.confを編集できます。
- 各Django应用ごとに独立したバーチャル環境を作成し、異なるディレクトリにインストールします。バーチャル環境の作成にはvirtualenvを使用できます:
- virtualenv env1
source env1/bin/activate
pip install django - 各アプリについても同じ手順を繰り返して仮想環境を作成します。
- uWSGIのセットアップ: uWSGIは、Djangoアプリケーションの実行にNginxと共に使用できるWebサーバーゲートウェイインターフェイスです。各Djangoアプリケーションを個別のuWSGIプロセスに関連付け、設定ファイルで実現できます。各DjangoアプリケーションのuWSGIプロセスを設定するために、uWSGI設定ファイルを作成します(例:app1_uwsgi.ini):
- chdir=/path/to/app1
module=myapp.wsgi:application
master=True
processes=4
socket=/path/to/app1.sock
chmod-socket=664
vacuum=True - それぞれのアプリケーションについて上述の手順を繰り返し uWSGI の設定ファイルを作成してください。
- Nginxリバースプロキシの設定:Nginxの設定ファイル/etc/nginx/nginx.confを編集し、以下の設定ブロックを追加してリバースプロキシを設定します:
- サーバー {
ポート 80 でリッスン
サーバー名 example.com場所 /app1/ {
uwsgi を unix:/path/to/app1.sock に渡す
uwsgi パラメータを含める
}場所 /app2/ {
uwsgi を unix:/path/to/app2.sock に渡す
uwsgi パラメータを含める
}
} - 上記の構成では、/app1/ と /app2/ はあなたがそれぞれの Django アプリケーションのために設定する URL パスであり、/path/to/app1.sock、/path/to/app2.sock はそれぞれのアプリケーション用の uWSGI ソケットパスです。
- 設定完了ら、変更を反映させるためにNginxサーバーを再起動します。
- sudo service nginx restart
各 Django アプリケーションでは、ブラウザー経由で各 URL のパスにアクセスすることで、すぐにアクセスできるようになるはずです。