Sono finito qui più di una volta, quindi ho pensato di fornire una risposta aggiornata in base alla mia esperienza personale dopo aver utilizzato le risposte qui. Grazie soprattutto a @danorton e @orj per le loro risposte.
Questo script è stato testato su Upstart 1.5 in esecuzione su Ubuntu 12.04 con Nginx 1.0.11 e Passenger 3.0.11. Se non stai utilizzando Passenger, potresti dover giocare con la post-stop
linea. Consultare il libro di cucina Upstart.
In un vuoto /etc/init/nginx.conf
aggiungi le seguenti righe (puoi rimuovere i commenti se vuoi):
description "nginx http daemon"
start on (filesystem and net-device-up IFACE=lo)
stop on runlevel [!2345]
env DAEMON=/usr/local/nginx/sbin/nginx
env PIDFILE=/var/run/nginx.pid
# Needed to allow Nginx to start, however, the wrong PID will be tracked
expect fork
# Test the nginx configuration (Upstart will not proceed if this fails)
pre-start exec $DAEMON -t
# Ensure nginx is shutdown gracefully
# Upstart will be tracking the wrong PID so the following is needed to stop nginx
post-stop exec start-stop-daemon --stop --pidfile $PIDFILE --name nginx --exec $DAEMON --signal QUIT
# Start Nginx
exec $DAEMON
Ho preso lo script Upstart dal Wiki di Nginx e l'ho modificato in quanto un numero di righe non sono necessarie, causano confusione o non funzionano.
Potrebbe essere necessario modificare env DAEMON
e le env PID
linee a seconda di dove hai installato nginx e stai scrivendo il PID. Il PID può essere configurato in nginx.
Ho provato tutte le forme di expect
. expect fork
Sembra solo funzionare. Con Passenger nginx crea 61 forchette. Upstart richiede 0, 1 o 2. Come altri hanno suggerito, Upstart seguirà il PID errato. Ho anche rimosso respawn
in quanto probabilmente non fa nulla per lo stesso motivo. Alcuni script pre / post avvio aggiuntivi potrebbero essere in grado di risolverlo afferrando il vero PID. Tuttavia, utilizzo Monit per gestire i riavvii, quindi non ne ho bisogno.
Non usare daemon off
. Questo è solo per lo sviluppo. Vedi http://wiki.nginx.org/CoreModule#daemon
Riferimenti: