[gelöst] nginx init-Script auf andere Installation

Alle weiteren Dienste, die nicht in die drei oberen Foren gehören.
Antworten
m@ddin
Beiträge: 203
Registriert: 28.05.2006 20:43:10
Kontaktdaten:

[gelöst] nginx init-Script auf andere Installation

Beitrag von m@ddin » 03.08.2011 18:43:45

Hallo Leute,

ich hab mir nginx installiert, musste aber danach ein neues Modul mit einfügen und somit Nginx selbst kompilieren. Jetzt wollte ich mir es weiterhin bequem machen und den selbst kompilierten Nginx ebenfalls über ein init-Script starten und stoppen.

Ich hab mir dazu das originale Nginx-Skript unter /etc/init.d angesehen und dieses entsprechende geändert. Soweit scheint es auch zu funktionieren, starte ich den selbst kompilierten Nginx über /etc/init.d/nginx start so startet auch der entsprechende Server, nämlich nicht der über aptitude installiert, sondern der selbst kompilierte (liegt unter /opt/nginx).

Das Problem ist das stoppen und neustarten: führe ich /etc/init.d/nginx stop aus, gibt es zwar keine Fehlermeldung, aber nginx wird nicht gestoppt. Dadurch kann ich auch kein Restart ausführen, weil das Stoppen nicht funktioniert.

Ich hab mir das init-Skript genauer angeschaut und es gibt dort eine Variable, in der die Nginx-Binary angegeben wird. Diese habe ich von /usr/sbin/nginx auf /opt/nginx/sbin/nginx geändert. Ansonsten gab es eigentlich keine Änderungen.

Hab ich etwas übersehen oder weiß jemand wonach ich suchen kann, um rauszufinden warum Nginx nicht gestoppt wird? Syslog liefert nämlich keine Meldung!

Danke,
Martin
Zuletzt geändert von m@ddin am 04.08.2011 23:54:38, insgesamt 1-mal geändert.

rendegast
Beiträge: 15041
Registriert: 27.02.2006 16:50:33
Lizenz eigener Beiträge: MIT Lizenz

Re: nginx init-Script auf andere Installation umschreiben

Beitrag von rendegast » 03.08.2011 19:20:43

Versuche doch erstmal herauszufinden, wie die Stop-Befehle direkt wirken:
Hier aus den /etc/init.d/nginx der Pakete nginx und nginx-common:

Code: Alles auswählen

# grep start-stop.*stop  nginx_* -A1
nginx_c:                start-stop-daemon --stop --quiet --pidfile /var/run/$NAME.pid \
nginx_c-                    --exec $DAEMON || true
--
nginx_c:                start-stop-daemon --stop --quiet --pidfile \
nginx_c-                    /var/run/$NAME.pid --exec $DAEMON || true
--
nginx_c:                start-stop-daemon --stop --signal HUP --quiet --pidfile /var/run/$NAME.pid \
nginx_c-                    --exec $DAEMON || true
--
nginx_n:        start-stop-daemon --stop --quiet --pidfile /var/run/$NAME.pid \
nginx_n-                --exec $DAEMON || true
--
nginx_n:        start-stop-daemon --stop --quiet --pidfile \
nginx_n-                /var/run/$NAME.pid --exec $DAEMON || true
--
nginx_n:        start-stop-daemon --stop --signal HUP --quiet --pidfile /var/run/$NAME.pid \
nginx_n-            --exec $DAEMON || true
("_c" ist das aus nginx-common, "_n" ist das aus nginx-"normal".
Die beiden Dateien sind seltsamerweise nur fast gleich.)

Entspricht der Inhalt aus $NAME.pid der PID des Prozesses?

(Das HUP ist der Befehl zum Konfig-Reload.)
Welches kill-Signal muß geschickt werden, damit nginx beendet wird?
-> mit zBsp. '[h]top' ausprobieren.
Eventuell reicht bei Dir das normale TERM nicht (hatte ich heute gerade mit slim 1.3.1-8).


nginx.pid wird eigentlich im init-Skript verwendet und gesetzt.
Es taucht aber (leider) auch in der Konfig auf.
Eventuell stimmen Deine beiden nicht überein?



Syslog liefert nämlich keine Meldung!
nginx scheint selbst nach /var/log/nginx/ zu loggen, jedenfalls die debian-Versionen.
Kannst Du prüfen mit

Code: Alles auswählen

lsof | grep /var/log
resp.
lsof | grep nginx
mfg rendegast
-----------------------
Viel Eifer, viel Irrtum; weniger Eifer, weniger Irrtum; kein Eifer, kein Irrtum.
(Lin Yutang "Moment in Peking")

m@ddin
Beiträge: 203
Registriert: 28.05.2006 20:43:10
Kontaktdaten:

Re: nginx init-Script auf andere Installation umschreiben

Beitrag von m@ddin » 04.08.2011 23:53:59

Hi,

danke für deine Antwort! Hat mich auf die richtige Idee gebracht. Ich hab es mal manuell über start-stop-daemon versucht und das Starten ging da auch ohne Probleme. Beim Stoppen hieß es aber, dass angeblich keine nginx-Instanz laufen würde.

Kurz um: der Start-Stop-Daemon hat das PID-File unter /var/run/nginx.pid gesucht und mein selbst kompilierter Nginx hat das PID-File nach /opt/local/nginx/log/nginx.pid geschrieben.

Das einmal geändert und schon funktioniert alles :)

Danke dir & viele Grüße
Martin

Antworten