PythonのフレームワークであるFlaskでWebアプリを作成中。
Web上で公開したいため、Apacheと連携させるまでの手順を書く。
ここでは、開発環境(ローカル)でFlaskの動作検証を実施するとともに、その後本番環境(本番Apache)上で動かすまでの手順を書いていく。
環境
※下記は全てインストール済の前提で進めていく
- OS:Raspbian(Raspberry Pi 3)
- Pythonバージョン: 3.6.3
- ウェブサーバー:Apache2
なおPythonアプリの場所は、/var/www/html/flask
でやっていくが、適宜、各々の環境に置き換えてほしい。
参考
開発環境での動作検証
Flaskインストール
pip install flask
テストアプリ作成
[/var/www/html/flask/Hello.py]
from flask import Flask app = Flask(__name__) @app.route('/') def index(): return 'Hello' if __name__ == '__main__': app.debug = True app.run(host='0.0.0.0', port=80)
本番環境(公開サーバー)で動かす
apache2のインストール
apache2は既にインストール済の前提だが、なければ下記
sudo apt-get -y install apache2
mod_wsgiのインストール
mod_wsgi(ウィズギー)は、PythonフレームワークとApache2を連携させるためのインターフェースモジュール。らしい。
wsgi無しでは、PythonをWebサーバーと連携できないので、インストールが必要。※一応cgiを使うという手もある
sudo apt-get -y install libapache2-mod-wsgi
wsgiファイルを作成
/var/www/html/flask にwsgiファイルを作成する。
[/var/www/html/flask/test.wsgi]
import sys, site #pythonのpathを指定 site.addsitedir('/path/python3.6/site-packages') #wsgi, Flaskファイルのディレクトリを指定 sys.path.insert(0, '/var/www/html/flask') from Hello import app as application
apache2の設定ファイルでVirtualHostを追加
バーチャルホストを使えば、一つのドメインで複数のサイトを作ることができる。
デフォルト(80番)でよければいいが、自分は既に別サイトで使用していたので、ポート8080番でVirtualHostを追加する。
念の為、デフォルトの設定ファイルはいじらず、新しく作る。
sudo cp 000-default.conf 001-default.conf
下記コードを追加する。
[/etc/apache2/sites-available/001-default.conf]
<VirtualHost *:8080> WSGIDaemonProcess test user=pi group=pi threads=5 WSGIScriptAlias / /var/www/html/flask/test.wsgi <Directory /var/www/html/flask> WSGIProcessGroup test WSGIApplicationGroup %{GLOBAL} WSGIScriptReloading On Require all granted </Directory> </VirtualHost>
apache2の設定ファイルでポートを追加
上記でポートを追加した場合、設定ファイルの編集が必要。
(従って、ここは本筋ではない)
ports.confを編集して、とりあえず8080番を追加
[/etc/apache2/ports.conf]
# If you just change the port or add more ports here, you will likely also # have to change the VirtualHost statement in # /etc/apache2/sites-enabled/000-default.conf Listen 80 #以下を追加 Listen 8080 <IfModule ssl_module> Listen 443 </IfModule> <IfModule mod_gnutls.c> Listen 443 </IfModule>
ルーターの設定でポートを追加する
(上記同様、本筋では無いが)ルーターの設定で、今回新しく追加したポートを公開する必要がある。
今回で言えば8080番を公開する必要がある。
やり方は、ルーターの種類によって異なってくるかと思うので割愛。
以上。ポート8080番で、Flaskアプリケーションが実行できればOK。