J'ai un script init.d pour nginx qui fonctionne normalement bien. Cependant, après un redémarrage, cela ne fonctionne pas correctement et le processus de travail mourrait, ne laissant que le processus principal.
nginx a compilé quelques éléments mongodb (nginx-gridfs) et doit commencer après mongodb, qui est démarré par upstart.
C'est tout ce que j'ai été capable de comprendre après un dépannage. Je crois que je dois changer plus de nginx pour relancer et le rendre dépendant de mongo. Comment puis je faire ça?
Puisque nginx-gridfs se connecte à mongodb, le serveur de base de données devrait déjà être en cours d'exécution et prêt. Cela posait un problème. J'ai d'abord enlevé le script /etc/init.d/nginx en utilisant 'update-rc.d remove nginx' Ensuite, j'ai créé un script 'upstart' dans /etc/init/nginx.conf:
# nginx
description "nginx http daemon"
#start on mongodb
start on (local-filesystems
and net-device-up IFACE=lo
and started mongodb)
stop on stopped mongodb
env DAEMON=/usr/local/nginx/sbin/nginx
env PID=/usr/local/nginx/logs/nginx.pid
expect fork
respawn
respawn limit 10 5
pre-start script
$DAEMON -t
if [ $? -ne 0 ]
then exit $?
fi
# Add a sleep of 10 sec. to allow mongodb to finish starting up
sleep 10
end script
exec $DAEMON
Cela a résolu le problème pour moi.
Vous ne l’avez probablement pas configuré correctement. Utilisez update-rc.d <yourscript> start [startorder] 2 3 4 5 . stop [end order] 0 1 6 .
pour créer les liens au niveau de l’exécution.
Si votre script est correctement exécuté, il accepte les commandes start
et stop
, vérifiez que toutes les dépendances sont démarrées avant votre script, normalement 40 est sûr pour ordre de démarrage, et que tous les services cela dépend de la fin de votre script avant cela, 20 est probablement suffisant pour endorder.
Pour mieux savoir comment faire un bon script, jetez un coup d'œil à ceux de votre /etc/init.d