flaskで作ったwebアプリの起動を
python3 manage.py runserver
で行っていたが、このままではシステム立ち上げ時にそのまま起動できるようにならないので、uWSGIを介した起動をしないといけないのかなと思っていたが、flaskをpythonから読み込むのじゃなくてコマンドで起動できるようになっていることがわかった。
flask run
たったこれだけなんだけど、そのまえに環境変数を読み込んでおく必要がある。
コマンドラインから起動するだけなら
export FLASK_APP="./app/views/home.py" export LC_CTYPE="en_US.UTF-8"
と打ってからflask runでいいわけだけど、daemonで起動するときには環境変数を読み込むための設定が必要となる。
/etc/sysconfig/以下に適当な名前で設定ファイルをおいておく必要がある。今回は'kuro'というファイルにしておく。内容は
FLASK_APP="./app/views/home.py" LC_CTYPE="en_US.UTF-8" _EOF_
その上でサービスとして起動するための設定を書く。
/etc/systemd/system/に
ngsseqdb.service
などの名前でファイルを作り
[Unit] Description=python instance to serve ngsseqdb After=network.target [Service] User=kuro Group=kuro EnvironmentFile=/etc/sysconfig/kuro WorkingDirectory=/home/kuro/ngsseq/database ExecStart=/home/linuxbrew/.linuxbrew/bin/flask run --host=192.168.1.10 [Install] WantedBy=multi-user.target
こんな感じの内容を書く。
サービス起動は
sudo systemctl start ngsseqdb
止めるときはstop
システム立ち上げ時に自動起動するなら
sudo systemctl enable ngsseqdb
自動起動をやめるならdisable
なお、firewall-cmdでポートの穴を開けておかないと、外からアクセスできない。
$ sudo firewall-cmd --add-port=5000/tcp --zone=public --permanent $ sudo firewall-cmd --reload