【要約】Raspberry PiでPython HTTPサーバーを常時起動する - systemd serviceで自動起動・自動再起動 [Zenn_Python] | Summary by TechDistill
> Source: Zenn_Python
Execute Primary Source
// Problem
Raspberry PiでHTMLを公開したい開発者が、サーバーの継続性に課題を抱いている。手動での起動では以下の問題が発生する。
- ・SSH接続を終了するとサーバープロセスが停止する。
- ・デバイスの再起動時に手動での起動作業が必要となる。
- ・プロセスが予期せず終了した場合、自動で復旧できない。
// Approach
開発者はPythonの標準機能とsystemdを組み合わせ、自動管理を実現する。
- ・
python3 -m http.server --bind 0.0.0.0 8080を実行コマンドに指定する。 - ・
/etc/systemd/system/配下に.serviceファイルを作成する。 - ・
Restart=alwaysを設定し、異常終了時の自動復旧を組み込む。 - ・
systemctl enableを用いてOS起動時の自動起動を有効化する。
// Result
設定により、サーバーの永続性と自動復旧が実現した。
- ・SSHセッションの終了に依存せず、サーバーが常時稼働する。
- ・デバイスの再起動後も、設定なしで即座にサービスが利用可能になる。
- ・プロセス停止時も
RestartSec=5に基づき、5秒後に自動再起動される。
Senior Engineer Insight
> エッジデバイスでのプロトタイプ構築には非常に効率的な手法だ。しかし、
http.serverはシングルスレッドであり、セキュリティや高負荷耐性に欠ける。本番環境への適用は厳禁であり、開発・検証用として限定的に利用すべきである。運用時はWorkingDirectoryの権限設定がトラブルの火種になりやすい点に注意せよ。