Apache+python(Flask)でwebアプリを作成する方法

備忘メモ

Flask

pythonのライブラリの一つ(=pip install flaskでインストールできる)

FlaskはPythonで書かれた軽量なWebフレームワークであり、独立したWebサーバー機能を提供します。しかし、このWebサーバーは主に開発とテスト用途であり、本番環境での使用には推奨されていません。そのため、本番環境ではApache、Nginxなどの成熟したWebサーバーと一緒に使用されることが多いです。

ApacheをフロントにWebサーバとして配置し、pythonをバックエンドでアプリサーバとして構成する方法

Webサーバ(Apacheなど)とアプリケーション(Flaskアプリなど)との連携には、通常WSGI(Web Server Gateway Interface)が用いられます。WSGIは、WebサーバとPython Webアプリケーションとの間の標準的なインターフェースです。

Apache Webサーバを使用する場合、mod_wsgiというモジュールを使ってWSGIアプリケーションをホストします。mod_wsgiはApacheサーバに組み込まれ、Python WSGIアプリケーションサーバとして動作します。

1.Apacheの設定ファイルにWSGIアプリケーションの設定を追加

(Apache設定ファイル 設定例)

WSGIDaemonProcess your-application-name user=www-data group=www-data threads=5
WSGIScriptAlias / /path/to/your/app.wsgi

<Directory /path/to/your/>
WSGIProcessGroup your-application-name
WSGIApplicationGroup %{GLOBAL}
Order deny,allow
Allow from all
</Directory>

この設定では、/path/to/your/app.wsgiに指定されたWSGIスクリプトが、WebサーバによってリクエストされたURLのルート(/)にマッピングされます。

2.WSGIスクリプトの作成

次に、Flaskアプリケーションを起動するWSGIスクリプト(通常はapp.wsgiという名前)を作成します。

import sys
sys.path.insert(0, '/path/to/your/application')

from your_flask_app import app as application

/path/to/your/applicationは、FlaskアプリケーションのPythonファイル(通常はapp.py)が格納されているディレクトリへのパスです。your_flask_appは、そのPythonファイル内でFlaskアプリケーションオブジェクトが定義されているモジュール名です。

この設定を完了すると、ApacheはHTTPリクエストを受け取り、それをWSGIを通じてFlaskアプリケーションに転送します。FlaskアプリケーションはHTMLを生成し、それをApacheを通じてクライアントに送り返します