3 votes

La configuration du serveur virtuel Apache échoue toujours après un redémarrage

Il suffit de configurer un serveur web apache dans Debian 6 et d'ajouter le virtualhost suivant :

<VirtualHost 123.45.67.89:80> 
   ServerAdmin admin@mysite.com 
   ServerName mysite.com 
   ServerAlias www.mysite.com 
   DocumentRoot /srv/www/mysite.com/public_html 
   ErrorLog /srv/www/mysite.com/logs/error.log 
   CustomLog /srv/www/mysite.com/logs/access.log combined 
</VirtualHost>

Et je l'active (le serveur virtuel par défaut est également activé) :

a2ensite mysite.com 

Rechargez :

/etc/init.d/apache2 reload 

Mon /etc/hosts est le suivant :

127.0.0.1      localhost.localdomain   localhost 
123.45.67.89   myhost.mysite.com       myhost

Et puis j'ai testé en accédant mysite.com y www.mysite.com . Tout fonctionne bien à ce stade.

Le problème est qu'à chaque fois que je redémarre, je ne peux plus accéder à mon site. Ne fonctionne pas avec mysite.com y www.mysite.com .

Après avoir bricolé et surveillé le journal, il semble qu'après le redémarrage, Apache recherche toujours les fichiers dans le répertoire /etc/apache2/htdocs . Qui n'est pas spécifié dans les fichiers de configuration.

Le seul moyen de le faire fonctionner à nouveau après le redémarrage est de lancer le programme suivant /etc/init.d/apache2 reload .

Des suggestions ?

Merci d'avance.


[UPDATE 1]

C'est le contenu de /etc/apache2/sites-enabled/

lrwxrwxrwx 1 root root 26 May  4 13:41 000-default -> ../sites-available/default
lrwxrwxrwx 1 root root 29 May  4 11:12 mysite.com -> ../sites-available/mysite.com

Et c'est la dernière ligne de la /var/log/apache2/error.log juste après le démarrage

[Wed May 04 13:43:17 2011] [notice] caught SIGTERM, shutting down
[Wed May 04 13:43:37 2011] [notice] Apache/2.2.16 (Debian) configured -- resuming normal operations

Comment puis-je m'assurer qu'apache démarre au démarrage ? Émission :

update-rc.d apache2  defaults

La sortie est prévue :

update-rc.d: using dependency based boot sequencing

Je devrais essayer de mettre /etc/init.d/apache2 reload à l'intérieur de /etc/rc.loca l ? (juste pour être sûr que c'est exécuté)


[MISE À JOUR 2]

Je viens de faire quelque chose qui, je pense, a réglé le problème. Ce que j'ai fait, c'est changer en arrière :

NameVirtualHost 123.45.67.89:80

まで

NameVirtualHost *:80

Et puis changer tous les fichiers vhost ainsi de :

<VirtualHost 123.45.67.89:80>

まで

<VirtualHost *:80>

Après cela, tout fonctionne. J'ai essayé de redémarrer 2-3 fois et ça marche toujours. Je ne sais pas si c'est un bon réglage.

La raison pour laquelle j'utilise l'adresse IP en premier lieu est que le wiki/doc/bibliothèque de mon fournisseur de VPS le dit.

Je pense donc que je vais clore le sujet pour l'instant et faire d'autres tests.

Merci les gars.

0 votes

Avez-vous donné à ServerRoot une valeur autre que la valeur par défaut /etc/apache2 ?

0 votes

@eduardo-ivanec Le ServerRoot dans le fichier /etc/apache2/apach2.conf est commenté (par défaut). Cela va-t-il poser un problème ?

0voto

Dangph Points 5561

Pouvez-vous afficher ce qui suit :

Contenu du fichier /etc/apache2/sites-enabled/

Contenu de /var/log/apache2/error.log pendant le redémarrage (une fois que vous avez démarré, le bas du journal devrait contenir les journaux de démarrage.

Une solution de très bas niveau, qui ne résout pas vraiment le problème, serait de simplement

put /etc/init.d/apaceh2 reload inside /etc/rc.local.

Enfin, êtes-vous sûr qu'Apache démarre au démarrage ? Exécutez la commande suivante

update-rc.d apache2  defaults

0 votes

Je mets à jour la question pour inclure quelques informations supplémentaires.

0 votes

Et je pense que l'apache est redémarré correctement après le redémarrage. Je l'ai vérifié en lançant htop juste après le redémarrage et j'ai vu un tas de processus apache2.

0 votes

Essayez de désactiver le site par défaut dans sites-enabled et voyez si cela change la façon dont il démarre après le démarrage.

0voto

sjors miltenburg Points 694

La solution est intéressante, nightrod.

Mon hypothèse est qu'au moment où Apache démarre, votre IP n'est pas encore définie - soit parce que eth* est hors service, soit parce que vous utilisez le DHCP statique et attendez une réponse du serveur DHCP, etc. Donc Apache (la conjecture suit) ne charge ni la définition du VirtualHost ni la directive NameVirtualHost car l'IP n'est pas actuellement configurée sur le serveur et ne peut donc jamais correspondre. Je suppose qu'il lie toujours le port à *:80 parce que le périphérique de bouclage (loopback device) es disponible et qu'il peut donc raisonnablement démarrer. Le résultat est qu'après avoir lancé eth*, apache écoutait mais aucun VirtualHost n'était configuré.

0 votes

Il est très possible que ce soit effectivement le cas. Quant à l'utilisation de l'astérisque (*), je ne sais pas moi-même quelle est la meilleure pratique en la matière. Parce que sur la documentation de mon VPS, il est clairement indiqué d'utiliser mon IP publique. Personne ne semble signaler quoi que ce soit.

SistemesEz.com

SystemesEZ est une communauté de sysadmins où vous pouvez résoudre vos problèmes et vos doutes. Vous pouvez consulter les questions des autres sysadmins, poser vos propres questions ou résoudre celles des autres.

Powered by:

X