Rasberry Pi上(Rasbian)のFlaskのmod_wsgi設定についてです。
(最近やっとできるようになったのでメモ)
環境
- Raspberry Pi 3 (Rasbian 2017-07-05)
- python 2.7.9
- Flask
- mod_wsgi
- アプリの場所は/home/pi/flask/moi.pyを想定して記述していますので適宜読み替えてください。
Flaskインストール
$ sudo apt-get update
$ sudo apt-get -y install ipython python-flask curl
サンプル作成
$ cd /home/pi/
$ mkdir flask/ && cd flask/
$ vi moi.py
moi.py
from flask import Flask
app = Flask(__name__)
@app.route('/')
def hello_world():
return 'Hello Flask'
if __name__ == '__main__':
app.run(host='0.0.0.0', port=5000)
サンプルの動作確認
$ python moi.py
* Running on http://0.0.0.0:5000/
- 別terminalからport5000にcurlでアクセスし、Hello Flaskと表示されればOKです。
$ curl http://localhost:5000
Hello Flask
apache2インストール
$ sudo apt-get -y install apache2
mod_wsgiインストール
$ sudo apt-get -y install libapache2-mod-wsgi
apache2のコンフィグ設定
sudo vi /etc/apache2/sites-available/moi.conf
/etc/apache2/sites-available/moi.conf
<VirtualHost *:80>
ServerName 0.0.0.0
WSGIDaemonProcess moi user=pi group=pi threads=5
WSGIScriptAlias / /home/pi/flask/moi.wsgi
<Directory /home/pi/flask/>
WSGIProcessGroup moi
WSGIApplicationGroup %{GLOBAL}
WSGIScriptReloading On
Require all granted
</Directory>
</VirtualHost>
VirtualHost設定反映
デフォルトのコンフィグから作成したコンフィグに切り替えます。
$ sudo a2dissite 000-default.conf
$ sudo a2ensite moi.conf
$ cd /home/pi/flask
$ vi moi.wsgi
moi.wsgi
import sys
sys.path.insert(0, '/home/pi/flask/')
from moi import app as application
$ sudo service apache2 restart
設定結果の確認
- 別terminalからport80にcurlでアクセスし、Hello Flaskと表示されればOKです。
$ curl http://localhost
Hello Flask
- 最後にブラウザからRaspberry piのアドレスにアクセスしHello Flaskと表示されれば設定は正常です。