質問: httpd -Sでエラーの確認をすると、 ``` AH00558: httpd: Could not reliably determine the server's fully qualified domain name, using tanakaakionoiMac.local. Set the 'ServerName' directive globally to suppress this message VirtualHost configuration: ServerRoot: "/usr" Main DocumentRoot: "/Library/WebServer/Documents" Main ErrorLog: "/private/var/log/apache2/error_log" Mutex default: dir="/private/var/run/" mechanism=default Mutex mpm-accept: using_defaults PidFile: "/private/var/run/httpd.pid" Define: DUMP_VHOSTS Define: DUMP_RUN_CFG User: name="_www" id=70 not_used Group: name="_www" id=70 not_used ``` となり、apacheのhttps.confでServerNameを確認したら `ServerName localhost:80`と設定しています。先頭に#はついてません。 localhost:80と設定しているのにどうして、上記のようなエラーが出るのでしょうか。 また、エラーを直さなければ再起動などの処理は出来ないのでしょうか。 お手数おかけしますがご回答頂けると幸いです。 宜しくお願いします。 Server version: Apache/2.4.33 (Unix) Server built: Apr 3 2018 18:00:56
回答: `ServerName` は「アクセスしてきたクライアントにこう名乗る」という設定です。エンドユーザーが使っている Web UA (Edge/Chrome) に対して、アフロ氏のサーバが「自分は `localhost` という名前です」と名乗るわけで、ここに `localhost` を記述するのは明らかにおかしい(ユーザーにとって `localhost` はユーザー自体のマシンです)。 マニュアルに書いてあるとおり `ServerName` に書くべきは - DNS 上で解決できる FQDN (特に、同一 IP アドレスに複数の名前があるとき名乗りたい名前) - サーバーの静的 IP アドレスないしはホスト名 (別マシンである Web UA から到達できる IP アドレスないしは Web UA 側の `/etc/hosts` で解決できるホスト名) のどちらかです。 前者はいわゆるフツーに The Internet 上で稼動している Web Server の場合。 後者は DNS を運用していないイントラネット上であるとか、 DNS はあるけどシステム管理者に内緒のオレオレサーバを立てたい場合などに相当します。 オイラんとこでは DNS の無い部内イントラネット上で立てた Apache httpd 2.4 の設定として、当該マシンの静的 IP アドレスをそのまま `ServerName 10.10.10.10` と書いて運用中です。この設定で `httpd -S` は文句を言いません。