systemdを使ったデーモン化¶
実行環境準備¶
環境変数を記録したファイルを準備する( .env など)
環境変数定義¶
DISCORD_TOKEN=XXXXXXXXXXXXXXXXXXXXXXXXXX.XXXXXX.XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX
systemd設定¶
- unitファイル作成
/etc/systemd/system/python_app_discord.serviceを作成(ファイル名は好みでよい)python_app_discord.service¶[Unit] Description=discord mahjong score management After=network.target [Service] User=<user name> Type=simple WorkingDirectory=/path/to/<app-dir>/ EnvironmentFile=/path/to/<app-dir>/.env #ExecStartPre=git pull ExecStart=/path/to/<venv-dir>/bin/python3 /path/to/<app-dir>/app.py --notime #Restart=always [Install] WantedBy=default.target
Userにスクリプトを起動するユーザ名を指定WorkingDirectoryに指定するディレクトリは`git clone`したときに作成したディレクトリ/path/to/<venv-dir>/bin/python3は仮想環境のPython/path/to/<app-dir>/.envは環境変数を記述したファイルExecStartPre、Restartはお好みで
- unitファイル反映
- daemon-reload¶
$ sudo systemctl daemon-reload
- 自動起動有効化
- enable¶
$ sudo systemctl enable python_app_discord.service
- 起動/停止
- start¶
$ systemctl start python_app_discord.service
stop¶$ systemctl stop python_app_discord.service
- ログ確認
- status¶
$ systemctl status python_app_discord.service -l --no-pager
journalctl¶$ journalctl -l -u python_app_discord.service --no-pager
