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
[gelöst] nginx init-Script auf andere Installation
[gelöst] nginx init-Script auf andere Installation
Zuletzt geändert von m@ddin am 04.08.2011 23:54:38, insgesamt 1-mal geändert.
Re: nginx init-Script auf andere Installation umschreiben
Versuche doch erstmal herauszufinden, wie die Stop-Befehle direkt wirken:
Hier aus den /etc/init.d/nginx der Pakete nginx und nginx-common: ("_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?
Kannst Du prüfen mit
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
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?
nginx scheint selbst nach /var/log/nginx/ zu loggen, jedenfalls die debian-Versionen.Syslog liefert nämlich keine Meldung!
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")
-----------------------
Viel Eifer, viel Irrtum; weniger Eifer, weniger Irrtum; kein Eifer, kein Irrtum.
(Lin Yutang "Moment in Peking")
Re: nginx init-Script auf andere Installation umschreiben
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
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