Ubuntuでsystemd(/etc/systemd/system
)を使用すると、シンプルな設定が可能です(ただし、プロダクション設定には適していない可能性があります)。
私が試作しているPython Flaskアプリでこれを行うことがあります。まず、アプリケーションコードを/opt/my-app
に入れます。私は通常ちょうどcd /opt
とgit clone
レポがあります。次に、/etc/systemd/system/my-app.service
というファイルを作成します。このファイルには、次の行を追加します。そして、あなたが行うことができます
DB_HOST=localhost
DB_USER=postgres
DB_PASSWORD=postgres
DB_NAME=postgres
:
[Unit]
Description=My App daemon
After=network.target postgresql.service
Wants=postgresql.service
[Service]
EnvironmentFile=/etc/sysconfig/my-app
WorkingDirectory=/opt/my-app/ # <- this is where your app lives
User=root
Group=root
Type=simple
ExecStart=/usr/bin/python server.py # <- this starts your app
Restart=always
RestartSec=5s
[Install]
WantedBy=multi-user.target
次に、ファイルの中にあなたが持っているすべての環境変数を貼り付けるよう/etc/sysconfig/my-app
と呼ば
service my-app start
service my-app stop
service my-app restart
とサーバーのIPとポートで動作しているアプリケーションを起動することができます(ちょうどpython app.py
またはpython server.py
を実行した場合と同じです)。デーモンプロセスのログを確認するには、動作していないと思われたら
journalctl -u my-app -e
生産時には、これが最適な設定であるかどうかはわかりませんが、おそらくngnixのようなものを調べる方が良いでしょう。しかし、私はプロトタイプのためにこれをすべて行い、それはかなり素晴らしいです。
ありがとう、マイク!クイックフォローアップの質問。 AWS-Lambda上で別のアプリケーションを実行している場合、これを直前に実行していたサーバーに接続する方法はありますか?たとえば、AWS-LambdaのFlaskファイルでメソッドのいくつかを呼び出したり、データベースに貢献したいのであれば、それは可能ですか? – agaidis