web-dev-qa-db-fra.com

démarrer nginx au démarrage avec systemd

Je viens d'installer nginx 1.9 sur un serveur Debian 8. nginx fonctionne bien, quand je lui dis de s'exécuter, mais il ne semble pas charger nginx automatiquement au démarrage.

J'ai essayé de nombreux scripts d'initialisation recommandés sur Internet, mais rien n'a encore fonctionné. Alors maintenant, j'essaie de le comprendre avec systemctl.

~$ 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.

Malheureusement, je ne sais pas ce que signifie "service masqué" et je ne sais pas pourquoi il est masqué.

quand je cours

Sudo nginx

le serveur fonctionne très bien. Alors, j'ai cherché à démasquer le service nginx.

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

ok cool, maintenant je peux démarrer nginx en utilisant systemctl. J'ai donc vérifié si le redémarrage chargerait automatiquement nginx. Mais il ne le fait pas, et je ne sais pas où aller d'ici.

Quelqu'un peut-il m'aider à faire fonctionner nginx automatiquement au démarrage?

18
j0h

Voici ce qui a fonctionné pour moi: https://web.archive.org/web/20150328063215/https://longhandpixels.net/blog/2014/02/install-nginx-debian-ubunt

J'ai ignoré la plupart du document, qui était spécifique à la compilation d'autres versions, de nginx, et je suis passé à "Make it Autostart".

J'ai suivi les instructions là-bas, et maintenant quand je redémarre, nginx 1.9 est en cours d'exécution.

J'apprécie vraiment l'aide et la perspicacité de chacun. Merci à tous!

2
j0h

Vous semblez confondre les opérations d'activation, de démarrage et de masquage.

  • systemctl start, systemctl stop: démarre (arrête) l'unité en question immédiatement ;
  • systemctl enable, systemctl disable: marque (décocher) l'unité pour démarrage automatique au démarrage (d'une manière spécifique à l'unité, décrite dans son [Install] section);
  • systemctl mask, systemctl unmask: interdit (autorise) toutes les tentatives de démarrage de l'unité en question (manuellement ou en tant que dépendance de toute autre unité, y compris les dépendances de la cible de démarrage par défaut). Notez que le marquage pour le démarrage automatique dans systemd est implémenté en ajoutant une dépendance artificielle de la cible de démarrage par défaut à l'unité en question, donc "mask" interdit également le démarrage automatique.

Ce sont donc toutes des opérations distinctes. Parmi ceux-ci, vous voulez systemctl enable.

Réf .: systemctl (1) .

Pour en savoir plus: Lennart Poettering (2011-03-02). "Les trois niveaux de désactivation" . systemd pour les administrateurs . 0pointer.de.

21
intelfx

Correction du lien dans la réponse acceptée afin qu'il redirige vers la bonne page. Mais voici un peu pertinent:

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

/lib/systemd/system/nginx.service ressemble à quelque chose comme:

# 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

à partir des ressources nginx 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
Simone Sanfratello