Windowsのインターネット インフォメーション サービス(IIS)でdjangoを常時起動する方法を記載しています。
設定方法
- Windowsメニューで「Windowsの機能の有効化または無効化」を検索して開きます。
- 「インターネット インフォメーション サービス」にチェックを入れ、同フォルダ内の「CGI(World Wide Web サービス > アプリケーション開発機能)」にもチェックを入れてOKをクリックします。「必要な変更が完了しました」と表示されたら「閉じる」をクリックします。
- ブラウザで以下のURLにアクセスし、IISの青い画像が表示されたら正常に有効化されています。
http://localhost/
- WindowsにPythonがインストールされていなければ公式サイトからダウンロードしてインストールします。
- Git bashを管理者として実行し、任意のフォルダに仮想環境を作成し、仮想環境を起動します。
python -m venv 環境名
source 環境名/Scripts/activate
- 仮想環境にdjangoとwfastcgiとその他必要なライブラリをインストールします。
==
でバージョンを指定できます。
pip install django==2.2.*
pip install wfastcgi
- IISにwfastcgiを登録します。この時に出力される
"ファイルパス" can not be used as a FastCGI script processor
の"ファイルパス"
は後で使うのでメモしておきます。
環境名/Scripts/wfastcgi-enable.exe
- 任意のディレクトリにdjangoプロジェクトを作成します。
django-admin startproject プロジェクト名
- Windowsメニューから「インターネット インフォメーション サービス(IIS)マネージャー」を開きます。画面左側の「サイト」一覧に既に存在する「Default Web Site」は停止または削除します。「サイト」右クリックして「Webサイトの追加」を選択します。適当な「サイト名」を入力し、物理パスはdjangoプロジェクトのフォルダを選択します(
manage.py
のあるフォルダ)。
- 作成したWebサイトの「構成エディター」をダブルクリックし、セクション「system.webServer/handlers」を開き、画面右側の「セクションのロックを解除」をクリックします。
- 作成したWebサイトの「認証」をダブルクリックし、「匿名認証」を右クリックして編集を選択します。匿名ユーザーIDを「アプリケーション プール ID」に変更してOKをクリックします。
- 作成したWebサイトの「ハンドラーマッピング」をダブルクリックし、画面右側の「スクリプトマップの追加」をクリックします。「要求パス」に
*.py
を入力し、「実行可能ファイル」は仮想環境のScriptsフォルダ内のpython.exeを選択します。選択後はパスの前後に"
を付け、末尾に%s %s
を付け加えます。適当な「名前」を入力し、OKをクリックします。
例:
"C:\Users\user\env\Scripts\python.exe" %s %s
- 拡張子が
.py
のファイルはPythonで開かれるように既定のプログラムを変更します。たまにエディタで開くように設定されている場合があります。
- djangoプロジェクトの
manage.py
があるフォルダにweb.config
がなければ作成し、エディタで開いて中身を下記に設定します。WSGI_HANDLER
とDJANGO_SETTINGS_MODULE
にはプロジェクト内のsettings.py
があるフォルダ名を指定します。PYTHONPATH
にはmanage.py
のあるプロジェクトフォルダパスを指定します。はscriptProcessor
にはIISにwfastcgiを登録したときに表示されたファイルパスを代入します。
<configuration>
<appSettings>
<add key="WSGI_HANDLER" value="プロジェクト内のサブフォルダ.wsgi.application" />
<add key="PYTHONPATH" value="C:\Users\django_project" />
<add key="DJANGO_SETTINGS_MODULE" value="プロジェクト内のサブフォルダ.settings" />
</appSettings>
<system.webServer>
<handlers>
<add name="Python FastCGI" path="*" verb="*" modules="FastCgiModule" scriptProcessor="C:\Users\env\Scripts\python.exe|C:\Users\env\lib\site-packages\wfastcgi.py" resourceType="Unspecified" />
</handlers>
</system.webServer>
</configuration>
- 開発環境と異なり、画像などの静的ファイルは別途構成する必要があります。djangoプロジェクトの
settings.py
をエディタで開き、プロジェクトフォルダパスに/static
を付け加えた以下の行を追加します。(バックスラッシュまたは円記号ではなくスラッシュにしないとエラーになります)
STATIC_ROOT = 'C:/Users/django_project/static'
# DEBUGもFalseにしておく
DEBUG = False
Git bashで以下のコマンドを実行し、静的ファイルを上記で指定したフォルダに集積します。
python manage.py collectstatic
集積後はstatic
フォルダ内に新たにweb.config
ファイルを作成し、エディタで開いて中身を下記に設定します。
<configuration>
<system.webServer>
<handlers>
<remove name="Python FastCGI" />
</handlers>
</system.webServer>
</configuration>
- 仮想環境のフォルダとdjangoプロジェクトのフォルダに対してIISがアクセスできるように権限を付与します。エクスプローラーで各フォルダを右クリックし、「プロパティ」を開き、「セキュリティ」タブで「編集」をクリックし、「追加」をクリックします。「選択するオブジェクト名」に
IIS AppPool\サイト名
を入力し、「名前の確認」をクリックし、OKをクリックします。「アクセス許可」はフルコントロールにし、OKをクリックします。
- 「インターネット インフォメーション サービス(IIS)マネージャー」でWebサイトを再起動し、ブラウザで以下のURLにアクセスしてサイトが開けば正常にサイトが稼働しています。
http://localhost/