Erreur Ubuntu avec apache: (98)Adresse déjà utilisée

Je reçois cette erreur quand j'essaie de démarrer Apache dans Ubuntu.

 (98)Address already in use: make_sock: could not bind to address 0.0.0.0:80
 no listening sockets available, shutting down
 Unable to open logs
 Action 'start' failed.

J'ai ceci dans mes ports.conf

NameVirtualHost *:80
Listen 80

C'est mon fichier vhost

<VirtualHost *:80>
          ServerAdmin example@example.com
          ServerName rails.server.com
          # ServerAlias
          DocumentRoot /var/www/sample_app/current/public
          ErrorLog /var/www/sample_app/error.log

          RailsEnv production
        <Directory "/var/www/sample_app/current/public">
          Options Indexes FollowSymLinks MultiViews
          Order allow,deny
          Allow from all
        </Directory>
</VirtualHost>

Qu'est-ce que je manque?

23
demandé sur Eric Leschinski 2012-05-25 01:57:40

14 réponses

Il semble que le port 80 soit déjà pris. Utilisez un autre port ou essayez netstat (grep le résultat pour sélectionner uniquement la ligne avec la valeur 80), ps et kill pour voir quelle application occupe le port et l'arrêter.

10
répondu toniedzwiedz 2016-02-28 10:12:00
netstat -ltnp | grep :80

Cela renverrait ce qui suit:

Tcp6 0 0 :::80 :::* Bienvenue sur ]}

Exécutez ensuite la commande suivante:

sudo kill -9 1047

(1047 - pid n)

(le pid qui apparaît sur votre instance particulière.)

Redémarrez Apache.

sudo service apache2 restart

Référence à Forums Ubuntu .

50
répondu pinku 2018-07-09 10:19:11

Dans tous les cas, tuer le processus peut ne pas fonctionner, car le processus utilisant le port 80 sera redémarré et ne permet pas d'utiliser le port. Donc, ce qui peut être fait est de changer le port pour apache, si cela n'a pas d'importance.

Deux choses doivent être changées pour cela:

  1. Ouvrez /etc/apache2/ports.conf avec n'importe quel éditeur de texte et modifiez la valeur de l'entrée Listen 80 sur le port souhaité (par exemple Listen 8080).

  2. Modifiez l'entrée pour <virtualhost 80> au même numéro de port que vous avez donné dans le /etc/apache2/ports.conf fichier dans /etc/apache2/sites/enabled/000-default (par exemple <virtualhost 8080>).

12
répondu rahul 2015-08-28 11:18:25

Assurez-vous que vous n'avez pas la commande Listen 80 dans plus d'un endroit.

Dans mon cas, je recevais la même erreur et la raison en était que cette commande était à la fois dans les ports.conf et sites-activé / 000-par défaut.

9
répondu eaykin 2013-07-31 11:16:15

Dans mon cas, c'était nginx (car je l'ai sur mon serveur).

sudo service nginx stop
sudo service apache2 start
5
répondu Stanislav Potapenko 2016-08-23 19:57:41
sudo netstat -tulpn| grep :80

pkill le processus (nginx?)

Désactivez tout ce que virtualhost lie au port 80 que vous ne voulez pas (nginx?). C'est dans /etc/nginx/sites-enabled ou /etc/apache2/sites-enabled

2
répondu hobs 2012-06-20 20:42:15

Sudo tuer -9 -2321 (pid) Redémarrez BT Faire..... pas besoin de faire des changements dans conf. fichier.

1
répondu Vandan 2013-07-14 23:15:54

Lorsque vous redémarrez ou démarrez votre serveur via le terminal, vous avez peut-être oublié d'ajouter sudo avant la commande.

Utiliser sudo /etc/init.d/apache2 reload au lieu de /etc/init.d/apache2 reload

0
répondu Subin 2013-05-17 06:38:26

J'ai eu le même problème avec une cause très différente. Je cours Apache 2.4.7 avec PHP 5.5.6 sur CentOS 6.5.

J'ai foiré php.ini en ayant à la fois output_handler = ob_gzhandler et zlib.output_compression = On (l'un ou l'autre, pas les deux, peut être défini).

Donc, en redémarrant Apache, il se lie au port 80 mais rien d'autre ne se passe. Il semble qu'il fonctionne mais l'erreur de php l'a verrouillé quelque part.

L'indice était de vérifier "php-v"... quand je l'ai vu ne rien retourner (il a écrit l'erreur à error_log), j'ai corrigé php.ini et Apache était heureux à nouveau.

Peut-être que cela aide quelqu'un...

0
répondu Yusuf Moola 2013-12-20 07:30:26

J'ai eu cette erreur sur une nouvelle installation D'Ubuntu 12.10 lors du démarrage d'apache2.

C'est un bug dans apache2. Elle est accrochée à l'arrière-plan. Voici ma procédure pas à pas où les bugs pourraient être dans le logiciel.

Voici l'erreur que j'ai eue:

el@titan:~$ sudo service apache2 start
 * Starting web server apache2               
(98)Address already in use: make_sock: could not bind to address 0.0.0.0:80
no listening sockets available, shutting down
Unable to open logs
Action 'start' failed.
The Apache error log may have more information.
                                                                         [fail]

Adresse déjà utilisée? Ce qui pourrait être à l'aide? Découvrez-le:

el@titan:~$ grep -ri listen /etc/apache2
/etc/apache2/apache2.conf:#   supposed to determine listening ports for incoming connections, and which
/etc/apache2/apache2.conf:# Include list of ports to listen on and which to use for name based vhosts
/etc/apache2/ports.conf:Listen 80
/etc/apache2/ports.conf:    Listen 443
/etc/apache2/ports.conf:    Listen 443

Cela signifie qu'apache2 empêche apache2 de démarrer. Bizarre. Cela confirmera:

el@titan:~$ ps -ef | grep apache2
root      1146   954  0 15:51 ?        00:00:00 /bin/sh /etc/rc2.d/S91apache2 start
root      1172  1146  0 15:51 ?        00:00:00 /bin/sh /usr/sbin/apache2ctl start
root      1181  1172  0 15:51 ?        00:00:00 /usr/sbin/apache2 -k start
root      1193  1181  0 15:51 ?        00:00:00 /bin/bash /usr/share/apache2/ask-for-passphrase 127.0.1.1:443 RSA
el        5439  5326  0 16:23 pts/2    00:00:00 grep --color=auto apache2

Oui, dans ce cas apache2 est en cours d'exécution, j'essayais de démarrer apache2 une deuxième fois sur le même port.

Ce qui me trouble, c'est que service signale qu'apache2 ne fonctionne pas:

el@titan:~$ sudo service apache2 status
Apache2 is NOT running.

Et lorsque vous interrogez apache2ctl pour son statut, il se bloque.

root@titan:~# /usr/sbin/apache2ctl status
**hangs until Ctrl-C is pressed.

Donc Ubuntu semble avoir du mal à gérer apache2 au démarrage. Il est temps d'arrêter apache2:

root@titan:~# /usr/sbin/apache2ctl stop
httpd (no pid file) not running

Un gros indice! Vous essayez d'arrêter apache2 et il a perdu l'id de processus! Donc Ubuntu ne peut pas arrêter apache2 car il ne sait pas où il est!

Vous penseriez qu'un redémarrage le corrigerait, mais ce n'est pas le cas car apache2 démarre au démarrage et se bloque. Le processus de démarrage normal pour apache2 ne fonctionne pas correctement.

Alors, comment le réparer?

J'ai pu résoudre ce problème en analysant la sortie de la commande ps. Notez que la commande ps nous indique que ce processus a été démarré par "/etc / rc2.d / s91apache2 démarrer".

C'est le programme offensant qui a besoin d'un coup de pied rapide.

/etc/rc2.d/S91apache2 est le lien symbolique utilisé pour démarrer apache2 pour vous lorsque l'ordinateur démarre. Pour une raison quelconque, il semble commencer apache2, puis se bloque. Donc nous devrons lui dire de ne pas faire ça.

Alors allez voir ça /etc/rc2.d/S91apache2.

el@titan:/etc/rc2.d$ ls -l
lrwxrwxrwx   1 root root    17 Nov  7 21:45 S91apache2 -> ../init.d/apache2*

C'est un lien symbolique que nous ne voulons pas qu'il soit là. Faites ceci pour empêcher apache2 de démarrer au démarrage:

root@titan:~# sudo update-rc.d -f apache2 remove
 Removing any system startup links for /etc/init.d/apache2 ...
   /etc/rc0.d/K09apache2
   /etc/rc1.d/K09apache2
   /etc/rc2.d/S91apache2
   /etc/rc3.d/S91apache2
   /etc/rc4.d/S91apache2
   /etc/rc5.d/S91apache2
   /etc/rc6.d/K09apache2

Redémarrez l'ordinateur pour vous assurer qu'apache2 ne démarre pas et ne se bloque pas. Ok bien. Maintenant, vous pouvez remettre apache2 comme il était, mais que ferait-il échouer à nouveau.

root@titan:~$ sudo update-rc.d apache2 defaults     //(don't do this)
 Adding system startup for /etc/init.d/apache2 ...
   /etc/rc0.d/K20apache2 -> ../init.d/apache2
   /etc/rc1.d/K20apache2 -> ../init.d/apache2
   /etc/rc6.d/K20apache2 -> ../init.d/apache2
   /etc/rc2.d/S20apache2 -> ../init.d/apache2
   /etc/rc3.d/S20apache2 -> ../init.d/apache2
   /etc/rc4.d/S20apache2 -> ../init.d/apache2
   /etc/rc5.d/S20apache2 -> ../init.d/apache2

Au lieu de cela, démarrez apache2 comme ceci:

sudo service apache2 start

Et l'apache2 est de retour et sert des pages à nouveau. Il semble y avoir quelques bugs sérieux avec apache2 / Ubuntu 12.10 qui provoque apache2 pour démarrer et se bloquer. C'est une solution de contournement, je suppose que le correctif est d'obtenir des versions plus récentes d'apache2 et D'Ubuntu et d'espérer le meilleur.

0
répondu Eric Leschinski 2014-01-05 18:16:10

Dans mon cas, j'avais supprimé le fichier ssl.conf par défaut (renommé en ssl.conf.bak), et j'avais mon propre fichier de configuration ssl.

Ensuite, j'ai fait un yum update et il a mis à jour apache... Ce qui a également réintroduit le fichier ssl.conf, ce qui signifie que j'avais 2 fichiers conf avec Listen 443.

Solution (generic-CentOS): allez dans /etc/httpd/conf.d, Faites un grep -r 'Listen' ., voyez si vous avez des instructions Listen XXX en double, supprimez-les au besoin.

0
répondu Populus 2014-04-07 18:29:22

Liste des services en cours d'exécution,

$ sudo netstat -tulpn

Active Internet connections (only servers)
Proto Recv-Q Send-Q Local Address           Foreign Address         State       PID/Program name
tcp        0      0 0.0.0.0:8069            0.0.0.0:*               LISTEN      6399/python     
tcp        0      0 0.0.0.0:53670           0.0.0.0:*               LISTEN      6681/Brackets-node
....
....

Ne trouvez que des services spécifiques,

$ sudo netstat -tulpn| grep python
jpa@jpa-dell:~/odoo/master-hr-holidays-newapi-jpa$ sudo netstat -tulpn| grep python
tcp        0      0 0.0.0.0:8069            0.0.0.0:*               LISTEN      6399/python     
tcp        0      0 127.0.0.1:41974         0.0.0.0:*               LISTEN      3123/python 

Avez-vous remarqué le résultat ci-dessus PID (6399) exécutant python.

Tuez ce service en utilisant la commande suivante,

$ sudo kill -9 -6399

Maintenant, les services sont complètement arrêtés, vous pouvez recommencer normalement.


Commande supplémentaire pour trouver srrvices en cours d'exécution,

$ ps -ef
$ ps -ef | grep python
0
répondu Jay Patel 2015-03-23 09:18:02

Sauf la solution trouver le processus en cours d'exécution sur: 80 et tuer, puis recommencer,

Cette erreur peut avoir si vous avez plusieurs entrées "Listen" dans le fichier apache conf ou dans tout .fichiers conf inclus dans le fichier apache conf. Espérons que cela aide à quelqu'un..!!

0
répondu Leo Prince 2017-06-21 13:45:22

Cela est dû au port 80 est déplacé utilisé par un autre service.

sudo killall httpd

Vérifiez que tout service utilise encore 80

sudo netstat -tulpn| grep :80

Et redémarrez le serveur

sudo service httpd start

entrez la description de l'image ici

0
répondu Krishna Kavoor 2018-09-02 10:14:22