apache ne redémarrera pas après avoir ajouté le fichier de conf VirtualHost, pourquoi pas?

14

Sur un CentOS 7serveur, j'obtiens l'erreur suivante lorsque je tape sudo apachectl restartaprès avoir ajouté un fichier include au bas de httpd.conf:

Job for httpd.service failed. See 'systemctl status httpd.service' and 'journalctl -xn' for details.

Lorsque je tape alors sudo systemctl status httpd.service -l, le résultat est:

httpd.service - The Apache HTTP Server
   Loaded: loaded (/usr/lib/systemd/system/httpd.service; enabled)
   Active: failed (Result: exit-code) since Tue 2014-12-23 20:10:37 EST; 2min 15s ago
  Process: 2101 ExecStop=/bin/kill -WINCH ${MAINPID} (code=exited, status=0/SUCCESS)
  Process: 2099 ExecStart=/usr/sbin/httpd $OPTIONS -DFOREGROUND (code=exited, status=1/FAILURE)
 Main PID: 2099 (code=exited, status=1/FAILURE)
   Status: "Total requests: 0; Current requests/sec: 0; Current traffic:   0 B/sec"

Dec 23 20:10:37 ip-address httpd[2099]: AH00558: httpd: Could not reliably determine the server's fully qualified domain name, using fe80::e23f:49ff:feb7:2a21. Set the 'ServerName' directive globally to suppress this message
Dec 23 20:10:37 ip-address systemd[1]: httpd.service: main process exited, code=exited, status=1/FAILURE
Dec 23 20:10:37 ip-address systemd[1]: Failed to start The Apache HTTP Server.
Dec 23 20:10:37 ip-address systemd[1]: Unit httpd.service entered failed state.

Je peux apacheredémarrer si je commente la directive include et je peux recréer l'erreur à nouveau en ne commentant pas la directive include. Comment puis-je apachecommencer à utiliser correctement le contenu du fichier inclus?

La ligne en bas de httpd.confqui déclenche l'erreur est: IncludeOptional sites-enabled/*.conf. Le seul .conffichier dans le sites-enableddossier est mydomain.com.conf, qui a le contenu suivant:

<VirtualHost *:80>
    ServerName www.mydomain.com
    ServerAlias mydomain.com
    DocumentRoot /var/www/mydomain.com/public_html
    ErrorLog /var/www/mydomain.com/error.log
    CustomLog /var/www/mydomain.com/requests.log combined
</VirtualHost>

C'est httpd.confla même chose que ce qui est pré-installé httpd, à l'exception de la directive d'inclusion d'une ligne ci-dessus. Je le sais car je l'ai fait sudo yum remove httpd mod_sslet sudo yum install httpd mod_ssljuste avant de déclencher cette erreur. Le tout httpd.confpeut être lu sur un site de partage de fichiers en cliquant sur ce lien .

J'ai rencontré ce problème en suivant explicitement les étapes de ce didacticiel .

Lorsque je commente le fichier inclus, http/mydomain.comsert avec succès le contenu statique situé dans /var/www/html, qui est DocumentRootdéfini dans httpd.conf. Le problème semble provenir de la VirtualHostdirective dans le fichier include montré ci-dessus. Pour aider au diagnostic, j'ai inclus dans EDIT # 3 ci-dessous des liens vers tous les .conffichiers contenus dans les trois directives d'inclusion de httpd.conf.

EDIT # 1

Quand j'essaye le conseil de m32 pour changer le /etc/hostnameà définir mydomain.com, apachene redémarrera toujours pas, et les systemctl status httpd.servicerésultats dans ce qui suit:

[sudo_user_account@server-ip-address ~]$ sudo systemctl status httpd.service -l
httpd.service - The Apache HTTP Server
   Loaded: loaded (/usr/lib/systemd/system/httpd.service; enabled)
   Active: failed (Result: exit-code) since Tue 2014-12-23 14:25:35 EST; 20s ago
  Process: 31993 ExecStop=/bin/kill -WINCH ${MAINPID} (code=exited, status=0/SUCCESS)
  Process: 31991 ExecStart=/usr/sbin/httpd $OPTIONS -DFOREGROUND (code=exited, status=1/FAILURE)
 Main PID: 31991 (code=exited, status=1/FAILURE)
   Status: "Total requests: 1; Current requests/sec: 0; Current traffic:   0 B/sec"

Dec 23 14:25:35 hostname systemd[1]: httpd.service: main process exited, code=exited, status=1/FAILURE
Dec 23 14:25:35 hostname systemd[1]: Failed to start The Apache HTTP Server.
Dec 23 14:25:35 hostname systemd[1]: Unit httpd.service entered failed state.  

EDIT # 2

J'ai également essayé le conseil de eyoung100 pour changer le contenu de mon /etc/hostsfichier, tel que défini dans l'image suivante, mais j'obtiens toujours la même erreur définie dans EDIT # 1 ci-dessus.

EDIT # 3

À la demande de DerekC, j'ai couru sudo apachectl configtestet obtenu:

AH00558: httpd: Could not reliably determine the server's fully qualified domain name, using fe80::e23f:49ff:feb7:2a21. Set the 'ServerName' directive globally to suppress this message
Syntax OK

En outre, selon la suggestion de GarethTheRed, j'ai examiné les directives d'inclusion dans httpd.conf . Il existe trois directives include dans httpd.conf . J'ai énuméré les trois ci-dessous, ainsi que tous les fichiers situés dans le dossier de chaque directive. Ce sont tous les .conffichiers standard installés avec httpd. Je n'en ai encore modifié aucun. Vous pouvez afficher chacun des .conffichiers sur un site de partage de fichiers en cliquant sur les liens ci-dessous:

Include conf.modules.d/*.confréférence les fichiers suivants dans le conf.modules.drépertoire: 00-base.conf
00-dav.conf
00-lua.conf
00-mpm.conf
00-proxy.conf
00-ssl.conf
00-systemd.conf
01-cgi.conf

IncludeOptional conf.d/*.confréférences les fichiers suivants dans le conf.drépertoire: autoindex.conf
ssl.conf
userdir.conf
welcome.conf
Il y a aussi un fichier README que je suis ici. omets

De plus, la IncludeOptional sites-enabled/*.confdirective et son contenu ont été décrits en détail dans le PO ci-dessus.

Certains de ces fichiers incluent-ils des conflits avec les VirtualHostparamètres de mydomain.com.conf?

EDIT # 4

Selon la suggestion de garethTheRed, je me suis déplacé mydomain.com.confvers le conf.drépertoire, puis j'ai commencé à commenter les lignes mydomain.com.confune par une jusqu'à ce que je httpdpuisse redémarrer. J'ai ensuite commencé à commenter les lignes pour voir combien de lignes pouvaient rester et httpdredémarrer. J'ai pu httpdredémarrer, mais systemctl status httpd.service -lcontinue de produire le même avertissement:

AH00558: httpd: Could not reliably determine the server's fully qualified domain name, using fe80::e23f:49ff:feb7:2a21. Set the 'ServerName' directive globally to suppress this message

La VirtualHostsyntaxe qui permet httpdde démarrer (tout en continuant à générer l'avertissement ci-dessus) est la suivante:

<VirtualHost *:80>
    ServerName www.mydomain.com
    ServerAlias mydomain.com
    DocumentRoot /var/www/mydomain.com/public_html
</VirtualHost>  

Notez que j'ai dû omettre les lignes suivantes, dont la présence fait grimper l'avertissement en une incapacité complète à démarrer http:

# ErrorLog /var/www/mydomain.com/error.log
# CustomLog /var/www/mydomain.com/requests.log combined

De plus, j'ai couru sudo journalctl -xelu httpdet le terminal a répondu en répétant plusieurs fois ce qui suit:

-- 
-- Unit httpd.service has finished shutting down.
Dec 24 17:48:43 server-ip-address systemd[1]: Stopped The Apache HTTP Server.
-- Subject: Unit httpd.service has finished shutting down
-- Defined-By: systemd
-- Support: http://lists.freedesktop.org/mailman/listinfo/systemd-devel
-- 
-- Unit httpd.service has finished shutting down.
Dec 24 17:48:48 server-ip-address systemd[1]: Starting The Apache HTTP Server...
-- Subject: Unit httpd.service has begun with start-up
-- Defined-By: systemd
-- Support: http://lists.freedesktop.org/mailman/listinfo/systemd-devel
-- 
-- Unit httpd.service has begun starting up.
Dec 24 17:48:48 server-ip-address httpd[10364]: AH00558: httpd: Could not reliably d
Dec 24 17:48:48 server-ip-address systemd[1]: Started The Apache HTTP Server.
-- Subject: Unit httpd.service has finished start-up
-- Defined-By: systemd
-- Support: http://lists.freedesktop.org/mailman/listinfo/systemd-devel
-- 
-- Unit httpd.service has finished starting up.
-- 
-- The start-up result is done.
lines 887-909/909 (END)

Remarque: Les résultats ci-dessus restent les mêmes, que j'utilise le fichier d'hôtes de eyoung100 ou le fichier d'hôtes de m32. Pour répondre à cette question, je pense que je devrais pouvoir créer des fichiers journaux et également éviter l'avertissement de nom de serveur. Sinon, je crains que les étapes suivantes de configuration de httpd ne soient sujettes à des erreurs persistantes.

CodeMed
la source
1
Quelle erreur "nébuleuse" exacte se produit lorsque vous ajoutez une ServerNamedirective? Ajoutez-le à votre question.
wurtel
1
Quelle est la sortie de apachectl configtest?
DerekC
Existe-t-il un fichier IncludeOptionalà la fin du httpd.conffichier d' origine ? Je pense qu'il y a une installation par défaut. Le problème peut être que vous ajoutez le supplément IncludeOptionalà la fin, ce qui force apacheà lire deux fois le fichier de configuration inclus et, par conséquent, à l'échec.
garethTheRed
Pour commencer, vous devez déplacer votre mydomain.com.confvers /etc/httpd/conf.d(où se trouvent tous les autres) et supprimer /etc/httpd/sites-enabled(c'est une chose Debian / Ubuntu) et le fichier auquel IncludeOptionalvous avez ajouté httpd.conf. Vous pouvez ignorer le AH00558message pour l'instant car il ne s'arrête pas apache. Ensuite, supprimez une ligne de votre conffichier jusqu'à ce que vous trouviez le coupable (ou bien commencez par une ligne vide et restaurez une ligne à la fois).
garethTheRed
1
@garethTheRed et quiconque de google, vous n'avez pas besoin de supprimer IncludeOptional sites-enabled / *. conf. C'était un hareng rouge. Le vrai problème était les fichiers journaux comme indiqué ci-dessous par garethTheRed. J'ai suivi le même tutoriel que l'OP et j'ai eu le même problème. La suppression des lignes du fichier journal du fichier de configuration de l'hôte virtuel l'a corrigé.
Louise Eggleton

Réponses:

19

Les journaux sont à l'origine des erreurs car apacheils ne peuvent pas écrire à la racine de votre site Web. Même si vous deviez corriger les autorisations de fichier, vous seriez toujours bloqué par SELinux; qui permet uniquement apached'écrire des journaux /var/log/httpd. La solution la plus simple serait de modifier votre site Web pour vous connecter à ce répertoire - peut-être avec un nom de fichier qui contient le nom du site Web afin de le différencier des autres journaux.

ErrorLog /var/log/httpd/mydomain_com_error.log
CustomLog /var/log/httpd/mydomain_com_requests.log combined

Pour définir le nom d'hôte du serveur et se débarrasser de l'avertissement AH00558, utilisez simplement:

hostnamectl set-hostname --static <FQDN of your machine>

par exemple

hostnamectl set-hostname --static mydomain.com
garethTheRed
la source
J'ai rencontré une autre erreur alors que je continue à travailler dessus. Êtes-vous prêt à m'aider également? Voici le lien: unix.stackexchange.com/questions/176052/…
CodeMed
2

J'ai eu cette erreur lorsque j'ai oublié de définir le nom d'hôte de la machine. L'avez-vous fait?
Exécutez cette commande:

echo 'example.com' >> /etc/hostname  

Vérifiez avec hostname

Modifier:
Avec l'OP mis à jour, il semble que votre fichier d'hôtes ne soit pas correctement configuré. Voici à quoi ressemble la mienne;

127.0.0.1 localhost.localdomain localhost
# Auto-generated hostname. Please do not remove this comment.
166.66.666.66 m32.me m32
::1     ip6-localhost ip6-loopback

Essayez de le régler sur quelque chose de simple comme ça. Bien sûr, remplacez toutes les informations par les vôtres.
166.66.666.66avec votre propre IP
m32.me and m32avec votre domaine et domaine sans le TLD

m32
la source
Cela n'a pas résolu le problème, j'obtiens toujours l' AH00558erreur lorsque j'utilise votre exemple de fichier hosts, avec mon ipet mydomain.com mydomain.
CodeMed