Je reçois cette erreur lorsque j'essaie de démarrer Apache sous 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 mon ports.conf
NameVirtualHost *:80
Listen 80
Ceci est mon fichier vhost
<VirtualHost *:80>
ServerAdmin [email protected]
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 rate?
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 contenant la valeur 80), ps
et kill
pour voir quelle application occupe le port et le fermer.
netstat -ltnp | grep :80
Cela retournerait ce qui suit:
tcp6 0 0 ::: 80 ::: * ECOUTER 1047/Apache2
Puis exécutez la commande suivante:
Sudo kill -9 1047
(1047 - pid no)
(le pid qui apparaît sur votre instance particulière.)
Redémarrez Apache.
Sudo service Apache2 restart
Référence à Forums Ubuntu .
Dans tous les cas, la suppression du processus risque de 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 aucune importance.
Deux choses doivent être changées pour cela:
Ouvrez /etc/Apache2/ports.conf
avec n’importe quel éditeur de texte et remplacez la valeur de l’entrée Listen 80
par le port souhaité (par exemple Listen 8080
).
Modifiez l'entrée pour <virtualhost 80>
par le même numéro de port que vous avez indiqué dans le fichier /etc/Apache2/ports.conf
dans /etc/Apache2/sites/enabled/000-default
(par exemple <virtualhost 8080>
).
Assurez-vous que vous n'avez pas la commande Listen 80
à plus d'un endroit.
Dans mon cas, la même erreur se produisait et la raison était que cette commande était à la fois dans ports.conf et sites-enabled/000-default.
Dans mon cas, c'était nginx (parce que je l'ai sur mon serveur).
Sudo service nginx stop
Sudo service Apache2 start
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
Sudo kill -9 -2321 (pid) Redémarrez BT Fait ..... Inutile de modifier la configuration. fichier.
Sauf que le processus de recherche de solution s'exécute sur: 80 et kill, puis recommence,
Cette erreur peut survenir si vous avez plusieurs entrées "Listen" dans le fichier de configuration Apache ou dans n’importe quel fichier .conf inclus dans le fichier de configuration Apache. J'espère que cela aide quelqu'un .. !!
Dans mon cas, j'avais supprimé le fichier par défaut ssl.conf
(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 comment j'avais 2 fichiers de conf avec Listen 443
.
Solution (générique - CentOS): allez à /etc/httpd/conf.d
, faites un grep -r 'Listen' .
, voyez si vous avez des instructions dupliquées Listen XXX
, supprimez-les au besoin.
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. Il est accroché à l'arrière-plan. Voici ma procédure pas à pas où les bugs pourraient être dans le logiciel.
Voici l'erreur que j'ai eu:
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? Que pourrait-il utiliser? Vérifiez-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
rapporte qu'Apache2 n'est PAS en cours d'exécution:
el@titan:~$ Sudo service Apache2 status
Apache2 is NOT running.
Et lorsque vous interrogez Apache2ctl sur son statut, il se bloque.
root@titan:~# /usr/sbin/Apache2ctl status
**hangs until Ctrl-C is pressed.
Ubuntu semble donc 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'identifiant du processus! Ubuntu ne peut donc pas arrêter Apache2 car il ne sait pas où il se trouve!
Vous pourriez penser qu'un redémarrage résoudrait le problème, mais ce n'est pas le cas, Apache2 démarre au démarrage et se bloque. Le processus de démarrage normal pour Apache2 ne fonctionne pas correctement.
J'ai pu résoudre ce problème en analysant le résultat de la commande ps
. Notez que la commande ps
nous indique que ce processus a été lancé par "/etc/rc2.d/S91Apache2 start".
C'est le programme incriminé qui a besoin d'un coup de pouce rapide.
/etc/rc2.d/S91Apache2
est le lien symbolique utilisé pour démarrer Apache2 pour vous au démarrage de l'ordinateur. Pour une raison quelconque, il semble que Apache2 soit démarré puis bloqué. Nous devrons donc lui dire de ne pas le faire.
Allez donc jeter un coup d'œil à ce /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 pourriez remettre Apache2 à l’état initial, mais cela le ferait é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 Apache2 est en train de sauvegarder et de servir des pages à nouveau. Il semble y avoir quelques bogues sérieux avec Apache2/Ubuntu 12.10 qui entraînent le démarrage et le blocage d’Apache2. C’est une solution de contournement. Je suppose que la solution consiste à obtenir les nouvelles versions d’Apache2 et d’Ubuntu et à espérer que tout ira pour le mieux.
Lorsque vous redémarrez ou démarrez votre serveur via un terminal, vous avez peut-être oublié d'ajouter Sudo avant la commande.
Utilisez Sudo /etc/init.d/Apache2 reload
au lieu de /etc/init.d/Apache2 reload
J'ai eu le même problème avec une cause très différente. J'utilise Apache 2.4.7 avec PHP 5.5.6 sur CentOS 6.5.
J'ai bousillé php.ini en ayant à la fois BOTH output_handler = ob_gzhandler ET zlib.output_compression = On (l'un ou l'autre, pas les deux, peut être défini).
Ainsi, lors du redémarrage d'Apache, il se connecte au port 80 mais rien d'autre ne se produit. On dirait qu'il fonctionne mais l'erreur de php l'a bloqué quelque part.
L'idée était de vérifier "php -v" ... quand je l'ai vu ne rien retourner (il a écrit l'erreur sur error_log), j'ai corrigé le fichier php.ini et Apache était à nouveau heureux.
Peut-être que cela aide quelqu'un ...
$ 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
....
....
$ 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é ci-dessus le résultat du PID (6399) sous Python.
$ Sudo kill -9 -6399
Maintenant que les services sont complètement arrêtés, vous pouvez recommencer normalement.
Commande supplémentaire pour rechercher des srrvices en cours d'exécution,
$ ps -ef
$ ps -ef | grep python