RaspberryPi 2B で、 Flask アプリを Apache2 + wsgi でデプロイする。
将来的に、そのアプリで RaspberryPi のハードウェアを制御する。
Python 3 用の apache2 mod-wsgi をインストールする。Python 2 用の mod-wsgi が入っていたらアンインストールする。
$ sudo a2dismod wsgi $ sudo apt remove libapache2-mod-wsgi$ sudo apt install apache2 $ sudo apt install libapache2-mod-wsgi-py3 $ sudo a2enmod wsgi $ sudo systemctl restart apache2
Flask app のディレクトリを作成する。
pi@raspberrypi:~ $ mkdir flask pi@raspberrypi:~ $ cd flask pi@raspberrypi:~/flask $ mkdir templates pi@raspberrypi:~/flask $ mkdir static
flask/my_app.py を作成する。
pi@raspberrypi:~/flask $ nano my_app.py
from flask import Flask import sys app = Flask(__name__) @app.route('/') def hello_world(): msg = 'Hello Flask ' + sys.version return msg if __name__ == '__main__': app.run(host='0.0.0.0', port=5000)
flask.conf を作成する。
$ sudo nano /etc/apache2/sites-available/flask.conf
<VirtualHost *:80> ServerName 0.0.0.0 WSGIDaemonProcess my_app user=pi group=pi threads=5 WSGIScriptAlias / /home/pi/flask/my_app.wsgi <Directory /home/pi/flask/> WSGIProcessGroup my_app WSGIApplicationGroup %{GLOBAL} WSGIScriptReloading On Require all granted </Directory> </VirtualHost>
wsgi ファイルを作成する。
$ nano ~/flask/my_app.wsgi
import sys sys.path.insert(0, '/home/pi/flask/') from my_app import app as application
デフォルトのサイト 000-default を外して、先ほどの flask.conf を有効化する。
$ sudo a2dissite 000-default $ sudo a2ensite flask $ sudo systemctl reload apache2
確認。
$ curl http://localhost Hello Flask 3.7.3 (default, Jul 25 2020, 13:03:44)
他のパソコンなどからも同様に表示される。
0 件のコメント:
コメントを投稿