it-swarm.com.de

Starten Sie nginx beim Booten mit systemd

Ich habe gerade nginx 1.9 auf einem Debian 8-Server installiert. nginx funktioniert einwandfrei, wenn ich es ausführe, aber es scheint nginx beim Booten nicht automatisch zu laden.

Ich habe zahlreiche im Internet empfohlene Init-Skripte ausprobiert, aber noch hat nichts funktioniert. Jetzt versuche ich es mit systemctl herauszufinden.

~$ systemctl status nginx
● nginx.service
   Loaded: masked (/dev/null)
   Active: inactive (dead)
~$ Sudo systemctl try-restart nginx
Failed to try-restart nginx.service: Unit nginx.service is masked.
~$ Sudo systemctl reload nginx
Failed to reload nginx.service: Unit nginx.service is masked.
~$ Sudo systemctl reload nginx
Failed to reload nginx.service: Unit nginx.service is masked.

Leider weiß ich nicht, was "Dienst ist maskiert" bedeutet, und ich weiß nicht, warum er maskiert ist.

wenn ich renne

Sudo nginx

der Server läuft einwandfrei. Also habe ich versucht, den Nginx-Service zu entlarven.

~$ Sudo systemctl unmask nginx.service
Removed symlink /etc/systemd/system/nginx.service.

ok cool, jetzt kann ich nginx mit systemctl starten. Also habe ich geprüft, ob ein Neustart nginx automatisch laden würde. Aber das tut es nicht und ich habe keine Ahnung, wohin ich von hier aus gehen soll.

Kann mir jemand helfen, Nginx beim Booten automatisch zum Laufen zu bringen?

18
j0h

Hier ist, was für mich funktioniert hat: https://web.archive.org/web/20150328063215/https://longhandpixels.net/blog/2014/02/install-nginx-debian-ubunt

Ich habe den größten Teil des Dginx-Dokuments, das speziell für das Kompilieren anderer Versionen vorgesehen war, ignoriert und bin zu "Make it Autostart" übergegangen.

Ich habe die Anweisungen dort befolgt und jetzt, wenn ich neu starte, läuft Nginx 1.9.

Ich schätze auf jeden Fall die Hilfe und den Einblick aller. Danke euch allen!

2
j0h

Sie scheinen die Aktivierungs-, Start- und Maskierungsvorgänge zu verwirren.

  • systemctl start, systemctl stop: startet (stoppt) die betreffende Einheit sofort ;
  • systemctl enable, systemctl disable: markiert (hebt die Markierung auf) die Einheit für Autostart beim Booten (auf eine einheitenspezifische Weise, beschrieben in ihrem [Install] Sektion);
  • systemctl mask, systemctl unmask: verbietet (erlaubt) alle Versuche, die betreffende Einheit zu starten (entweder manuell oder als Abhängigkeit einer anderen Einheit, einschließlich der Abhängigkeiten des Standardstartziels). Beachten Sie, dass die Markierung für den Autostart in systemd implementiert wird, indem der betreffenden Einheit eine künstliche Abhängigkeit vom Standardstartziel hinzugefügt wird, sodass "mask" auch den Autostart nicht zulässt.

Das sind also alles verschiedene Operationen. Von diesen wollen Sie systemctl enable.

Ref.: systemctl (1) .

Mehr: Lennart Poettering (02.03.2011). "Die drei Ebenen von Aus" . systemd für Administratoren . 0pointer.de.

21
intelfx

Der Link in der akzeptierten Antwort wurde korrigiert, sodass er zur richtigen Seite weiterleitet. Aber hier ist ein relevantes Stück:

Sudo systemctl enable nginx.service
Sudo systemctl start nginx.service
Sudo systemctl status nginx.service

wo /lib/systemd/system/nginx.service sieht ungefähr so ​​aus:

# Stop dance for nginx
# =======================
#
# ExecStop sends SIGSTOP (graceful stop) to the nginx process.
# If, after 5s (--retry QUIT/5) nginx is still running, systemd takes control
# and sends SIGTERM (fast shutdown) to the main process.
# After another 5s (TimeoutStopSec=5), and if nginx is alive, systemd sends
# SIGKILL to all the remaining processes in the process group (KillMode=mixed).
#
# nginx signals reference doc:
# http://nginx.org/en/docs/control.html
#
[Unit]
Description=A high performance web server and a reverse proxy server
After=network.target

[Service]
Type=forking
PIDFile=/run/nginx.pid
ExecStartPre=/usr/sbin/nginx -t -q -g 'daemon on; master_process on;'
ExecStart=/usr/sbin/nginx -g 'daemon on; master_process on;'
ExecReload=/usr/sbin/nginx -g 'daemon on; master_process on;' -s reload
ExecStop=-/sbin/start-stop-daemon --quiet --stop --retry QUIT/5 --pidfile /run/nginx.pid
TimeoutStopSec=5
KillMode=mixed

[Install]
WantedBy=multi-user.target

`
2
luxagraf

aus Nginx-Ressourcen https://www.nginx.com/resources/wiki/start/topics/examples/systemd/

echo "
[Unit]
Description=The NGINX HTTP and reverse proxy server
After=syslog.target network.target remote-fs.target nss-lookup.target

[Service]
Type=forking
PIDFile=/run/nginx.pid
ExecStartPre=/usr/sbin/nginx -t
ExecStart=/usr/sbin/nginx
ExecReload=/bin/kill -s HUP $MAINPID
ExecStop=/bin/kill -s QUIT $MAINPID
PrivateTmp=true

[Install]
WantedBy=multi-user.target
" > /lib/systemd/system/nginx.service
1