「PythonとWindows…?」という疑問が生じましたが、仕事での要件なので仕方ありません。
調査しながら進めましたが、思っていた以上に情報が少なくて苦労したのでメモ。
Pythonのインストール
Djangoアプリケーションを動かすためにはPythonのインストールが必要です。
Pythonのインストールについては以下を参照ください。
VisualStudio2022のインストール
本記事ではDjangoプロジェクト作成および一部ファイルのテンプレート利用のためにVisualStudioを使用しました。
VisualStudio2022のインストール方法については以下を参照ください。
IISの有効化とHttpPlatformHandlerのセットアップ
デプロイ先であるIISはWindowsの機能ですが、デフォルトでは有効化されていません。
IIS有効化の方法については以下を参照ください。
また、IIS上でアプリケーションを動かすためのインターフェースが必要になります。
よく使われていたのがFastCGIでしたが、現在推奨されているのはHttpPlatformHandler。
FastCGIはWindowsの機能で有効化できましたが、HttpPlatformHandlerはインストーラーが必要になります。
詳しいセットアップについては以下を参照ください。
Djangoプロジェクトの作成
Python開発だとVisualStudioCodeやPyCharmが一般的かと思います。
ですが今回はIISが絡んでいることもあって「VisualStudioの方が良いんじゃね?」と思い、VisualStudioでプロジェクト作成から実施しました。
VisualStudioでのDjangoプロジェクト作成(および実行までの)方法については以下を参照ください。
IISでDjangoを動かす
前置きが長くなりました。本題です。
IISでDjangoを動かす手順はざっくり以下の通りです。
順番に詳しく説明していきます。
web.configの作成
HttpPlatformHandler用の設定ファイルになります。
VisualStudioを使用する場合、テンプレートが利用可能です。
プロジェクトを右クリックし、「追加」から「新しい項目」をクリックします。

ポップアップしたダイアログから「すべてのテンプレートの表示」をクリックします。

「Azure web.config(HttpPlatformHandler)」を選んで「追加」をクリックします。

作成されたweb.configの中身は以下の通り。
<configuration>
<system.webServer>
<handlers>
<add name="PythonHandler" path="*" verb="*" modules="httpPlatformHandler" resourceType="Unspecified"/>
</handlers>
<httpPlatform processPath="D:\home\Python35\python.exe"
arguments="D:\home\site\wwwroot\runserver.py --port %HTTP_PLATFORM_PORT%"
stdoutLogEnabled="true"
stdoutLogFile="D:\home\LogFiles\python.log"
startupTimeLimit="60"
processesPerApplication="16">
<environmentVariables>
<environmentVariable name="PYTHONPATH" value="" />
</environmentVariables>
</httpPlatform>
</system.webServer>
</configuration>
これを以下の通り書き換えます。
<configuration>
<system.webServer>
<handlers>
<add name="PythonHandler" path="*" verb="*" modules="httpPlatformHandler" resourceType="Unspecified"/>
</handlers>
<httpPlatform processPath="(Python実行ファイルのパス)"
arguments=".\manage.py runserver %HTTP_PLATFORM_PORT%"
stdoutLogEnabled="true"
stdoutLogFile=".\logs\python.log"
startupTimeLimit="60"
processesPerApplication="16">
<environmentVariables>
<environmentVariable name="PYTHONPATH" value="" />
</environmentVariables>
</httpPlatform>
</system.webServer>
</configuration>
(Python実行ファイルのパス)については、先述の記事と同様にセットアップしている場合、「”C:\Users\(ユーザー名)\AppData\Local\Programs\Python\Python310\python.exe”」となります。
Djangoプロジェクトの静的ファイル収集
Djangoアプリケーションを公開するには、静的ファイル群をstaticフォルダにまとめて配置する必要があるらしいです。
一般的にはコマンドでやる手順らしいですが、VisualStudioでは以下の通りできます。

上記を実行すると、プロジェクトルートにstaticフォルダが作成されます。
IISの公開フォルダ作成(デプロイ)
IISの公開フォルダを作成します。
作成場所はどこでも行けると思いますが、今回はIISのフォルダを使います。
「C:\inetpub」配下に「Django」フォルダを作成。
プロジェクトの移動
プロジェクトフォルダから以下のフォルダおよびファイルを、先ほど作成したDjangoフォルダ配下にコピーします。

ログフォルダの作成
Django配下に「logs」フォルダを作成します。

サイトバインド
作成したフォルダをIISで公開するように設定します。
「インターネットインフォメーションサービス(IIS)マネージャー」を開き、左ペインの「サイト」を右クリックし、「Webサイトの追加」をクリックします。(SS取り忘れましたごめんなさい)
以下の通り設定します。

設定が完了するとIISマネージャー上でサイトが追加されたことが確認できます。

IISユーザーへの権限付与
最後に、Djangoアプリケーションを実行する権限を付与していきます。
- IUSR
- IIS_IUSRS
- Python実行ファイル
- Djangoアプリケーションフォルダ
Djangoアプリケーションフォルダを例に手順を説明します。
まず、対象となるフォルダを右クリックし「プロパティ」をクリック、「セキュリティ」タブから「編集」をクリックします。

「追加」をクリックします。

開いたウィンドウで対象ユーザーを入力します。

「IUSR」と入力してEnterを押すと上記の様な表示(下線あり)になります。
同様にIIS_IUSRSも追加し、「OK」をクリックします。
適切なアクセス許可を設定して完了。(Pythonは実行できればOK、IISは書き込みも)
ローカルIISのDjangoアプリケーションを実行
ここまで完了したら「http://localhost:8080/」にアクセスしてみましょう。

ローカルIISにデプロイしたDjangoアプリケーションが開きます。
まとめ
珍しく頑張ったと思う部類でした。
以上です。