it-swarm.com.de

nginx startet nach dem Neustart des Servers nicht

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?

14
Geuis

Sudo update-rc.d nginx enable arbeitete für mich.

24
webjay

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
16
badazzhindu

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.

1
Visionscaper

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
0
reddot