12

私は django プロジェクトを構築し、Apache-WSGI コンボを使用して本番環境にデプロイしました。そのために、 以下に示すようにapache2.confを追加しました。

WSGIScriptAlias / /home/ubuntu/MyProject/MyProject/wsgi.py
WSGIPythonPath /home/ubuntu/MyProject

<Directory /home/ubuntu/MyProject/MyProject>
<Files wsgi.py>
Require all granted
</Files>
</Directory>

したがって、これは、私の Web サイトへのすべての要求が最初に Apache に送信されるわけではなく、Apache が WSGI を使用できるようにすることを意味します。したがって、Apache をオフにすると、Web サイトは機能しなくなります。

Django-Channelsをインストールしました。ドキュメントの「デプロイ」セクション ( https://channels.readthedocs.io/en/latest/deploying.html ) によると、次のものがあります。

  1. インストールされたRedis(私のDjango Projectサーバー上)
  2. ワーカー サーバーを実行する
  3. Daphne の実行 (インターフェースサーバー)
  4. 現時点で Apache を停止しましたが、Web サイトが接続を拒否しています。
4

2 に答える 2

15

現在、Apache には ASGI サーバーの実装がありません。つまり、引き続き Apache を使用できますが、Daphneも必要になります。本質的に、Apache はプライマリ Web サーバーからリバース プロキシに変わります。

そうすることには潜在的に何らかの価値があります: Python 開発者は何年もの間、リバース プロキシ モードで nginx を実行してきました。しかし、Daphne は非常に有能な Web サーバーであり、Twisted の Web サーバーの上に構築されているため、Apache は確かに必要ありません。

そのときは、Daphne だけで実行することをお勧めします。Daphne にプライマリ ポートをリッスンさせ、Apache を完全に無効にします。それでも必要な Apache の機能が見つかった場合は、Apache をリバース プロキシとして構成する必要があります。構成に関する推奨記事の1 つは Digital Oceanの記事です。

于 2016-05-08T09:56:16.237 に答える
7

Lukasa が述べたように、私は Apache サーバーを停止しました。これにより、最初は私の django アプリが世界に配信されなくなりました。次に、次のコマンドを実行しました。

sudo daphne MyProject.asgi:channel_layer --port 80 --bind 0.0.0.0 -v2
sudo python manage.py runworker -v2

2 つのコマンドは、サーバーの外部からの http 要求にアプリを配信し始めました。質問の投稿に記載されている以外の構成は必要ありません。

于 2016-05-11T08:54:14.607 に答える