J'ai un problème que je tente de résoudre depuis quelques jours maintenant et je ne sais pas quoi faire; je cherchais des réponses, mais toutes celles que j'ai trouvées ne m'ont pas aidé.
Je suis un peu nouveau ici et j’espère vraiment que l’on pourra m'aider ..__ Vous pouvez me dire quelles informations je dois donner dans l’espoir de trouver une solution.
$ systemctl status nginx.service
nginx.service - Startup script for nginx service
Loaded: loaded (/usr/lib/systemd/system/nginx.service; enabled; vendor preset: disabled)
Active: failed (Result: exit-code) since Tue 2016-03-08 13:23:35 GMT; 2min 20s ago
Mar 08 13:23:33 startdedicated.com nginx[8315]: nginx: [emerg] bind() to ------------ f...e)
Mar 08 13:23:33 startdedicated.com nginx[8315]: nginx: [emerg] bind() to ----- f...e)
Mar 08 13:23:34 startdedicated.com nginx[8315]: nginx: [emerg] bind() to ----- f...e)
Mar 08 13:23:34 startdedicated.com nginx[8315]: nginx: [emerg] bind() to ----- f...e)
Mar 08 13:23:35 startdedicated.com nginx[8315]: nginx: [emerg] bind() to ----- f...e)
Mar 08 13:23:35 .startdedicated.com nginx[8315]: nginx: [emerg] still could not bind()
Mar 08 13:23:35 startdedicated.com systemd[1]: nginx.service: control process exited, code=...=1
Mar 08 13:23:35 startdedicated.com systemd[1]: Failed to start Startup script for nginx service.
Mar 08 13:23:35 startdedicated.com systemd[1]: Unit nginx.service entered failed state.
Mar 08 13:23:35 startdedicated.com systemd[1]: nginx.service failed.
Peut s'avérer utile pour vérifier la syntaxe des fichiers de configuration de Nginx en exécutant:
nginx -t -c /etc/nginx/nginx.conf
Essayez d’exécuter les deux commandes suivantes:
Sudo fuser -k 80/tcp
Sudo fuser -k 443/tcp
Puis exécuter
Sudo service nginx restart
Si cela a fonctionné , votre fournisseur d'hébergement installera peut-être Apache sur votre serveur par défaut lors d'une nouvelle installation. Continuez donc votre lecture pour obtenir un correctif plus permanent. Si cela n'a pas fonctionné , continuez à lire pour identifier le problème.
Exécutez nginx -t
et s'il ne retourne rien, je vérifierais le journal des erreurs Nginx. Par défaut, il devrait être situé dans /var/log/nginx/error.log
.
Vous pouvez l'ouvrir avec n'importe quel éditeur de texte: Sudo nano /var/log/nginx/error.log
Pouvez-vous trouver quelque chose de suspect ici?
Le deuxième journal que vous pouvez vérifier est le suivant
Sudo nano /var/log/syslog
Lorsque j'ai eu ce problème, c'était parce que mon fournisseur d'hébergement installait automatiquement Apache lors d'une installation propre. Il bloquait le port 80.
Lorsque j’ai exécuté Sudo nano /var/log/nginx/error.log
, j’ai reçu ce qui suit comme journal des erreurs:
2018/08/04 06:17:33 [emerg] 634#0: bind() to 0.0.0.0:80 failed (98: Address already in use)
2018/08/04 06:17:33 [emerg] 634#0: bind() to [::]:80 failed (98: Address already in use)
2018/08/04 06:17:33 [emerg] 634#0: bind() to 0.0.0.0:80 failed (98: Address already in use)
Ce que dit l'erreur ci-dessus, c'est qu'il n'a pas été possible de lier nginx au port 80, car il était déjà utilisé.
Pour résoudre ce problème, vous devez exécuter les éléments suivants:
yum install net-tools
Sudo netstat -tulpn
Lorsque vous exécutez ce qui précède, vous obtenez quelque chose comme ce qui suit:
Proto Recv-Q Send-Q Local Address Foreign Address State PID/Program name
tcp 0 0 0.0.0.0:80 0.0.0.0:* LISTEN 1762/httpd
tcp 0 0 0.0.0.0:22 0.0.0.0:* LISTEN 1224/sshd
tcp 0 0 127.0.0.1:25 0.0.0.0:* LISTEN 1528/sendmail:acce
tcp6 0 0 :::22 :::* LISTEN 1224/sshd
Vous pouvez voir que le port 80 est bloqué par httpd (Apache). Cela pourrait également être le port 443 si vous utilisez SSL.
Obtenez le PID du processus qui utilise le port 80 ou 443. Et envoyez la commande kill en changeant la valeur <PID>
:
Sudo kill -2 <PID>
Notez dans mon exemple que la valeur PID d’Apache était 1762
et que j’exécuterais donc Sudo kill -2 1762
Sinon, vous pouvez exécuter les tâches suivantes:
Sudo fuser -k 80/tcp
Sudo fuser -k 443/tcp
Maintenant que le port 80 ou 443 est vide, vous pouvez démarrer Nginx en lançant ce qui suit:
Sudo service nginx restart
Il est également conseillé de supprimer tout ce qui bloquait auparavant les ports 80 et 443. Ceci évitera tout conflit à l'avenir. Apache (httpd) bloquant mes ports, je l'ai supprimé en exécutant ce qui suit:
yum remove httpd httpd-devel httpd-manual httpd-tools mod_auth_kerb mod_auth_mysql mod_auth_pgsql mod_authz_ldap mod_dav_svn mod_dnssd mod_nss mod_Perl mod_revocator mod_ssl mod_wsgi
J'espère que cela t'aides.
Essayez de déboguer avec la commande:
$ service nginx configtest
Ce qui sort quelque chose comme:
Testing nginx configuration: nginx: [emerg] unknown directive "stub_status" in /etc/nginx/sites-enabled/nginx_status:11 nginx: configuration file /etc/nginx/nginx.conf test failed
Et réparer ces avertissements
Puis redémarrez nginx
Lorsque quelque chose ne peut pas être lié à un port, il atteint 5% car il ne démarre pas par root (sticky suid bit, Sudo) et 94% parce qu'une autre application est déjà liée à ce port.
Assurez-vous que nginx est vraiment à l'arrêt et que vous n'essayez pas de le démarrer deux fois par accident.
Assurez-vous de ne pas utiliser Apache ou d’autres services utilisant le port 80.
Utilisez netstat -a | grep tcp
pour en savoir plus.
J'ai eu le même problème lorsque j'ai utilisé Vesta, qui utilise nginx avec Apache. Le problème était qu'après avoir appliqué toutes les mises à jour, Apache a commencé à écouter 443 pour https. La solution consistait simplement à commenter les éléments 443 dans ports.conf. En effet, nginx utilise également ce port.
ps ax | grep nginx
tuer -9 PID
service nginx start
.__ ou rétablissez/etc/nginx/sites-available/default
emplacement/{
# Première tentative de servir la demande sous forme de fichier, puis
# en tant que répertoire, puis revient à l'affichage d'un 404.
try_files $ uri $ uri/= 404;
}
changer le port peut aider car le port 80 utilise déjà quelque partvi /etc/nginx/sites-available/defaultChanger le port: listen 8080 default_server; listen [::]: 8080 default_server;
Essayez de définir un utilisateur dans nginx.conf. C'est peut-être pour cette raison qu'il ne peut pas démarrer le service:
User www-data;