はじめに
マイクロWEBアプリケーションフレームワークのFlaskを使用すると、WEBサーバ上で動かすことのできるWEBアプリが作成できます。
Python部分の作りこみ部分はおいおいとして、FlaskとApcheでHelloWorldまで表示させるところまでやってみます。
本記事のゴール
Apache+mod_wsgi+Flaskで、Flaskで書いたHelloWordを表示させる。
動作環境
- Windows Server 2019 Standard(1809)
- Python 3.8.5
- Flask 1.1.2
目次
1.Flask単体でHelloWorld
まずはFlaskのライブラリをインストールします。
pip install flask
Flaskを動作させるPythonファイルapp.py
を作成して、Flask Hello World
を表示させるコードを書きます。
from flask import Flask
# Flaskをappという変数で動かす宣言
app = Flask(__name__)
@app.route('/')
def hello():
name = "Flask Hello World"
return name
# appの実行
if __name__ == "__main__":
app.run()
コマンドプロンプトからapp.py
を実行します。
python app.py
実行結果が↓のように出るので、http://127.0.0.1:5000/
にアクセスしてFlask Hello World
が出ていればFlask単体での実行はOK。
USER$ python3 app.py
* Serving Flask app "app" (lazy loading)
* Environment: production
WARNING: This is a development server. Do not use it in a production deployment.
Use a production WSGI server instead.
* Debug mode: off
* Running on http://127.0.0.1:5000/ (Press CTRL+C to quit)
WEBアプリケーションフレームワークのFlaskにはデバック用に簡易的なWEBサーバ機能があります。
出力結果にもWARNING: This is a development server. Do not use it in a production deployment.
とありますが、正式に運用するには性能に限界があるため、後続のWEBサーバ(ApacheやNginxなど)で動作させる必要があります。
2.Apacheのインストールと設定
正式なWEBサーバとしてApacheを導入します。
Apacheを下記サイトからダウンロードして解凍します。
https://www.apachelounge.com/download/
解凍した「Apache24」フォルダをCドライブ直下に移動します。
そのままではWEBサーバとして使用できないので、下記2点の設定を行います。
- ① 設定ファイルの変更、
- ② インストールとサービスの起動
####① 設定ファイルの変更
下記、コンフィグファイルを修正します。
C:\Apache24\conf\httpd.conf
コンフィグファイル修正点:どのポートを受け付けポートにするか
#Listen 80 #変更前
Listen 80 #変更後
####② インストールとサービスの起動
コマンドプロンプトを起動してC:\Apache24\bin
まで移動して、
Apacheのインストールとサービス起動します。(※管理者権限で実行が必要なので注意)
cd C:\Apache24\bin
httpd -k install
httpd -k start
http://localhost/
にアクセスして、It works!
と表示されていればApacheの設定は完了です。
3.ApacheとFlaskをつなぐ設定
WEBサーバ上でFlaskを動かすためにはWSGI(Web Server Gateway Interface)を使用してApacheとつなぐ必要があります。
そのため、PythonのFlaskで作ったコードをApacheで動作させるための設定を行います。
設定は下記3点を設定します。
- ① mod_wsgiのインストール
- ② WSGIファイルの用意
- ③ Apache設定ファイルの編集
(※今回はPyPiからではなく、Unofficial Windows Binaries for Python Extension Packagesを使用します。)
####① mod_wsgiのインストール
下記URLからwhlファイルをダウンロードしてきて、mod_wsgiをインストールします。
https://www.lfd.uci.edu/~gohlke/pythonlibs/#mod_wsgi
pipでインストールします。
pip install mod_wsgi-4.7.1-cp38-cp38-win_amd64.whl
####② WSGIファイルの用意
ブラウザからアクセスが来た際にFlaskへ繋ぐためのWSGIファイルを作成します。
app.py
と同じ場所にapplication.wsgi
を作成します。中身は下記を記載します。
import sys
sys.path.insert(0, 'C:/WEBapp(任意のフォルダ名)')
from app import app as application
2行目のPathはapp.py
があるフォルダパスを設定します。
今回は例としてWEBapp(任意のフォルダ名)
の下にapp.py
がある想定です。
####③ Apache設定ファイルの編集
ApacheにWSGIへ連携させるための設定をします。
コマンドプロンプトを立ち上げて、下記コマンドを実行し、出力結果をC:\Apache24\conf\httpd.conf
の最後に追記します。
mod_wsgi-express module-config
続いてVirtualHostの設定をします。
C:\Apache24\conf\httpd.conf
に下記を追加します。
<VirtualHost *:80>
WSGIScriptAlias / "C:/WEBapp(任意のフォルダ名)/application.wsgi"
<Directory "C:/WEBapp(任意のフォルダ名)">
Require all granted
</Directory>
</VirtualHost>
最後にApache再起動します。
httpd -k start
http://localhost/
にアクセスして、Flask Hello World
と表示されていればApache上でFlaskを動かせていることになります。
以上、お疲れ様でした。