J'essaie de configurer une machine virtuelle sous Ubuntu 12.04. J'ai deux hôtes virtuels configurés à l'aide du port 80, mais Apache ne démarre pas.
Je reçois cette erreur:
(98) Address already in use: make_sock: could not bind to address 0.0.0.0:80
La sortie de netstat -tulpn
montre que rien n'utilise le port 80. Quelle pourrait en être la cause?
12.04
apache2
virtualization
Gunner Barnes
la source
la source
grep -ri listen /etc/apache
etsudo netstat -ntlp | grep 80
.grep -ri listen /etc/apache2
sorties: etc / apache2 / httpd.conf: Listen 80 /etc/apache2/httpd.conf: Listen 443 /etc/apache2/ports.conf: Listen 80 /etc/apache2/httpd.conf: Listen 443 / etc / apache2 / httpd.conf: Listen 443sudo netstat -ntlp | grep 80
ne génère rien du tout.Réponses:
Assurez-vous de ne pas déclarer
Listen 80
deux fois dans les fichiers .conf.Par exemple, vous pourriez l'avoir à la fois dans
ports.conf
et aubergesites-enabled/www.conf
.Pour le savoir, utilisez:
grep -ri listen /etc/apache2
Gardez
Listen 80
dans un seul endroit.la source
Répondre à la façon dont j'ai résolu ce problème. Peut être utile à quelqu'un à l'avenir.
Essayer
netstat -ltnp | grep :80
Cela rendrait quelque chose comme
Puis courir
Où 1047 est le pid du programme exécuté sur le port 80.Vous pouvez remplacer le pid que vous avez obtenu de
netstat
la source
tcp 0 0 0.0.0.0:80 0.0.0.0:* LISTEN -
Lorsque j'ai eu ce problème, il s'est avéré que mon Apache ne pouvait pas démarrer au démarrage car mon site SSL nécessitait la saisie d'un mot de passe pour le certificat.
Un bon moyen de savoir si tel est le cas pour vous est d’exécuter a
ps -ef | grep apache
: si cela renvoie des processus qui ressemblent,/bin/bash /usr/share/apache2/ask-for-passphrase mysite.com:443 RSA
il attend alors la saisie d’un mot de passe dans un terminal que vous ne verrez jamais.Tout d’abord, j’ai tué le processus bloqué (envoyer un
kill -HUP
à l’ID du processus / usr / sbin / apache2 devrait suffire à tuer les autres, mais faites-en un autreps -ef | grep apache
pour en être sûr).Ensuite, j'ai suivi les instructions de cet article pour créer un fichier de mot de passe SSL ne nécessitant pas la saisie d'un mot de passe. Ensuite, cela a
service apache2 start
fonctionné correctement et Apache a démarré correctement après un redémarrage.la source
J'ai eu cette erreur lors d'une nouvelle installation au démarrage d'apache2 Ubuntu 12.10.
C'est un bug dans le 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:
Adresse déjà utilisée? Que pourrait-il utiliser? Vérifiez-le:
Cela signifie qu'apache2 empêche apache2 de démarrer. Bizarre. Cela confirmera:
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 perturbe, c'est que
service
rapporte qu'apache2 n'est PAS en cours d'exécution:Et lorsque vous interrogez apache2ctl sur son statut, il se bloque.
Ubuntu semble donc avoir du mal à gérer Apache2 au démarrage. Il est temps d'arrêter apache2:
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, car apache2 démarre au démarrage et se bloque. Le processus de démarrage normal d’apache2 ne fonctionne pas correctement.
Alors, comment y remédier?
J'ai pu résoudre ce problème en analysant le
ps
résultat de la commande. Notez que laps
commande nous indique que ce processus a été lancé par "/etc/rc2.d/S91apache2 start".C’est le programme fautif qui a besoin d’un coup d’œil rapide.
/etc/rc2.d/S91apache2
est le lien symbolique utilisé pour démarrer apache2 lorsque l'ordinateur démarre. Pour une raison quelconque, il semble commencer apache2, puis se bloque. Nous devrons donc lui dire de ne pas le faire.Alors allez voir ça
/etc/rc2.d/S91apache2
.C'est un lien symbolique que nous ne voulons pas qu'il soit là. Faites ceci pour empêcher le démarrage d’apache2 au démarrage:
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 en place, mais cela le ferait échouer à nouveau.
Au lieu de cela, démarrez apache2 comme ceci:
Et Apache2 est de nouveau en service et sauvegarde des pages. Il semble y avoir de sérieux bugs avec apache2 / Ubuntu 12.10 qui font que apache2 démarre et se bloque. C’est une solution de contournement. Je suppose que le correctif consiste à obtenir les nouvelles versions d’apache2 et d’Ubuntu et à espérer que tout ira pour le mieux.
la source
J'avais un serveur Nginx à l'écoute sur mon serveur AWS EC2. Je pense qu'il a été configuré lors de la construction de l'EC2. J'ai donc une erreur Address is in use. J'ai donc arrêté le service et lancé le service Apache2:
la source
Je l'ai compris. J'avais dupliqué Listen 80 commandes dans mon httpd.conf et ports.conf
De plus, lors de la copie du fichier de configuration sur ce serveur en cours de virtualisation, j'ai négligé de remarquer que le répertoire du journal des erreurs avait été modifié. En regardant dans ce journal des erreurs, j'ai remarqué que le répertoire du
mime.types
fichier de configuration était incorrect dans monhttpd.conf
fichier. J'ai mis à jour ce paramètre et le serveur a bien démarré.la source
Listen 80
commandes en double dans monhttpd.conf
etports.conf
Cela signifie que votre port 80 est déjà utilisé, changez le port pour apache2 (ce que je ne recommande pas) en modifiant:
Ou fermez l'application qui s'exécute sur le port 80:
Pour trouver ce qui fonctionne sur le port 80.
la source
netstat -antp | grep 80
ne produit rien aussi bien.Juste un indice pour quiconque utilise peut-être VirtualBox avec des réseaux NAT. J'ai constaté qu'une règle NAT entre mon invité et l'hôte s'était configurée, liant le port
la source
Ne faites pas que dupliquer les mentions de
mais aussi mention de cela en plus de Listen 80
la source