IISでPythonを動作させる方法|Windows環境でのWebアプリ運用ガイド

プログラミング
記事内に広告が含まれています。
スポンサーリンク

はじめに

brian
brian

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を有効にする

  1. 「Windowsの機能の有効化または無効化」 を開く
    • 「スタートメニュー」を開き、Windowsの機能 と入力すると表示されます。
  2. 「Internet Information Services(IIS)」 にチェックを入れる
  3. 以下のオプションも有効化 する
    • 「CGI」(FastCGIを使用するために必要)
    • 「IIS管理コンソール」(IISを管理するために便利)
  4. 「OK」ボタンを押して適用し、PCを再起動

インストールの確認

IISが正しくインストールされたか確認するには、次の手順を実行してください。

  1. 「Windowsキー + R」 を押して、inetmgr と入力し、Enterを押す
  2. IISマネージャー(IIS管理コンソール)が開けば、正しくインストールされています
  3. ブラウザを開き、http://localhost/ にアクセス
    • IISの初期画面が表示されれば成功です

FastCGIの有効化

IISでPythonを動作させるには、FastCGI を有効にする必要があります。

  1. IISマネージャーを開く(inetmgr を実行)
  2. 左側の「サイト一覧」から 「Default Web Site」 を選択
  3. 「機能ビュー」から 「ハンドラーマッピング」 を開く
  4. 右側の「機能の管理」から 「モジュールマッピングの追加」 をクリック
  5. 以下の設定を入力
    • リクエストパス*.py
    • モジュールFastCgiModule
    • 実行可能ファイルC:\PythonXX\python.exe|C:\PythonXX\Lib\site-packages\wfastcgi.py(Pythonのパスに合わせて変更)
    • 名前Python FastCGI
  6. OKを押して適用し、IISを再起動
スポンサーリンク

Python環境の準備

IISでPythonを動作させるためには、Pythonのインストールと、wfastcgi(FastCGIを利用するためのライブラリ) の設定が必要です。ここでは、Python環境の準備手順を説明します。

Pythonのインストール

まず、IISでPythonを使用するために、WindowsにPythonをインストールします。

Pythonのダウンロードとインストール

  1. Python公式サイト から 最新のPython をダウンロード
  2. インストーラーを実行し、以下の設定を確認
    • 「Add Python to PATH」 にチェックを入れる(重要)
    • 「Install Now」をクリックしてインストール
  3. インストールが完了したら、コマンドプロンプトを開いて確認
cmd
python --version
  • 正しくインストールされていれば、Python 3.x.x のバージョンが表示されます

仮想環境の作成(任意)

仮想環境(venv)を使うと、他のプロジェクトと依存関係を分離できます。
仮想環境を作成する場合、以下のコマンドを実行してください。

cmd
python -m venv myenv

その後、仮想環境を有効化します。

  • Windows(コマンドプロンプト)
cmd
myenv\Scripts\activate
  • PowerShell
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 をインストールします。

cmd
pip install wfastcgi

インストール後、以下のコマンドでIISにwfastcgiを登録します。

cmd
python -m wfastcgi-enable

このコマンドを実行すると、Windowsのレジストリにwfastcgiの設定が追加されます。

wfastcgiの有効化を確認

C:\PythonXX\Lib\site-packages\wfastcgi.py(Pythonのインストールパス) にファイルがあるか確認してください。
また、以下のコマンドでwfastcgiが正しく有効化されているかチェックできます。

cmd
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 というファイルを作成し、以下のコードを記述します。

Python
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をインストールします。

cmd
pip install flask

app.py(Flaskアプリ)を作成

次に、以下のようなFlaskアプリを作成します。

Python
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アプリの動作確認

ローカルで動作を確認するために、以下のコマンドを実行します。

cmd
python app.py

ブラウザで http://127.0.0.1:5000/ にアクセスし、Hello, IIS with Flask! が表示されれば成功です!

IISで動作させる準備

IIS上でPythonアプリを動作させるには、以下のディレクトリ構成にすると管理しやすくなります。

Makefile
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で処理できるようにするため、以下の手順で設定を行います。

ハンドラーマッピングを追加する

  1. IISマネージャーを開くinetmgr を実行)
  2. 「Default Web Site」または対象のサイトを選択
  3. 「機能ビュー」から「ハンドラーマッピング」を開く
  4. 「モジュールマッピングの追加」をクリック
  5. 以下の情報を入力
    • リクエストパス*.py
    • モジュールFastCgiModule
    • 実行可能ファイルC:\PythonXX\python.exe|C:\PythonXX\Lib\site-packages\wfastcgi.py
      • C:\PythonXX\ はPythonのインストールパスに置き換える
    • 名前Python FastCGI
  6. 「OK」ボタンを押す
  7. 「この変更を適用しますか?」と表示されたら「はい」をクリック
  8. IISを再起動する(iisreset コマンドを実行)

FastCGIの設定

ハンドラーマッピングを追加したら、次にFastCGIの設定を行います。

FastCGI設定ファイルの作成

FastCGIの設定を変更するには、Pythonの設定ファイルを作成する必要があります。
C:\PythonXX\Lib\site-packages\wfastcgi.py のあるディレクトリに wfastcgi.ini というファイルを作成し、以下の内容を記述します。

INI
[uwsgi]
callable = app
module = app

環境変数の設定

  1. IISマネージャーを開く
  2. 「Default Web Site」または対象のサイトを選択
  3. 「FastCGI設定」を開く
  4. 「Python FastCGI」のエントリをダブルクリック
  5. 環境変数に以下の値を追加
    • WSGI_HANDLER = app.application
    • PYTHONPATH = C:\inetpub\wwwroot\python_app(Pythonアプリのフォルダパス)
  6. 「適用」をクリックし、IISを再起動

web.config の作成

IISでPythonアプリを適切に処理するために、web.config を作成する必要があります。
アプリのルートフォルダ(例:C:\inetpub\wwwroot\python_app)に web.config を作成し、以下の内容を記述します。

XML
<?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を再起動します。

cmd
iisreset

これで、IIS上でPythonアプリが動作する準備が整いました。

スポンサーリンク

動作確認とトラブルシューティング

IISの設定が完了したら、Pythonアプリが正しく動作するか確認しましょう。
また、よくあるエラーとその解決策についても解説します。

動作確認

ブラウザでの確認

  1. ブラウザを開く
  2. 以下のURLにアクセス
    • WSGIアプリの場合: http://localhost/python_app/app.py
    • Flaskアプリの場合: http://localhost/flask_app/
  3. 画面に「Hello, IIS!」が表示されれば成功

IISのログを確認

アプリが正しく動作しない場合は、IISのログを確認しましょう。
ログは以下のディレクトリに保存されています。

Makefile
C:\inetpub\logs\LogFiles\

最新のログファイルを開き、エラーメッセージを確認します。

トラブルシューティング

アプリが動作しない場合

「500 Internal Server Error」が発生する

原因

  • wfastcgi の設定が正しくない
  • Pythonスクリプトにエラーがある

解決策

  1. wfastcgi がインストールされているか確認
cmd
pip show wfastcgi

Name: wfastcgi が表示されなければ、pip install wfastcgi を実行

  1. wfastcgi が有効になっているか確認
cmd
python -m wfastcgi-enable
  1. web.config の設定を再確認(FastCGIのパスが正しいか確認)

「403 Forbidden」エラーが発生する

原因

  • web.config の設定ミス
  • IISの権限設定に問題がある

解決策

  1. web.config に正しいハンドラーが記述されているか確認
  2. C:\inetpub\wwwroot\python_app\IIS_IUSRS ユーザーの読み取り権限を付与

Pythonのパスが認識されない

原因

  • Pythonが正しくインストールされていない
  • システム環境変数 PATH にPythonのパスが登録されていない

解決策

  1. Pythonのインストールパスを確認
cmd
where python

C:\PythonXX\python.exe のようなパスが表示されなければ、再インストール

  1. システム環境変数を確認・修正
  • C:\PythonXX\PATH に追加
スポンサーリンク

まとめ

本記事では、IISでPythonアプリを動作させる方法について解説しました。
ここで、設定手順を振り返り、IISでPythonを運用する際のポイントを整理します。

設定手順の振り返り

  1. IISのセットアップ
    • Windowsの機能からIISを有効化
    • 「CGI」機能を追加し、FastCGIを利用可能にする
  2. Python環境の準備
    • Pythonをインストールし、pip install wfastcgi を実行
    • python -m wfastcgi-enable でFastCGIを有効化
  3. IISでPythonアプリを動作させる
    • シンプルなWSGIアプリやFlaskアプリを作成
    • C:\inetpub\wwwroot\ にアプリを配置
  4. IISの設定
    • ハンドラーマッピングを追加し、*.py をFastCGIで処理するよう設定
    • web.config を作成し、FastCGIが正しく動作するよう設定
  5. 動作確認とトラブルシューティング
    • 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アプリを運用してみてください。

brian
brian

ここまで読んでいただきありがとうございます!

UdemyのPythonコースにはオンラインで学習ができる動画コンテンツがたくさんあります。

当ブログのような文章メインの説明では足りない箇所を補えると思うので、もっと詳しく勉強したいという方はぜひチェックしてみてください!

コメント

タイトルとURLをコピーしました