Buraya bir kereden fazla geldim, bu yüzden buradaki cevapları kullandıktan sonra kendi deneyimlerime dayanarak güncellenmiş bir cevap sağlayacağımı düşündüm. Cevapları için özellikle @ danorton ve @ orj'a teşekkürler.
Bu komut dosyası, Ubuntu 12.04 üzerinde Nginx 1.0.11 ve Passenger 3.0.11 ile çalışan Upstart 1.5 üzerinde test edilmiştir. Yolcu kullanmıyorsanız, post-stop
hatla oynamanız gerekebilir . Upstart yemek kitabına bakın.
Boş bir /etc/init/nginx.conf
satırda aşağıdaki satırları ekleyin (İsterseniz yorumları kaldırabilirsiniz):
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
Upstart betiğini Nginx Wiki'den aldım ve bir dizi satıra ihtiyaç duyulmadığı, karışıklığa neden olduğu veya çalışmadığı için değiştirdim.
Nginx'i yüklediğiniz yere ve PID'yi yazdığınız yere bağlı olarak değiştirmeniz env DAEMON
ve env PID
satır yapmanız gerekebilir . PID, nginx olarak yapılandırılabilir.
Tüm biçimlerini denedim expect
. Sadece expect fork
işe yarıyor gibi görünüyor. Yolcu ile nginx 61 çatal oluşturur. Upstart, 0, 1 veya 2 gerektirir. Diğerleri ima ettiği gibi, Upstart yanlış PID'yi izleyecektir. respawn
Muhtemelen aynı nedenden dolayı hiçbir şey yapmadığı için de kaldırdım . Bazı ek başlatma öncesi / sonrası komut dosyaları, gerçek PID'yi yakalayarak bunu düzeltebilir. Ancak, yeniden başlatmak için monit kullanın, bu yüzden gerek yok.
Kullanmayın daemon off
. Bu sadece geliştirme amaçlıdır. Bkz. Http://wiki.nginx.org/CoreModule#daemon
Referanslar: