LoginSignup
2
4

More than 1 year has passed since last update.

【備忘録】Django IISデプロイ

Last updated at Posted at 2022-03-25

経緯

社内本番環境へデプロイした際に、半日ほどはまったので、
対応した内容を個人的備忘録として残しておく。
他の環境に影響を与えないよう、仮想環境を使用。

参考にさせて頂いたサイト

  1. DjangoのチュートリアルをIISにデプロイする①
    https://qiita.com/reinexxx/items/ad60261815a5555e914e

  2. Python(Django) をWindows+IISで動かす
    https://qiita.com/miltood/items/14491e1da28bd953ee4c

IISのインストール

なにはともあれインストールします。
インターネットインフォメーションサービスを選択
image.png

CGIを選択
image.png

開発したdjangoフォルダを展開

ここでは下記に展開したとする。
C:\django_apps

IISのサイトに追加

Webサイトに追加を選択
image.png

サイト名は「django_apps」とした。物理パスはmanage.pyがある階層を設定する。
image.png

MySQLユーザ追加 ※MySQLを使用する場合のみ

作成権限のあるユーザでMySQLにログイン。

MySQL
CREATE USER user_name IDENTIFIED BY 'PW'

スキーマを追加。MySQL workbench(GUIで操作ができるツール)より操作するのが簡単。
作成したユーザに対して、スキーマに対するALTER権限など付与する。これもworkbenchからがすごい楽。

仮想環境(virtualenv)構築

cmd
pip install virtualenv
virtualenv myenv
myvenv\Script\activate

ここまでで仮想環境が起動。
requirements.txtをインストール(django含)

cmd
cd C:\django_apps
pip -r install requirements.txt

必要ライブラリがインストールされる。IISで必要なwfastcgiをインストール。

cmd
pip install wfastcgi

IIS環境構築

管理者権限でコマンドプロンプトを起動する。
仮想環境に起動し、IISにwfastcgiを設定する。

cmd
C:\myvenv\Script\activate
%windir%\system32\inetsrv\appcmd unlock config -section:system.webServer/handlers
wfastcgi-enable

web.configをmanage.pyがあるフォルダに設置する。
中身は下記。

web.config
<configuration>
  <appSettings>
    <add key="WSGI_HANDLER" value="django.core.wsgi.get_wsgi_application()" />
    <add key="PYTHONPATH" value="C:\django_apps" />
    <add key="DJANGO_SETTINGS_MODULE" value="mysite.settings" />
  </appSettings>
  <system.webServer>
    <handlers>
        <add name="Python FastCGI" path="*" verb="*" modules="FastCgiModule" scriptProcessor="c:\myenv\scripts\python.exe|c:\myenv\scripts\lib\site-packages\wfastcgi.py" resourceType="Unspecified" />
    </handlers>
  </system.webServer>
</configuration>

一旦起動してみる

IISが開始されていることを確認し、ブラウザからアクセスしてみる。
閲覧はできたが、CSSが効いていない。

collectstaticコマンド実行

settingsファイルのDEBUG=Falseにすると、DEBUGの際に使用していたstaticフォルダにアクセスできなくなる。
それを綺麗に1つのフォルダに集めてくれるコマンドを実行する。

仮想環境に入り、下記コマンドを実行する。

cmd
python manage.py collectstatic

この状態でもう一度アクセスしてみるが、CSS類が軒並み404エラーになる。めちゃくちゃはまったが、解決方法は下記。

web.configをもう一つ設置する

IIS全体のweb.configとは別に配信の例外ルールを記載した静的ファイル用のweb.configを作成し、
collectstaticで作成されたstaticフォルダ直下に設置する。中身は下記。
なので、全体で2つweb.configを用意する必要がある。

web.config
<?xml version="1.0" encoding="UTF-8"?>
<configuration>
  <system.webServer>
    <handlers>
      <remove name="Python FastCGI" />
    </handlers>
  </system.webServer>
</configuration>

これで、無事CSSが読み込まれるようになった。

参考(他要因でつまづいた部分)

一旦起動してみた際に、エラー発生(※詳細を失念、別途記載します)。
本番環境へファイルをデプロイした際に、下記ファイルをsetttingのフォルダとviewのフォルダから削除していたのが原因。
設置しなおして、完了。

__init__.py

結果

無事デプロイができました。

2
4
1

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
2
4