はじめに

Windows環境でPythonのWebアプリケーションを公開したいと考えていませんか?このガイドでは、IIS(Internet Information Services)上でPythonを動作させるための手順を、初心者向けにわかりやすく解説しています。IISのセットアップからPython環境の構築、FastCGIの設定、そして実際のアプリケーションの配置まで、ステップバイステップで説明していますので、ぜひご覧ください!
IISとは?
IIS(Internet Information Services) は、Microsoftが開発したWindows向けのWebサーバーです。主にASP.NETやPHPのホスティング に利用されますが、Pythonアプリケーションも動作 させることができます。
企業のシステムでは、Windows Serverを利用することが多いため、IISでPythonアプリを動かせると、Windows環境でのWebアプリ開発の幅が広がります。
IISでPythonを実行するメリット
IISでPythonを動作させるメリットは以下のようなものがあります。
Windows環境との親和性
企業のシステムでは、Active Directory(AD)認証 や Windowsのセキュリティポリシー に統合する必要があります。IISを使えば、Windows Serverとの統合がスムーズ です。
負荷分散やセキュリティ機能が充実
IISには、ロードバランサー、アクセス制御、SSL/TLS設定 などの機能が標準で備わっています。Pythonアプリ単体ではこれらの機能を持たないため、IISと組み合わせることで、より安定した運用が可能になります。
FastCGIによる高速処理
IISでは FastCGI という仕組みを使ってPythonを動作させることができます。FastCGIを利用すると、アプリの起動時間を短縮し、リクエスト処理を高速化 できます。
このように、IISはWindows環境においてPythonアプリの運用に適したWebサーバー です。
IISのセットアップ

IISを使用するには、まずWindows上でIISを有効化し、Pythonアプリを動作させるためのFastCGI を設定する必要があります。ここでは、IISの基本的なセットアップ方法を説明します。
IISの有効化
WindowsにはIISが標準で搭載されていますが、デフォルトでは無効化 されています。そのため、以下の手順でIISを有効にしましょう。
Windowsの機能からIISを有効にする
- 「Windowsの機能の有効化または無効化」 を開く
- 「スタートメニュー」を開き、
Windowsの機能と入力すると表示されます。
- 「スタートメニュー」を開き、
- 「Internet Information Services(IIS)」 にチェックを入れる
- 以下のオプションも有効化 する
- 「CGI」(FastCGIを使用するために必要)
- 「IIS管理コンソール」(IISを管理するために便利)
- 「OK」ボタンを押して適用し、PCを再起動
インストールの確認
IISが正しくインストールされたか確認するには、次の手順を実行してください。
- 「Windowsキー + R」 を押して、
inetmgrと入力し、Enterを押す - IISマネージャー(IIS管理コンソール)が開けば、正しくインストールされています
- ブラウザを開き、
http://localhost/にアクセス- IISの初期画面が表示されれば成功です
FastCGIの有効化
IISでPythonを動作させるには、FastCGI を有効にする必要があります。
- IISマネージャーを開く(
inetmgrを実行) - 左側の「サイト一覧」から 「Default Web Site」 を選択
- 「機能ビュー」から 「ハンドラーマッピング」 を開く
- 右側の「機能の管理」から 「モジュールマッピングの追加」 をクリック
- 以下の設定を入力
- リクエストパス:
*.py - モジュール:
FastCgiModule - 実行可能ファイル:
C:\PythonXX\python.exe|C:\PythonXX\Lib\site-packages\wfastcgi.py(Pythonのパスに合わせて変更) - 名前:
Python FastCGI
- リクエストパス:
- OKを押して適用し、IISを再起動
Python環境の準備
IISでPythonを動作させるためには、Pythonのインストールと、wfastcgi(FastCGIを利用するためのライブラリ) の設定が必要です。ここでは、Python環境の準備手順を説明します。
Pythonのインストール
まず、IISでPythonを使用するために、WindowsにPythonをインストールします。
Pythonのダウンロードとインストール
- Python公式サイト から 最新のPython をダウンロード
- インストーラーを実行し、以下の設定を確認
- 「Add Python to PATH」 にチェックを入れる(重要)
- 「Install Now」をクリックしてインストール
- インストールが完了したら、コマンドプロンプトを開いて確認
python --version- 正しくインストールされていれば、
Python 3.x.xのバージョンが表示されます
仮想環境の作成(任意)
仮想環境(venv)を使うと、他のプロジェクトと依存関係を分離できます。
仮想環境を作成する場合、以下のコマンドを実行してください。
python -m venv myenvその後、仮想環境を有効化します。
- Windows(コマンドプロンプト)
myenv\Scripts\activate- PowerShell
myenv\Scripts\Activate.ps1仮想環境が有効になると、コマンドラインに (myenv) という表示が追加されます。
wfastcgiのインストール
IISでPythonアプリを動作させるために、wfastcgi をインストールし、有効化する必要があります。
wfastcgiとは?
wfastcgi は、IISのFastCGIとPythonのWSGI(Web Server Gateway Interface)を連携させるためのライブラリです。これにより、IIS上でFlaskやDjangoなどのPython Webフレームワークを実行できるようになります。
wfastcgiのインストール手順
以下のコマンドを実行して、wfastcgi をインストールします。
pip install wfastcgiインストール後、以下のコマンドでIISにwfastcgiを登録します。
python -m wfastcgi-enableこのコマンドを実行すると、Windowsのレジストリにwfastcgiの設定が追加されます。
wfastcgiの有効化を確認
C:\PythonXX\Lib\site-packages\wfastcgi.py(Pythonのインストールパス) にファイルがあるか確認してください。
また、以下のコマンドでwfastcgiが正しく有効化されているかチェックできます。
python -c "import wfastcgi; print('wfastcgi is installed and working!')"IISでPythonアプリを動作させる方法

IISでPythonアプリを動作させるには、WSGI(Web Server Gateway Interface) に対応したアプリを作成する必要があります。
ここでは、基本的なWSGIアプリの作成方法 と Flaskを使ったWebアプリの例 を紹介します。
シンプルなWSGIアプリの作成
まず、IISで動作する最も基本的なPythonアプリを作成します。
app.py(WSGIアプリ)を作成
C:\inetpub\wwwroot\python_app\app.py というファイルを作成し、以下のコードを記述します。
def application(environ, start_response):
status = '200 OK'
headers = [('Content-type', 'text/html')]
start_response(status, headers)
return [b"Hello, IIS! This is a Python WSGI application."]このコードは、IISからのリクエストを受け取り、"Hello, IIS!" というレスポンスを返すシンプルなWSGIアプリです。
Flaskを使ったWebアプリの作成
次に、Flask を使ってIISで動作するPythonアプリを作成します。
Flaskのインストール
まず、PythonにFlaskをインストールします。
pip install flaskapp.py(Flaskアプリ)を作成
次に、以下のようなFlaskアプリを作成します。
from flask import Flask
app = Flask(__name__)
@app.route('/')
def home():
return "Hello, IIS with Flask!"
if __name__ == "__main__":
app.run()このコードを C:\inetpub\wwwroot\flask_app\app.py に保存します。
Flaskアプリの動作確認
ローカルで動作を確認するために、以下のコマンドを実行します。
python app.pyブラウザで http://127.0.0.1:5000/ にアクセスし、Hello, IIS with Flask! が表示されれば成功です!
IISで動作させる準備
IIS上でPythonアプリを動作させるには、以下のディレクトリ構成にすると管理しやすくなります。
C:\inetpub\wwwroot\
├── python_app\ # シンプルなWSGIアプリ
│ ├── app.py
│ ├── web.config
│ └── ...
├── flask_app\ # Flaskアプリ
│ ├── app.py
│ ├── web.config
│ └── ...web.config の設定方法については、次の章で詳しく解説します。
IISの設定
IISでPythonアプリを動作させるためには、適切な設定が必要です。ここでは、ハンドラーマッピングの設定 と FastCGIの設定 について詳しく解説します。
ハンドラーマッピングの設定
IISでは、リクエストされたファイルの拡張子ごとに処理を振り分ける「ハンドラーマッピング」を設定する必要があります。Pythonスクリプト(*.py)をFastCGIで処理できるようにするため、以下の手順で設定を行います。
ハンドラーマッピングを追加する
- IISマネージャーを開く(
inetmgrを実行) - 「Default Web Site」または対象のサイトを選択
- 「機能ビュー」から「ハンドラーマッピング」を開く
- 「モジュールマッピングの追加」をクリック
- 以下の情報を入力
- リクエストパス:
*.py - モジュール:
FastCgiModule - 実行可能ファイル:
C:\PythonXX\python.exe|C:\PythonXX\Lib\site-packages\wfastcgi.pyC:\PythonXX\はPythonのインストールパスに置き換える
- 名前:
Python FastCGI
- リクエストパス:
- 「OK」ボタンを押す
- 「この変更を適用しますか?」と表示されたら「はい」をクリック
- IISを再起動する(
iisresetコマンドを実行)
FastCGIの設定
ハンドラーマッピングを追加したら、次にFastCGIの設定を行います。
FastCGI設定ファイルの作成
FastCGIの設定を変更するには、Pythonの設定ファイルを作成する必要があります。C:\PythonXX\Lib\site-packages\wfastcgi.py のあるディレクトリに wfastcgi.ini というファイルを作成し、以下の内容を記述します。
[uwsgi]
callable = app
module = app環境変数の設定
- IISマネージャーを開く
- 「Default Web Site」または対象のサイトを選択
- 「FastCGI設定」を開く
- 「Python FastCGI」のエントリをダブルクリック
- 環境変数に以下の値を追加
WSGI_HANDLER=app.applicationPYTHONPATH=C:\inetpub\wwwroot\python_app(Pythonアプリのフォルダパス)
- 「適用」をクリックし、IISを再起動
web.config の作成
IISでPythonアプリを適切に処理するために、web.config を作成する必要があります。
アプリのルートフォルダ(例:C:\inetpub\wwwroot\python_app)に web.config を作成し、以下の内容を記述します。
<?xml version="1.0" encoding="UTF-8"?>
<configuration>
<system.webServer>
<handlers>
<add name="Python FastCGI"
path="*.py"
verb="*"
modules="FastCgiModule"
scriptProcessor="C:\PythonXX\python.exe|C:\PythonXX\Lib\site-packages\wfastcgi.py"
resourceType="Unspecified" />
</handlers>
</system.webServer>
</configuration>設定の適用とIISの再起動
すべての設定を適用した後、IISを再起動します。
iisresetこれで、IIS上でPythonアプリが動作する準備が整いました。
動作確認とトラブルシューティング

IISの設定が完了したら、Pythonアプリが正しく動作するか確認しましょう。
また、よくあるエラーとその解決策についても解説します。
動作確認
ブラウザでの確認
- ブラウザを開く
- 以下のURLにアクセス
- WSGIアプリの場合:
http://localhost/python_app/app.py - Flaskアプリの場合:
http://localhost/flask_app/
- WSGIアプリの場合:
- 画面に「Hello, IIS!」が表示されれば成功
IISのログを確認
アプリが正しく動作しない場合は、IISのログを確認しましょう。
ログは以下のディレクトリに保存されています。
C:\inetpub\logs\LogFiles\最新のログファイルを開き、エラーメッセージを確認します。
トラブルシューティング
アプリが動作しない場合
「500 Internal Server Error」が発生する
原因
wfastcgiの設定が正しくない- Pythonスクリプトにエラーがある
解決策
wfastcgiがインストールされているか確認
pip show wfastcgi→ Name: wfastcgi が表示されなければ、pip install wfastcgi を実行
wfastcgiが有効になっているか確認
python -m wfastcgi-enableweb.configの設定を再確認(FastCGIのパスが正しいか確認)
「403 Forbidden」エラーが発生する
原因
web.configの設定ミス- IISの権限設定に問題がある
解決策
web.configに正しいハンドラーが記述されているか確認C:\inetpub\wwwroot\python_app\に IIS_IUSRS ユーザーの読み取り権限を付与
Pythonのパスが認識されない
原因
- Pythonが正しくインストールされていない
- システム環境変数
PATHにPythonのパスが登録されていない
解決策
- Pythonのインストールパスを確認
where python→ C:\PythonXX\python.exe のようなパスが表示されなければ、再インストール
- システム環境変数を確認・修正
C:\PythonXX\をPATHに追加
まとめ
本記事では、IISでPythonアプリを動作させる方法について解説しました。
ここで、設定手順を振り返り、IISでPythonを運用する際のポイントを整理します。
設定手順の振り返り
- IISのセットアップ
- Windowsの機能からIISを有効化
- 「CGI」機能を追加し、FastCGIを利用可能にする
- Python環境の準備
- Pythonをインストールし、
pip install wfastcgiを実行 python -m wfastcgi-enableでFastCGIを有効化
- Pythonをインストールし、
- IISでPythonアプリを動作させる
- シンプルなWSGIアプリやFlaskアプリを作成
C:\inetpub\wwwroot\にアプリを配置
- IISの設定
- ハンドラーマッピングを追加し、
*.pyをFastCGIで処理するよう設定 web.configを作成し、FastCGIが正しく動作するよう設定
- ハンドラーマッピングを追加し、
- 動作確認とトラブルシューティング
http://localhost/にアクセスし、正しく動作するか確認- IISのログやエラーメッセージをチェックし、問題があれば修正
IISでPythonを運用する際のポイント
IISでPythonを安定して運用するためには、以下のポイントに注意してください。
- 適切なセキュリティ設定を行う
C:\inetpub\wwwroot\に不必要な書き込み権限を付与しないweb.configで不要なリクエストをブロックする
- パフォーマンス最適化
- FastCGIの設定でプロセス数を調整し、リソースを有効活用する
- 必要に応じて、IISのキャッシュ機能を活用
- ログと監視を活用
- IISのログを定期的に確認し、エラーや異常を検知
- Pythonアプリ内でもエラーログを記録し、トラブル発生時に対応しやすくする
おわりに
IISを使えば、Windows環境でもPythonアプリを安定して運用できます。
特に企業環境では、Windows Server上でのアプリ運用が求められることが多いため、IISでPythonを動作させる方法を理解しておくと役立ちます。
本記事を参考に、IISでPythonアプリを運用してみてください。

ここまで読んでいただきありがとうございます!
UdemyのPythonコースにはオンラインで学習ができる動画コンテンツがたくさんあります。
当ブログのような文章メインの説明では足りない箇所を補えると思うので、もっと詳しく勉強したいという方はぜひチェックしてみてください!


コメント