pydoc ウェブサーバー用の Upstart

pydoc ウェブサーバー用の Upstart

upstart開発中のパッケージの Web サーバーが常に実行されるように使用しようとしていますpydoc。コマンドラインから実行すると、次のようになります。

pydoc -p 7464 /some_path/my_python_package

問題なく動作し、localhost:7464/my_python_packageドキュメントが表示されます。しかし、これをupstartスクリプト内に置くと、例えば

start on startup
start on runlevel [2,3,4,5]
stop on runlevel [0,1,6]

script
    pydoc -p 7464 /some_path/my_python_package
end script

ブラウザを開くとlocalhost:7464/my_python_package次の画面が表示されます。

no Python documentation found for 'my_python_package' 

localhost:7464標準の Python パッケージはすべて通常どおり表示されるので、upstart がパスを正しく解析していないように見えることに注意してください。

export PYTHONPATH='/some_path'を入力して実行行を変更してみましたpydoc -p 7464 $PYTHONPATH/my_python_packageが、これも機能しませんでした。

答え1

そのジョブで指定した構文が正しくありません:

  • 複数の「 」スタンザがありますstart on
  • 最後の ' start on' スタンザは考慮されますが、ランレベル間にカンマを使用しているため無効です (' stop on' も同じ理由で無効です)。

次のようなものが求められます:

start on runlevel [2345]
stop on runlevel [016]

script
    pydoc -p 7464 /some_path/my_python_package
end script

Upstartのバージョン0.9.7以降(つまりUbuntu Natty以降 - 参照)では、https://wiki.ubuntu.com/NattyNarwhal/TechnicalOverviewアップスタートinit-checkconf) には、スクリプトの構文エラーをチェックする という新しいコマンドがあります。使い方は簡単です:

$ init-checkconf myjob.conf

init-checkconfユーザーとして実行する必要があることに注意してください(ない根)。

また、これをシステム ジョブとして実行していますか (ジョブ ファイルは /etc/init/ にありますか)? その場合、サービスを root として実行する必要は本当にありますか? そうでない場合は、次を参照してください。

http://upstart.ubuntu.com/cookbook/#異なるユーザーとしてジョブを実行する

この場合、そのサービスを本当に root ユーザーとして実行する必要がありますか?

最後に、Upstart Cookbook の残りの部分もぜひご覧になることをお勧めします。

関連情報