Systemdでウェブアプリをデーモン化して永続化する最良な方法

Systemdでウェブアプリをデーモン化して永続化する最良な方法

 

ウェブアプリをデーモン化したい

PythonのアプリをAWSのEC2にあげて、

 

python app.py とかでアプリをあげるけど、

 

それを永続化してデーモン化して仮に落ちても

 

自動で再起動するようなことをしたかった。

 

Pythonアプリじゃなくても全然大丈夫

場所

 
$ cd /etc/systemd/system
$ vi app.service
 

etc/systemd/systemにコードを書く

 
[Unit]
Description=App

[Service]
ExecStart=/bin/bash -c '/usr/bin/python3 /home/ubuntu/アプリ/app.py'
WorkingDirectory=/home/ubuntu/アプリ/
Restart=always
Type=simple
User=ubuntu

[Install]
WantedBy=multi-user.target
 

ポイント

ここで、

プロセスが落ちても自動で再起動をするようになる

Restart=always

実行

 
$ sudo systemctl list-unit-files --type=service | grep app
$ sudo systemctl daemon-reload
$ sudo systemctl start app.service
$ sudo systemctl status app.service
 

詰まったこと

こちらのサイトを参考に一回してみたのですが、

 

コード足らずで動かなったのと、

 

権限足らずで動きませんでした。

 

権限で動かなければ sudo chmod 777 とかで権限最高解放すれば絶対に権限の問題は解決します

https://qiita.com/DQNEO/items/0b5d0bc5d3cf407cb7ff

藤沢瞭介(Ryosuke Hujisawa)
  • りょすけと申します。18歳からプログラミングをはじめ、今はフロントエンドでReactを書いたり、AIの勉強を頑張っています。off.tokyoでは、ハイテクやガジェット、それからプログラミングに関する情報まで、エンジニアに役立つ情報を日々発信しています!

Unix