Streamlit アプリケーションをデーモン化する
先日、Streamlit-Authenticator でログイン認証フォームを作る というメモを書きました。 Streamlit 作成した Web アプリケーションを本格的に利用したい場合はデーモン化しなくなります。 そこで今回は Systemd を使って Streamlit アプリケーションをデーモン化する手順をメモしておきます。
検証環境¶
| 対象 | バージョン |
|---|---|
| Ubuntu | 24.04.2 LTS |
| Python | 3.13.3 |
| streamlit | 1.45.0 |
| streamlit-authenticator | 0.4.2 |
デーモン化したい Streamlit アプリケーションの用意¶
Streamlit で作成したアプリケーションを配置するディレクトリを作成します。 今回は /opt/streamlit_demo にしました。
今回は Streamlit-Authenticator を使ったアプリケーションを想定していますので、ライブラリをインストールしておきます。
あとは Streamlit アプリケーションを配置します。
デーモン化する¶
Streamlit アプリケーションを Systemd でデーモン化する為、ユニットファイルを作成します。 今回は以下の内容で /etc/systemd/system/streamlit_demo.service というファイルを新規作成しました。 アプリケーションは Python の仮想環境内で実行することを想定しています。
/etc/systemd/system/streamlit_demo.service
[Unit]
Description=Streamlit Daemonize Demo
After=network.target
[Service]
Type=simple
WorkingDirectory=/opt/streamlit_demo
ExecStart=/opt/streamlit_demo/.venv/bin/streamlit run /opt/streamlit_demo/app.py --server.port 80
Restart = on-failure
[Install]
WantedBy=multi-user.target
新規追加したユニットファイルを認識させる為、systemctl daemon-reload を実行します。
systemd でサービスを自動起動設定&起動します。
これでデーモン化が完了しました。 ユニットファイル中で --server.port 80 を指定している為、Web ブラウザで http://ADDRESS へアクセスすると Streamlit アプリケーションが表示されるはずです。