Je construis un serveur EC2 en utilisant fabric, et je veux lancer un serveur Twisted pour pyapns. J'ai essayé plusieurs façons de lancer le script - en appelant simplement sudo(...)
, pour créer un script init.d
.EC2 build avec Fabric nécessite le démarrage du serveur Twisted au moins 3x
La commande correspond à quelque chose comme ceci:
/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
Lorsque vous utilisez le tissu, que vous appeliez la ligne ci-dessus directement par sudo(...)
ou en utilisant sudo
pour lancer le script init.d
, le processus ne sera pas réellement avec succès le lancement. Si je me connecte à la boîte et que je la lance directement, le processus reste lancé.
Je l'ai eu à travailler à travers le tissu, mais je dois lancer le script init.d 3 fois avant qu'il ne colle. La journalisation avec --spew
ne montre aucune exception. Si je ne l'exécute pas 3 fois, même le fichier .pid ne sera jamais créé.
Je ne sais pas par où commencer pour comprendre pourquoi cela se produit, et le hack 3x fonctionne à 100% de manière cohérente. Des idées? Merci!
EDIT
La sortie de /var/log/apnslistener.log
est le suivant. Notez comment le serveur est seulement démarré avec succès la 3ème fois.
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__
Y a-t-il une sortie au-delà du fichier journal, c'est-à-dire sur stderr? Je ne connais pas assez le tissu pour dire où chercher cela. Lorsque vous dites "lancer directement", voulez-vous dire lancer le script init.d ou appeler la ligne de commande qui commence par '/ usr/local/bin/twistd'? – Glyph