web-dev-qa-db-fra.com

Erreur lors de l'installation de Nginx sur Ubuntu 16.04

Je continue d’obtenir cette erreur en essayant d’installer nginx. J'ai essayé de le réinstaller plusieurs fois, mais cette erreur continue à apparaître et je ne parviens pas à démarrer nginx.

Appréciez toute aide!

Job for nginx.service failed because the control process exited with error code. See "systemctl status nginx.service" and "journalctl -xe" for details.
invoke-rc.d: initscript nginx, action "start" failed.
● nginx.service - A high performance web server and a reverse proxy server
   Loaded: loaded (/lib/systemd/system/nginx.service; enabled; vendor preset: enabled)
   Active: failed (Result: exit-code) since Mon 2017-03-27 21:38:51 PHT; 10ms ago
  Process: 28178 ExecStart=/usr/sbin/nginx -g daemon on; master_process on; (code=exited, status=1/FAILURE)
  Process: 28174 ExecStartPre=/usr/sbin/nginx -t -q -g daemon on; master_process on; (code=exited, status=0/SUCCESS)

Mar 27 21:38:49 nico-Aspire-E5-575G nginx[28178]: nginx: [emerg] bind() to 0.0.0.0:80 failed (98: Address already in use)
Mar 27 21:38:49 nico-Aspire-E5-575G nginx[28178]: nginx: [emerg] bind() to 0.0.0.0:80 failed (98: Address already in use)
Mar 27 21:38:50 nico-Aspire-E5-575G nginx[28178]: nginx: [emerg] bind() to 0.0.0.0:80 failed (98: Address already in use)
Mar 27 21:38:50 nico-Aspire-E5-575G nginx[28178]: nginx: [emerg] bind() to 0.0.0.0:80 failed (98: Address already in use)
Mar 27 21:38:51 nico-Aspire-E5-575G nginx[28178]: nginx: [emerg] bind() to 0.0.0.0:80 failed (98: Address already in use)
Mar 27 21:38:51 nico-Aspire-E5-575G nginx[28178]: nginx: [emerg] still could not bind()
Mar 27 21:38:51 nico-Aspire-E5-575G systemd[1]: nginx.service: Control process exited, code=exited status=1
Mar 27 21:38:51 nico-Aspire-E5-575G systemd[1]: Failed to start A high performance web server and a reverse proxy server.
Mar 27 21:38:51 nico-Aspire-E5-575G systemd[1]: nginx.service: Unit entered failed state.
Mar 27 21:38:51 nico-Aspire-E5-575G systemd[1]: nginx.service: Failed with result 'exit-code'.
dpkg: error processing package nginx-core (--configure):
 subprocess installed post-installation script returned error exit status 1
dpkg: dependency problems prevent configuration of nginx:
 nginx depends on nginx-core (>= 1.10.0-0ubuntu0.16.04.4) | nginx-full (>= 1.10.0-0ubuntu0.16.04.4) | nginx-light (>= 1.10.0-0ubuntu0.16.04.4) | nginx-extras (>= 1.10.0-0ubuntu0.16.04.4); however:
  Package nginx-core is not configured yet.
  Package nginx-full is not installed.
  Package nginx-light is not installed.
  Package nginx-extras is not installed.
 nginx depends on nginx-core (<< 1.10.0-0ubuntu0.16.04.4.1~) | nginx-full (<< 1.10.0-0ubuntu0.16.04.4.1~) | nginx-light (<< 1.10.0-0ubuntu0.16.04.4.1~) | nginx-extras (<< 1.10.0-0ubuntu0.16.04.4.1~); however:
  Package nginx-core is not configured yet.
  Package nginx-full is not installed.
  Package nginx-light is not installed.
  Package nginx-extras is not installed.

dpkg: error processing package nginx (--configure):
 dependency problems - leaving unconfigured
No apport report written because the error message indicates its a followup error from a previous failure.
                                                                                                          Processing triggers for systemd (229-4ubuntu16) ...
Processing triggers for ureadahead (0.100.0-19) ...
Processing triggers for ufw (0.35-0ubuntu2) ...
Errors were encountered while processing:
 nginx-core
 nginx
E: Sub-process /usr/bin/dpkg returned an error code (1)
5
Karl Jamoralin

Quelque chose est déjà en cours d’exécution sur le port 80. Ainsi, lorsque nginx essaie de démarrer et de prendre ce port, il échoue. Vérifiez ce qui fonctionne sur votre port 80 et arrêtez-le. Vous pouvez découvrir ce qui utilise le port 80 avec:

Sudo netstat -lnp | grep 0.0.0.0:80

Une fois que vous avez trouvé ce qui utilise le port, effectuez un systemctl stop pour l’arrêter et essayez de redémarrer nginx. N'oubliez pas que vous devrez désactiver cet autre service de manière permanente pour que nginx fonctionne correctement.

8
ddulic

Je me suis retrouvé dans la même situation en sélectionnant une option par défaut sous Debian 9 lors d’une installation de machine virtuelle sur VirtualBox. Je suppose que quelque chose de similaire peut être arrivé à OP.

(...)
Choose software to install
[ ] Desktop environment
[*] Web Server
(...)

Cela installera Apache et activera/démarrera son service immédiatement. Si votre distribution utilise systemd, vous pouvez vérifier si c'est le cas:

Sudo systemctl list-units | grep Apache

Qui montre:

Apache2.service
      loaded active running   The Apache HTTP Server

Vous pouvez arrêter le service Apache:

Sudo systemctl stop Apache2.service

Et désactivez également le service afin qu'il ne redémarre pas automatiquement au prochain redémarrage:

Sudo systemctl disable Apache2.service

Après cela, vous pourrez redémarrer nginx:

Sudo systemctl restart nginx

Vous pouvez vérifier qu'il fonctionne avec un navigateur en ligne de commande tel que Lynx:

lynx 127.0.0.1

                                    Apache2 Debian Default Page: It works (p1 of 4)
   Debian Logo Apache2 Debian Default Page
   It works!

   This is the default welcome page used to test the correct operation of the
   Apache2 server after installation on Debian systems. (...)

Et vous trouverez peut-être étrange/déroutant qu'une page d'accueil Apache soit toujours chargée par nginx. En effet, Apache a créé un fichier html par défaut vers lequel nginx pointe par défaut: /var/www/html/index.html. Dans mon cas, le fichier d'accueil nginx html par défaut était /var/www/html/index.nginx-debian.html. Vous pouvez changer la page par défaut chargée en modifiant le fichier de configuration par défaut de nginx (et en l’enregistrant avec les autorisations appropriées):

Sudo nano /etc/nginx/sites-available/default

(...)
# Default server configuration
#
server {
      (...)
      # original index directive:
      # index index.html index.htm index.nginx-debian.html;
      # modified index directive:
      index index.htm index.nginx-debian.html;
      (...)
}

En excluant index.html des arguments de la directive index, le fichier candidat suivant est recherché. Dans mon cas, index.htm n'existe pas, donc index.nginx-debian.html est utilisé. Cette modification ne prend effet que lorsque Nginx est rechargé. Vous pouvez donc lui envoyer un signal de rechargement:

Sudo nginx -s reload.

Et maintenant, vous pouvez vérifier la page d'accueil par défaut de nginx:

lynx 127.0.0.1

                                                                 Welcome to nginx!
                                 Welcome to nginx!

   If you see this page, the nginx web server is successfully installed and
   working. Further configuration is required.
   (...)
2
arthropod

Il semble que NGINX et une autre application serveur sont tous deux liés pour utiliser le port 80 comme port par défaut.

La solution simple consisterait à changer le port NGINX pour qu’il soit différent, ce qui peut être fait en éditant /etc/nginx/sites-available/default (ou n’importe quel fichier de configuration) pour se lier à un autre port.

Cherchez une ligne qui dit quelque chose comme ceci:

Listen 80;

Remplacez le 80 par un port libre (par exemple 851):

Listen 851;

Redémarrez NGINX et il devrait redémarrer sans problème.

Notez que si vous souhaitez réellement utiliser NGINX en tant qu'hôte Web, vous devrez modifier la configuration de votre autre serveur Web.

2
Brian

Basé sur le message d'erreur:

  Package nginx-full is not installed.
  Package nginx-light is not installed.
  Package nginx-extras is not installed.

Je vous recommande d'exécuter Sudo apt-get install nginx-full nginx-light nginx-extras

0
Fábio