web-dev-qa-db-fra.com

nginx ne démarre pas après le redémarrage du serveur

Je suis passé d'une installation 1.2.1 de nargx intégrée à partir de-src à la version 1.4.1 sur Ubuntu 13.04.

Installé via Ubuntu PPA, http://wiki.nginx.org/Install#Ubuntu_PPA . Tout cela a bien fonctionné.

Manuellement, je peux recharger/démarrer/arrêter le service en utilisant

Sudo service nginx <command>

Après le redémarrage du serveur, nginx ne monte pas seul. 

Lors de ma précédente installation manuelle, j'avais un script Upstart écrit à la main dans/etc/init qui fonctionnait bien. L’installation de PPA a mis en place un script /etc/init.d/, je voudrais donc rester avec les méthodes de PPA plutôt que de pirater quelque chose.

C'est peut-être parce que je ne connais pas bien l'interface de service que quelque chose me manque. 

J'ai également vérifié /var/log/nginx/access.log et error.log et je ne vois rien enregistré pendant le processus de démarrage. 

Que dois-je faire pour résoudre ce problème?

14
Geuis

Sudo update-rc.d nginx enable a travaillé pour moi.

24
webjay

Je n'ai pas beaucoup d'expérience avec Ubuntu - mais avez-vous essayé de lancer chkconfig?

Tu peux essayer:

# Sudo update-rc.d nginx defaults

Ou: 

# Sudo apt-get install chkconfig

# Sudo chkconfig nginx on
16
badazzhindu

MISE À JOUR 28 mars 2016

J'ai soumis la petite amélioration au script Ubuntu Upstart, que j'ai proposée ci-dessous, sous forme de demande d'extraction au wiki NGinX. Ma demande d'extraction a été acceptée et le correctif a été fusionné .


Je suis sur Ubuntu 14.04 LTS et avait le même problème; NginX pourrait bien démarrer en utilisant Sudo service nginx restart mais il ne démarre pas automatiquement au démarrage du serveur.

J'ai suivi les instructions de la page NGinX Ubuntu Upstart Wiki, mais cela n'a pas fonctionné (initialement). Alors j'ai creusé un peu. Tout d'abord, j'ai découvert qu'Ubuntu avait essayé de démarrer NGinX au démarrage, mais avait échoué:

$ Sudo cat /var/log/boot.log
...
* Starting nginx http daemon                                            [fail]
...

Ensuite, j'ai trouvé le fichier journal des tâches upctart initctl:

$ cat /var/log/upstart/nginx.log
...
nginx: [emerg] Host not found in upstream "<mydomain>:443" in /etc/nginx/sites-enabled/mydomain:2
...

J'ai donc compris que le script de démarrage de NGinX avait été exécuté avant que l'interface réseau ne soit opérationnelle. Cette réponse d'erreur de serveur m'a donné les astuces dont j'avais besoin pour résoudre le script NginX Ubuntu Upstart. En résumé, un '!' était manquant, IFACE=lo devait être remplacé par IFACE!=lo. Pour plus de commodité, j'ai collé le script complet ci-dessous:

# 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

Après le redémarrage, j'ai vérifié si NGinX fonctionnait maintenant:

$ Sudo initctl list | grep nginx
nginx start/running, process 1551

Je vais informer l'auteur de ce script de mes découvertes.

1
Visionscaper

En plus de la réponse Visionscaper, nginx installé à partir d’un dépôt de confiance standard utilise le fichier de service sysvinit, pas un par un. Ainsi, au lieu de service nginx pour upstart, éditez le service upcart rc-sysinit. C'est une bonne idée d'utiliser des substitutions par défaut pour cela:

# echo "start on (filesystem and net-device-up IFACE!=lo) or failsafe-boot" > /etc/init/rc-sysinit.override
0
reddot