werkzeug を使用して小さな Web サーバーを作成しましたが、通常の python の方法で実行できますpython my_server.py
。ページが読み込まれ、すべて正常に動作します。今、私は自分のPCが起動したときにそれを開始したいと考えています。それを行う最も簡単な方法は何ですか?私は成り上がりに苦労してきましたが、実行したstart my_server
後すぐに受け取るため、「バックグラウンドで生きている」ようには見えませんkernel: [ 8799.793942] init: my_server main process (7274) terminated with status 1
my_server.py:
...
if __name__ == '__main__':
from werkzeug.serving import run_simple
app = create_app()
run_simple('0.0.0.0', 4000, app)
upstart 構成ファイル my_server.conf:
description "My service"
author "Some Dude <blah@foo.com>"
start on runlevel [2345]
stop on runlevel [016]
exec /path/to/my_server.py
start on startup
それを機能させる方法はありますか?または、スクリプトをデーモン化する他のより良い方法はありますか?
更新:
問題は にあると思いますmy_server.py
。そもそもWebサーバー(メソッド)を開始していないようですrun_simple()
。upstart などのタスク ハンドラで .py ファイルを実行するには、どのような手順を実行する必要がありますか?
- シバンを最初の行として配置する
#!/usr/bin/env python
- 実行権限を許可する
chmod 755
- スーパーユーザー権限でデーモンを起動します (起動を妨げる権限制限がないことを確実にするため)。
- すべての Python ライブラリがそこにあることを確認してください!
- 他の何か?
解決済み:
この問題は、Python の依存関係の欠落にありました。upstart
タスク マネージャー (または など)を介してスクリプトを開始すると、start-stop-daemon
エラーはスローされません。pythonpath に必要なものがすべて含まれていることを絶対に確認する必要があります。