要 旨
Python3でstreamlitを使用したWebアプリapp.pyを仮想環境venvを使用して作成してサーバーにデプロイしたとします。これをサーバー再起動時にWebアプリapp.pyを自動実行する方法について記述します。
実行環境等
VPS:KAGOYAクラウド KVM CPU 1コア、メモリ1GB、ストレージ25GB
料金:20円/1日、550円/月(2023年(令和5年)7月9日(日)時点)
OS:Ubuntu22.04LTS
操作端末:iMac
実行要領
'myapp.service'という名前の新しいsystemdサービスファイルを作成します。
1 |
vi /etc/systemd/system/myapp.service |
以下の要領でファイルを編集します。
1 2 3 4 5 6 7 8 9 10 11 12 13 |
[Unit] Description=My Streamlit App After=network.target [Service] ExecStart=/path/to/venv/bin/python3 -m streamlit run /path/to/app.py WorkingDirectory=/path/to/app/directory User=your_username Group=your_group Environment="LC_ALL=en_US.UTF-8" # もしくは適切なロケールを指定 [Install] WantedBy=multi-user.target |
上記のファイルでは、以下の部分を適切なパスやユーザー名、グループ名に変更する必要があります。
ExecStart
:venv内のPythonバイナリとapp.pyへのパスを指定します。-m streamlit run
は、venv内でstreamlitを実行するために必要です。WorkingDirectory
:app.pyが存在するディレクトリへのパスを指定します。User
とGroup
:サービスを実行するユーザーとグループを指定します。Environment
:ロケールの設定が必要な場合は、適切なロケールを指定します。
保存してエディタを終了し、変更を反映させます。
1 |
systemctl daemon-reload |
サービスを起動します。
1 |
systemctl start myapp.service |
サービスを有効化し、システム起動時に自動実行されるようにします。
1 |
systemctl enable myapp.service |
サービスの状態を確認するコマンド
1 |
systemctl status myapp.service |
サービスがサーバー再起動時に自動実行されるか確認するコマンド
1 |
systemctl is-enabled myapp.service |
結 言
今回はstreamlitを使用したWebアプリを自動実行させる方法について記述しました。
最後までお読みくださり、ありがとうございました。