WordPress (Ubuntu 上)で Python プログラムの実行結果を表示
1. エグゼクティブサマリー
Ubuntu 上の WordPress 環境において,Python プログラムの実行結果を Web ブラウザに表示する方法を説明する.Python の Web フレームワークである Flask でアプリケーションを作成し,mod_wsgi を介して Apache2 上で動作させる.
WordPress のインストールが終わっていることが前提条件である. Ubuntu での WordPress のインストール手順は, 別ページで説明している.
2. 前準備(必要ソフトウェアの入手)
Python 3 処理系および apache2-dev のインストール(Ubuntu 上) [クリックして展開]
端末を開き,以下のコマンドで Python 3 処理系および apache2-dev をインストールする.
# パッケージリストの情報を更新
sudo apt update
sudo apt -y install python3 python3-dev python3-pip
sudo apt -y install apache2-dev
mod_wsgi,mod_wsgi-httpd のインストール [クリックして展開]
pip3 を使用して mod_wsgi および mod_wsgi-httpd をインストールする.
sudo pip3 install mod_wsgi
sudo pip3 install mod_wsgi-httpd
それぞれの実行後に,エラーメッセージが出ていないことを確認する.
Flask および関連パッケージのインストール [クリックして展開]
以下のコマンドで python3-flask および python3-simplejson をインストールする.
# パッケージリストの情報を更新
sudo apt update
sudo apt -y install python3-flask python3-simplejson
Flask のバージョンを確認する.
python3 -c "import flask; print( flask.__version__ )"
3. 実行のための準備とその確認手順(Ubuntu 前提)
3.1 プログラムファイルの準備
第5章に掲載するソースコードをテキストエディタに貼り付け,以下のファイル名で保存する(文字コード:UTF-8).
/var/www/html/added/app/app.py/var/www/html/added/app/app.wsgi
3.2 実行コマンド
端末で以下を実行し,Flask の開発サーバーで動作確認を行う.
python3 /var/www/html/added/app/app.py
確認後,「python3 /var/www/html/added/app/app.py」は CTRL + C で終了する.
3.3 動作確認チェックリスト
| 確認項目 | 期待される結果 |
|---|---|
| Web ブラウザで localhost:5000 を開く | 「Hello, World!」と表示される |
| Web ブラウザで localhost:5000/time を開く | 現在時刻が表示される |
| Apache2 再起動後に Web ブラウザで http://localhost/added を開く | Flask アプリケーションの出力が表示される |
4. 概要・使い方・実行上の注意
4.1 Flask アプリケーションの概要
app.py は2つのルートを持つ.ルート / にアクセスすると「Hello, World!」を返し,ルート /time にアクセスすると現在時刻を返す.ソースコードは第5章に掲載している.
4.2 mod_wsgi.so のロードと Apache2 の設定
Flask アプリケーションを Apache2 で動作させるため,wsgi ファイルを作成する./var/www/html/added/app/app.wsgi として保存する.
* 「as application」は変更しないこと.
次に,/etc/apache2/sites-available/added-wordpress.conf を編集する.以下の太字部分を追記する.
LoadModule wsgi_module /usr/local/lib/python3.6/dist-packages/mod_wsgi/server/mod_wsgi-py36.cpython-36m-x86_64-linux-gnu.so
WSGIPythonPath "/usr/lib/python3/dist-packages:/usr/local/lib/python3/dist-packages"
<VirtualHost *:80>
ServerAdmin webmaster@localhost
DocumentRoot /var/www/html/added
ServerName hoge-client.com
ServerAlias www.hoge-client.com
WSGIScriptAlias / /var/www/html/added/app/app.wsgi
<Directory /var/www/html/added>
Options +FollowSymlinks
AllowOverride All
Require all granted
</Directory>
ErrorLog ${APACHE_LOG_DIR}/added-error.log
CustomLog ${APACHE_LOG_DIR}/added-access.log combined
</VirtualHost>
4.3 Apache2 の再起動と動作確認
/etc/apache2/sites-available/added-wordpress.conf を書き換えたので,Apache2 を再起動する.
sudo systemctl restart apache2.service
Web ブラウザで http://localhost/added を開き,動作を確認する.
5. ソースコード
5.1 app.py
以下を/var/www/html/added/app/app.pyとして保存する.
# coding:utf-8
from flask import Flask
from datetime import datetime
app = Flask(__name__)
@app.route('/')
def hello_world():
return 'Hello, World!'
@app.route('/time')
def show_time():
return 'Current time: ' + datetime.now().strftime('%Y-%m-%d %H:%M:%S')
if __name__ == '__main__':
app.run()
Web ブラウザで localhost:5000 を開く.「Hello, World!」と表示されれば動作している.続けて localhost:5000/time を開くと,現在時刻が表示される.
5.2 app.wsgi
以下を/var/www/html/added/app/app.wsgiとして保存する.
# coding:utf-8
import sys
sys.path.insert(0, '/var/www/html/added/app')
from app import app as application
6. まとめ
Flask による Web アプリケーション作成
Flask を使用して Python の Web アプリケーションを作成した.ルート / で定型文を,ルート /time で現在時刻を返す.
mod_wsgi による Apache2 連携
mod_wsgi および mod_wsgi-httpd をインストールし,Apache2 の設定ファイルに LoadModule ディレクティブと WSGIScriptAlias を追記することで,Flask アプリケーションを Apache2 上で動作させた.
WSGI ファイルの役割
app.wsgi は Flask アプリケーションと Apache2 を仲介するファイルである.「as application」の記述は変更しないこと.
WordPress 環境との統合
WordPress 環境において,VirtualHost の設定を編集し,Python プログラムの実行結果を Web ブラウザに表示する構成を実現した.
動作確認の手順
Flask の開発サーバー(localhost:5000)での確認と,Apache2 再起動後(http://localhost/added)での確認の2段階で動作を検証する.