ファブリックを使用してEC2サーバーを構築していて、pyapns用のTwistedサーバーを起動したいと思います。スクリプトを起動するいくつかの異なる方法を試しました。スクリプトsudo(...)
を作成するには、を呼び出すだけinit.d
です。
コマンドは次のように機能します。
/usr/local/bin/twistd -r epoll -u www-data -g www-data -l /var/log/apnslistener.log --pidfile=/var/run/apnslistener.pid web --class=pyapns.server.APNSServer --port=7077 -l /var/log/pyapns.log
ファブリックを使用する場合、上記の行を直接呼び出すか、スクリプトの起動にsudo(...)
使用するかにかかわらず、プロセスは実際には正常に起動しません。ボックスにログインして直接起動すると、プロセスは起動されたままになります。sudo
init.d
ファブリックを介して動作するようになりましたが、init.dスクリプトを3回起動してから固執する必要があります。ロギング--spew
は例外を示していません。3回実行しないと、.pidファイルでさえ作成されません。
なぜこれが起こっているのかをどこから始めればよいのかわからなくなり、3xハックは100%一貫して機能します。何か案は?ありがとう!
編集
の出力/var/log/apnslistener.log
は次のとおりです。サーバーが3回目だけ正常に起動したことに注目してください。
2012-04-16 01:52:08+0000 [-] Log opened.
2012-04-16 01:52:08+0000 [-] twistd 12.0.0 (/usr/bin/python 2.7.2) starting up.
2012-04-16 01:52:08+0000 [-] reactor class: twisted.internet.epollreactor.EPollReactor.
2012-04-16 01:52:09+0000 [-] Log opened.
2012-04-16 01:52:09+0000 [-] twistd 12.0.0 (/usr/bin/python 2.7.2) starting up.
2012-04-16 01:52:09+0000 [-] reactor class: twisted.internet.epollreactor.EPollReactor.
2012-04-16 01:52:10+0000 [-] Log opened.
2012-04-16 01:52:10+0000 [-] twistd 12.0.0 (/usr/bin/python 2.7.2) starting up.
2012-04-16 01:52:10+0000 [-] reactor class: twisted.internet.epollreactor.EPollReactor.
2012-04-16 01:52:10+0000 [-] Site starting on 7077
2012-04-16 01:52:10+0000 [-] Starting factory <twisted.web.server.Site instance at 0x1c6dc20>
2012-04-16 01:52:10+0000 [-] set uid/gid 33/33
2012-04-16 01:52:12+0000 [HTTPChannel,0,127.0.0.1] APNSService __init__