Probleme demarrage apache2

Bonjour,

je possède une machine Debian et dessus j'ai installer apache2 j'ai fait quelques configs d'apres certains tutos et tout marché tres bien jusqu'a ce matin.

En effet, ce matin lorsque j'ai démarrer apache2 avec la commande /etc/init.d/apache2 start voila la reponse :

Starting web server (apache2)...[Fri Jun 13 13:20:15 2008] [warn] NameVirtualHost *:443 has no VirtualHosts
(98)Address already in use: make_sock: could not bind to address [::]:80
(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
failed!

Est ce que quelqu'un peut m'aider car je ne sais plus quoi faire !!!

Merci
Configuration: Linux Debian
apache2

14 réponses

  • Votes
  • Date
  • Date décroissante
  1. killall apache2

    et redémarrer.
    1. Cette commande marche, merci !
    2. Ca marche très bien !
    3. comment on le fait? ma ligne de commande ne reconnait pas la comande killall
  2. ....quand un beau matin,ca marche plus...

    protocolaire "apache2" ...protocolaire...eh!
    1. J'ai fais:

      netstat -ltnp | grep '80'

      Qui m'a donné cette ligne:

      tcp 0 0 :::8080 :::* LISTEN 30982

      Donc j'ai fait:

      kill -9 30982

      Puis j'ai relancé apache et ça a fonctionné. En fait, ce message d'erreur veut dire qu'un autre programme a pris ce port donc il faut le kill avant de relancer apache.
      1. oh je dis une bêtise en fait^^

        apache2 utilise des sockets ipv6
        donc pour utiliser de l'ipv4, il mappe les adresse ipv6 en ipv4 (par defaut sur bcp de distrib sauf FreeBSD, NetBSD, et OpenBSD)
        Le mapping des adresses ipv6 en ipv4 sert jsute a limiter le nb de sockets

        Listen 0.0.0.0:80 va jsute 'brider' apache pour qu'il n'utilise que de l'ipv4
        (apache ne gèrera donc plus les connection ipv6)

        écrire Listen[::]:80 revient à écrire Listen 80

        et écrire

        Listen[::]:80
        Listen 0.0.0.0:80 ne devrait a priori marcher que sur les distrib ki ne compilent pas apache avec le mapping des adresses ipv6 en ipv4 par défaut (free, net et openbsd)

        les connection ipv4 devraient être supportée donc.. en théorie.. c bizarre donc :p
        1. pour l'ipv6 je crois que ca s'écrit [::] poru l'adresse 0.0.0.0 (ai aps encore l'habitude lol)

          donc d'après ce que je vosi le Listen 80 correspond en fait à Listen [::]:80
          1. en fait quand tu fais un
            netstat -lpn, la première colonne indique le protocol utilisé

            comme on peut le voir, c'est du version 6

            Il me semble que c'est lié au
            Listen 80

            si tu met a la place un Listen 0.0.0.0:80
            tu peux retomber sur de l'ipv4 et je pesne que tu aura moins de souci
            (0.0.0.0 est aps une adresse valide d'interface mais c pour écouter a priori à partir de n'importe laquelle mais en ipv4 car j'ai l'impression que dans apache2, Listen 80 par défaut écoute les interfaces ipv6)
            1. Je ne crois pas qu'il critiquait mais bon...

              edit ton fichier httpd.conf
              Vérifie que tu as bien

              Listen 80 (pour qu'apache écoute sur le bon port)

              rajoute la variable NameVirtualHost *:80

              et à la suite ecrit un virtualhost de ce type:
              <VirtualHost *:80>
              ServerAdmin webmaster@ton_domaine.com
              DocumentRoot /disk01/www/ (le chemin où il y a ton fichier index.php)
              ServerName ton_domaine.com
              ErrorLog logs/ton_domaine.com-error.log
              CustomLog logs/ton_domaine.com-access.log combined
              </VirtualHost>

              puis /etc/init.d/httpd graceful (redémarrage "propre")

              Si tu as activé
              Include conf.d/*.conf dans httpd.conf alors créé des fichiers séparés pour chaque virtualhost.

              Je te balance ca brut de forme, mais je detaille plus si tu as besoin.

              Bye
              1. Apache marche très bien (c'est probablement le serveur http les plus utilisé)

                en même temps c'est connu,

                "bad worker blames his tool"

                je veux dire quand on sait pas utiliser apache, on ne critique pas :p
                1. En fait a ce que j'ai compris avec ces erreurs c'est qu'il me dit que l'adresse est deja utilisé et lorsque je tape le commande suivante pour savoir qui utilise le port 80 voila ce que j'obtient :

                  debian:/home/yohan# netstat -lpn | grep :80
                  tcp6 0 0 :::80 :::* LISTEN 2419/apache2

                  et sinon je voulais dire aussi que apache2 fonctionne que de temps a temps.
                  1. A mon avis vous n'avez pas mis d'adresse IP à la directive NameVirtualHost dans le fichier /etc/apache2/apache2.conf

                    Le démon htttpd va écouter un port sur une adresse. Il faut emttre l'adresse locale.
                    Si vous utilisez aussi https, il faut mettre 2 lignes :

                    NameVirtualHost 192.168.1.1:80
                    NameVirtualHost 192.168.1.1:443

                    il est peut etre possible d'utiliser 0.0.0.0 pour toutes les adresses ?

                    l faut qu'il y ait au moins 2 vhost (1 pour chaque port si vous utilisez les ports 80 et 443).

                    Le vhost doit reprendre le numero IP et le port :

                    <VirtualHost 192.168.1.1:80>
                    DocumentRoot /var/www/www.site1.com
                    ServerName www.site1.com
                    ...
                    <VirtualHost>

                    <VirtualHost 192.168.1.1:443>
                    DocumentRoot /var/www/www.site1.com
                    ServerName www.site1.com
                    ...
                    <VirtualHost>

                    Il est possible d'inscrire la config du 2e vhost pour https dans le meme fichier de config (c'est la meme adresse).

                    Pour que tout fonctionne, il faut que le serveur puisse trouver les entrées dans le DNS nom_dns->IP
                    Il faut donc configurer /etc/hosts ou bind9 (si vous avez bind9 installé)

                    127.0.0.1 localhost
                    192.168.1.1 www.site1.com site1.com
                    192.168.1.1 www.site2.com site2.com
                    etc...

                    Comme le serveur va faire la distinction du vhost par rapport a son nom DNS et pas par rapport a son adresse IP, il faut que le DNS fonctionne.

                    NOTA : si le serveur n'est pas lancé, il ne faut pas faire un "apache2 reload" mais un "apache2 start".
                    1. Merci pour tout ces commandes mais j'ai deja mes 2 vhosts et tout est comme tu le dis mais quand j'essaye de la demarrer je n'obtient plus que ces lignes :

                      Starting web server (apache2)...(98)Address already in use: make_sock: could not bind to address [::]:80
                      (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
                      failed!
                  2. Voir la doc ici au chapitre 3 : http://www.nuxwin.com/article-18-tutorial-serveur-web-apache-2-virtualhost

                    Verifiez aussi que vous avez bien les liens symbolique entre /etc/apache2/sites-available/ et /etc/apache2/sites-enable/
                    1. merci pour ce tuto et j'ai bien fait ce qui etait marké mai ce ne marche toujours pas. Voila le mesage d'erreur :
                      Forcing reload of web server (apache2)...httpd (no pid file) not running
                      (98)Address already in use: make_sock: could not bind to address [::]:80
                      (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
                      failed!
                    2. vérifie que tu lance bien ta commande en root...