web-dev-qa-db-ja.com

VirtualHost confファイルを追加した後、Apacheが再起動しないのはなぜですか?

CentOS 7サーバーで、Sudo apachectl restartの下部にインクルードファイルを追加した後、httpd.confと入力すると、次のエラーが発生します。

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

次に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 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.

Includeディレクティブをコメントアウトすると、Apacheを再起動できます。includeディレクティブのコメントを外すと、エラーを再作成できます。 インクルードファイルの内容を使用してApacheを正しく起動するにはどうすればよいですか?

エラーをトリガーするhttpd.confの一番下の行はIncludeOptional sites-enabled/*.confです。 .confフォルダー内の唯一のsites-enabledファイルは、mydomain.com.confで、次の内容があります。

<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>

httpd.confは、上記の1行のincludeディレクティブを除いて、httpdにプリインストールされているものと同じです。このエラーが発生する直前にSudo yum remove httpd mod_sslSudo yum install httpd mod_sslを実行したため、わかっています。 httpd.conf全体は、ファイル共有サイトで読むことができます このリンクをクリックして

このチュートリアルの手順 を明示的にフォローしたときにこの問題が発生しました。

インクルードファイルをコメントアウトすると、http/mydomain.comは、/var/www/htmlにある静的コンテンツを正常に提供します。これは、httpd.confで定義されているDocumentRootです。問題は、上記のインクルードファイルのVirtualHostディレクティブに起因しているようです。 診断を支援するために、以下のEDIT#3に、 .conf の3つのincludeディレクティブに含まれるすべてのhttpd.confファイルへのリンクを含めました。

EDIT#1

/etc/hostnameを変更してmydomain.comを定義するようにm32のアドバイスを試しても、Apacheは再起動せず、systemctl status httpd.serviceは次のようになります。

[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

また、eyoung100のアドバイスに従って/etc/hostsファイルの内容を変更してみましたが、次の図のように定義しましたが、上記のEDIT#1で定義したのと同じエラーが発生します。

EDIT#3

DerekCのリクエストに従って、Sudo apachectl configtestを実行して次のように取得しました。

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

さらに、GarethTheRedの提案に従って、 httpd.conf のincludeディレクティブを調べました。 httpd.conf には3つのincludeディレクティブがあります。以下の3つを、各ディレクティブのフォルダーにあるすべてのファイルとともにリストしました。これらはすべて、httpdとともにインストールされる標準の.confファイルです。まだそれらを変更していません。以下のリンクをクリックすると、ファイル共有サイトで各.confファイルを表示できます。

Include conf.modules.d/*.confは、conf.modules.dディレクトリ内の以下のファイルを参照します。 -base.conf
-dav.conf
-lua.conf
-mpm.conf
-proxy.conf
-ssl.conf
-systemd.conf
1-cgi.conf

IncludeOptional conf.d/*.confは、conf.dディレクトリ内の次のファイルを参照します。 autoindex.conf
ssl.conf
serdir.conf
welcome.conf
ここには省略しているREADMEファイルもあります。

さらに、IncludeOptional sites-enabled/*.confディレクティブとその内容は、上記のOPで完全に概説されています。

これらのインクルードファイルのいずれかがmydomain.com.confVirtualHost設定と競合していますか?

EDIT#4

GarethTheRedの提案に従って、mydomain.com.confconf.dディレクトリに移動し、_httpdが再起動できるまで、mydomain.com.confの行を1つずつコメントアウトし始めました。次に、行のコメントを解除して残りの行数を確認し、httpdを再起動しました。 httpdを再起動することはできましたが、systemctl status httpd.service -lは引き続き同じ警告を生成します。

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

VirtualHostの開始を許可するhttpd構文(上記の警告が引き続き生成されます)は次のとおりです。

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

次の行を省略しなければならなかったことに注意してください。これらの行があると、警告がエスカレートして、httpを完全に起動できなくなります。

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

また、私はSudo journalctl -xelu httpdを実行し、端末は以下を何度も繰り返すことで応答しました:

-- 
-- 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)

注:上記の結果は、eyoung100のhostsファイルとm32のHostファイルのどちらを使用しても同じです。 この質問に答えるためには、ログファイルを作成でき、サーバー名の警告も回避できるはずだと思います。さもなければ、httpdを構成する後続の手順で、長引くエラー。

14
CodeMed

ApacheがWebサイトのルートに書き込めないため、ログが原因でエラーが発生しています。ファイルの権限を修正しても、SELinuxによってブロックされます。これは、Apache/var/log/httpdにログを書き込むことのみを許可します。最も簡単な解決策は、このディレクトリにログを記録するようにWebサイトを変更することです。おそらく、他のログと区別するために、Webサイト名を含むファイル名を使用します。

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

サーバーのホスト名を設定し、AH00558警告を取り除くには、次のコマンドを使用します。

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

例えば.

hostnamectl set-hostname --static mydomain.com
19
garethTheRed

マシンのホスト名を設定するのを忘れたときに、このエラーが発生しました。あなたはそうしましたか?
次のコマンドを実行します:

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

hostnameで確認

編集:
アップデートされたOPにより、ホストファイルが正しく設定されていないようです。これは私のものです。

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

そのような単純なものに設定してみてください。もちろん、すべての情報を独自のものに置き換えてください。
166.66.666.66独自のIPを使用
m32.me and m32ドメインあり、TLDなしのドメイン

2
m32