2012-04-16 2 views
2

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__ 
+0

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

Répondre

2

Here's a section dans la documentation pour votre cas d'utilisation. C'est lié non pas au sudo, mais aux paramètres pty des appels par défaut. Plus d'infos dans la FAQ.

+1

J'ai cherché ça aussi ... :) Génial, merci! –

Questions connexes