Ich habe von einer eingebauten src nginx 1.2.6-Installation zu Ubuntu 13.04 auf 1.4.1 umgestellt.
Über Ubuntu PPA installiert, http://wiki.nginx.org/Install#Ubuntu_PPA . Das hat alles super geklappt.
Manuell kann ich den Dienst mit neu laden/starten/stoppen
Sudo service nginx <command>
Nach dem Neustart des Servers wird nginx nicht von alleine gestartet.
In meiner vorherigen manuellen Installation hatte ich ein handgeschriebenes Upstart-Skript in/etc/init, das gut funktionierte. Bei der PPA-Installation wurde ein Skript /etc/init.d/ eingerichtet. Ich möchte lieber bei den PPA-Methoden bleiben, anstatt etwas zu hacken.
Es kann sein, dass ich mit der Service-Schnittstelle nicht sehr vertraut bin, dass etwas fehlt, was ich vermisse.
Ich habe auch /var/log/nginx/access.log und error.log überprüft und nichts während des Startvorgangs aufgezeichnet.
Was muss ich tun, um das Problem zu beheben?
Sudo update-rc.d nginx enable
arbeitete für mich.
Ich habe nicht viel Erfahrung mit Ubuntu - aber haben Sie versucht, chkconfig auszuführen?
Du kannst es versuchen:
# Sudo update-rc.d nginx defaults
Oder:
# Sudo apt-get install chkconfig
# Sudo chkconfig nginx on
UPDATE 28. März 2016
Ich habe die kleine Verbesserung des Ubuntu Upstart-Skripts, die ich unten vorgeschlagen habe, als Pull-Anfrage an das NGinX-Wiki übermittelt. Meine Pull-Anfrage wurde akzeptiert und der Patch wurde zusammengeführt .
Ich bin auf Ubuntu 14.04 LTS und hatte das gleiche Problem; NginX konnte mit Sudo service nginx restart
problemlos gestartet werden, wurde jedoch beim Booten des Servers nicht automatisch gestartet.
Ich habe die Anweisungen der NGinX Ubuntu Upstart Wiki-Seite befolgt, aber es hat nicht funktioniert (anfangs). Also habe ich ein bisschen herumgegraben. Zuerst habe ich festgestellt, dass Ubuntu beim Start von NGinX versucht hat, aber es ist fehlgeschlagen:
$ Sudo cat /var/log/boot.log
...
* Starting nginx http daemon [fail]
...
Dann fand ich die Protokolldatei der initctl-Upstart-Jobs:
$ cat /var/log/upstart/nginx.log
...
nginx: [emerg] Host not found in upstream "<mydomain>:443" in /etc/nginx/sites-enabled/mydomain:2
...
So stellte ich fest, dass das NGinX-Startskript ausgeführt wurde, bevor die Netzwerkschnittstelle aktiv war. Diese Serverfehlerantwort gab mir die Hinweise, die ich brauchte, um das NginX Ubuntu Upstart-Skript zu reparieren. Zusammenfassend ein "!" fehlte, IFACE=lo
musste in IFACE!=lo
geändert werden. Zur Vereinfachung habe ich das vollständige Skript unten eingefügt:
# nginx
description "nginx http daemon"
author "George Shammas <[email protected]>"
start on (filesystem and net-device-up IFACE!=lo)
stop on runlevel [!2345]
env DAEMON=/usr/sbin/nginx
env PID=/var/run/nginx.pid
expect fork
respawn
respawn limit 10 5
#oom never
pre-start script
$DAEMON -t
if [ $? -ne 0 ]
then exit $?
fi
end script
exec $DAEMON
Nach dem Neustart habe ich überprüft, ob NGinX jetzt läuft:
$ Sudo initctl list | grep nginx
nginx start/running, process 1551
Ich werde den Autor dieses Skripts über meine Ergebnisse informieren.
Zusätzlich zu der Antwort von Visionscaper verwendet nginx, das von Standard-Repositorys für vertrauenswürdige Produkte installiert wird, die sysvinit-Servicedatei, nicht die erste. Also anstelle des Nginx-Dienstes für Upstart-Edit-rc-sysinit-Upstart-Dienst. Es ist eine gute Idee, Upstart-Überschreibungen dafür zu verwenden:
# echo "start on (filesystem and net-device-up IFACE!=lo) or failsafe-boot" > /etc/init/rc-sysinit.override