Python - flask - apache への組込 - mod_wsgi


クラウディア 


1. 概要
2. インストール
3. apache 設定
4. コンテンツ作成
5. 確認
6. 参考サイト

1. 概要

 「mod_wsgi」を使うのは、「php」のモジュールを「mod_php」で動かすのと同じようなもんですな。  試してみます。

2. インストール

 「FreeBSD 15.0 RELEASE」へ組み込みます。  「root」ユーザ権限で。

cd /usr/ports/www/mod_wsgi
 オプションはありません。

make NO_DIALOG=yes

make install

3. apache 設定

 「root」ユーザ権限で。

vi /usr/local/etc/apache24/httpd.conf

LoadModule alias_module libexec/apache24/mod_alias.so
#LoadModule rewrite_module libexec/apache24/mod_rewrite.so
LoadModule php_module         libexec/apache24/libphp.so
 の後ろあたりに、下記の行を追加します。

LoadModule wsgi_module libexec/apache24/mod_wsgi.so
 プロジェクトルートを。

/usr/local/www/flask
 として。  あらかじめ、ディレクトリのみは作成しておいて。

vi /usr/local/etc/apache24/Includes/flask.conf
 下記を記述します。  (ファイル名はなんでもいいですが、証明書ファイルやログファイルの記述は、適宜書き換えてください。)

Listen 443

<VirtualHost _default_:443>
    SSLEngine on

    SSLCertificateFile    "/etc/ssl/demoCA/cert.pem"
    SSLCertificateKeyFile "/etc/ssl/demoCA/nokey.pem"
    SSLCACertificateFile  "/etc/ssl/demoCA/cacert.pem"

    WSGIDaemonProcess flask user=www group=www threads=5
    WSGIScriptAlias /flask /usr/local/www/flask/adapter.wsgi

    <Directory /usr/local/www/flask>
        Options FollowSymLinks
        AllowOverride None

        WSGIProcessGroup flask
        WSGIApplicationGroup %{GLOBAL}

        <RequireAll>
            Require all granted
        </RequireAll>
    </Directory>

    ErrorLog  "/var/log/www/error.log"
    CustomLog "/var/log/www/access.log" combined
</VirtualHost>

4. コンテンツ作成

 コンテンツを作成します。  プロジェクト所有者権限で。

vi /usr/local/www/flask/app.py
 下記を記述します。

from flask import Flask

app = Flask(__name__)

@app.route('/')
def hello():
  return "Hello, World with mod_wsgi!"

if __name__ == "__main__":
  app.run()

vi /usr/local/www/flask/adapter.wsgi
 下記を記述します。

import sys
import os

sys.path.insert(0, '/usr/local/www/flask')

from app import app as application

5. 確認

 「root」ユーザ権限で。  設定を確認して。

service apache24 configtest
 「apache」を再起動。

service apache24 restart
 ブラウザで。

https://server_name/flask/
 にアクセスして、下記のように表示されれば成功です。

6. 参考サイト

 本ページは、「ChatGPT」軍曹および「Gemini」伍長を参考にさせていただきました。

TikTok Shop 【リピート用プログラム】
AbemaTV 無料体験
ハイスピードプラン
それがだいじWi-Fi