まえがき
みなさんこんにちは!
少し前に、サイトを作成するように依頼されました。 「 これが欲しい 」というたくさんの興味深い大規模プロジェクト。 願いの中には、書くためのWebフレームワークを決定する2つの主なものがありました 。これは国際化と管理パネルです。 記事のタイトルからすでに明らかなように、 Djangoはそのようなフレームワークになっています。
開始時、および開発のほぼすべての時点で、 サーバーというものは1つもありませんでした。 それはドメイン名であり、ウェブサイトは活発なペースで開発されていました。デザイナーがプロジェクトに参加しましたが、そのようなサーバーを私たちに割り当てることができませんでした。 すべてのサイトの印象は私のラップトップで行われたため、顧客が夕方にコーヒーを片手に座ったり、リラックスしたり、すでに行ったことを楽しんだりすることができませんでした。 また、私たちの仕事を人々に見せることができなかったため、フィードバックを受け取ることができませんでした。
そして、先日、奇跡が起こったと言うかもしれません-私たちにはサーバーがあります。 そして、その結果としてこの記事があります。
問題
私の喜びは長くはありませんでした。 サイトはDjango上にあり、サーバーはWindows Server 2012上にあります 。 最初の考え:
python manage.py runserver 80
サーバー上のブラウザでサイトを開きます-すべてが機能します。 すごい 。 ホームマシンでサイトを開き、サイトが利用できないことを確認します。 悲しみ 。
次のアイデアは、 IISを使用することです。 しかし、どのように? 「 OK Google 」は、さまざまな言語のたくさんの記事を私に与えてくれました。 また、マイクロソフトのHabrとDjangoの公式Webサイト からの記事も無視しませんでしたが、これらのソリューションはすべて面倒で、シンプルでエレガントなものが必要でした。
何がありますか
- Python 3.5
- Django 1.9.7
- Windows Server 2012 R2
サイト構造(ツリーの一部):
project/ manage.py project/ __init__.py settings.py urls.py wsgi.py
IISにDjangoをデプロイする問題を解決しましょう。
問題解決
Python
すべてが簡単です。wfastcgiをインストールすれば完了です。
pip install wfastcgi
すべてのPythonフレームワークに対してIISを1回構成するには、グローバル環境にインストールすることをお勧めします。
IIS
次に、 IISを構成します 。 Windows Serverでは、このコンポーネントはデフォルトですでにインストールされていますが、完全ではありません。 私たちのサイトの重要なコンポーネントであるCGIを意味します。
Windowsコンポーネント → IIS → インターネットサービス → アプリケーション開発コンポーネント → CGI 。
それをインストールします。 IISマネージャーには、サーバーにFastCGI設定項目があります。
次にそれに入ります。 おそらく、wfastcgiをインストールする前にすでにCGIをインストールしていた場合、すでにその行があります。
それ以外の場合は、[ アプリケーションの追加... ]をクリックして、フィールドに入力します。
- フルパス -C:\ Python \ python.exe
- 引数 -C:\ Python \ Lib \ site-packages \ wfastcgi.py
すべてがOKです 。 主な部分は完了です。 次に、 新しいサイトを作成します 。 そして、サイトでHandler Mappingsを選択します。
ハンドラーマッピング-> モジュール マッピングの 追加
- リクエストパス -*
- モジュール -FastCgiModule
- 実行可能ファイルはC:\ Python \ python.exe | C:\ Python \ Lib \ site-packages \ wfastcgi.py
- 名前 -Python FastCGI
- 制限をリクエスト -クリックしてチェックを外します
次に、 OK 。 IISが構成されます。
Djangoアプリ
プロジェクトをサイトフォルダーにコピーします。 仮想環境を作成します。 同じフォルダーにweb.configファイルを作成します (または、既に作成されている場合は編集用に開きます )。
web.config <?xml version="1.0" encoding="UTF-8"?> <configuration> <appSettings> <add key="WSGI_ALT_VIRTUALENV_HANDLER" value="django.core.wsgi.get_wsgi_application()" /> <add key="WSGI_ALT_VIRTUALENV_ACTIVATE_THIS" value="venv\Scripts\activate_this.py" /> <add key="WSGI_HANDLER" value="ptvs_virtualenv_proxy.get_virtualenv_handler()" /> <add key="PYTHONPATH" value="%APPL_PHYSICAL_PATH%" /> <add key="DJANGO_SETTINGS_MODULE" value="project.settings" /> </appSettings> <system.webServer> <handlers> <add name="Python FastCGI" path="*" verb="*" modules="FastCgiModule" scriptProcessor="C:\Python\python.exe|C:\Python\Lib\site-packages\wfastcgi.py" resourceType="Unspecified" /> </handlers> </system.webServer> </configuration>
また、 ptvs_virtualenv_proxy.pyを作成し、以下のコードを貼り付けます
ここでブラウザを開き、サイトのアドレスを入力すると動作します。
もう少し
プロジェクトで仮想環境を使用する予定がない場合、 ptvs_virtualenv_proxy.pyを追加しないでください。web.configは次のようになります。
web.config <?xml version="1.0" encoding="UTF-8"?> <configuration> <appSettings> <add key="WSGI_HANDLER" value="django.core.wsgi.get_wsgi_application()" /> <add key="PYTHONPATH" value="%APPL_PHYSICAL_PATH%" /> <add key="DJANGO_SETTINGS_MODULE" value="project.settings" /> </appSettings> <system.webServer> <handlers> <add name="Python FastCGI" path="*" verb="*" modules="FastCgiModule" scriptProcessor="C:\Python\python.exe|C:\Python\Lib\site-packages\wfastcgi.py" resourceType="Unspecified" /> </handlers> </system.webServer> </configuration>
また、 IIS で、Djangoだけでなく他のPythonフレームワークにもプロジェクトを展開できます。 主なことは、 web.configの編集を忘れないことです。
あとがき
現在、私たちは作業サイト、開発と改善を手伝ってくれる小さな人々のグループを持っています。 そして、私はあなたと共有したPythonプロジェクトとIISの友情についていくつかの経験を得ました。 それが重宝することを願っています。