Saya berakhir di sini lebih dari sekali jadi saya pikir saya akan memberikan jawaban yang diperbarui berdasarkan pengalaman saya sendiri setelah menggunakan jawaban di sini. Terima kasih terutama kepada @danorton dan @orj atas jawaban mereka.
Script ini telah diuji pada Upstart 1.5 yang berjalan di Ubuntu 12.04 dengan Nginx 1.0.11 dan Passenger 3.0.11. Jika Anda tidak menggunakan Penumpang, Anda mungkin perlu bermain-main dengan post-stop
garis. Lihat buku masak pemula.
Dalam kosong /etc/init/nginx.conf
tambahkan baris berikut (Anda dapat menghapus komentar jika Anda suka):
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
Saya telah mengambil skrip Pemula dari Nginx Wiki dan mengubahnya karena sejumlah baris tidak diperlukan, menyebabkan kebingungan atau tidak berfungsi.
Anda mungkin perlu mengubah env DAEMON
dan env PID
baris tergantung di mana Anda telah menginstal nginx dan sedang menulis PID. PID dapat dikonfigurasi dalam nginx.
Saya mencoba semua bentuk expect
. expect fork
Sepertinya hanya berfungsi. Dengan Penumpang nginx menciptakan 61 garpu. Pemula membutuhkan 0, 1 atau 2. Seperti orang lain telah mengisyaratkan, Pemula akan melacak PID yang salah. Saya juga dihapus respawn
karena tidak melakukan apa-apa mungkin karena alasan yang sama. Beberapa skrip pre / post-start tambahan mungkin dapat memperbaikinya dengan meraih PID yang sebenarnya. Saya, bagaimanapun, menggunakan monit untuk menangani restart sehingga tidak membutuhkannya.
Jangan gunakan daemon off
. Ini hanya untuk pengembangan. Lihat http://wiki.nginx.org/CoreModule#daemon
Referensi: