Apacheを導入した時のトラブル集いろいろ

Apacheをインストールしてブラウザーからアクセスするとたいていのサービス(専用サーバーとかVPSとかクラウドとか、自宅の自鯖とか)は、すでにデフォルトの表示をしてくれます。ですが、サーバーの初期設定によってはいろいろで全く接続できない場合があります。そんな時の解決法です。(すみません。これは殆どCentOSのコマンドです。)

Apacheを起動すると、以下の警告

Could not reliably determine the server's fully qualified domain name, using localhost.localdomain for ServerName
httpd.confのServerNameの部分をコメントアウト外して適切なホスト名やドメインを入れてあげるといいです。面倒な時はグローバルIP。あるいは、ServerNameという項目がない場合は、
ServerName example.com
と直に書いてしまいましょう。設定した後は再起動を忘れずに。

エラーログにcaught SIGTERM, shutting down

# tail /var/log/httpd/error_log
[Thu Jan 24 16:32:35 2013] [notice] caught SIGTERM, shutting down
というものが出ていたら、SUExecとかFW(ファイアーウォール)を疑った方がいいです。iptable(FW)の設定を切って再起動してみてください。
/etc/rc.d/init.d/iptables stop
iptables: Flushing firewall rules: [ OK ]
iptables: Setting chains to policy ACCEPT: filter [ OK ]
iptables: Unloading modules:

指定したポートを確認

ポート80がデフォルトになっているのですが、その他のポートなどを設定した際には便宜ポートが開かれているか確かめてみる。
# netstat -ln | grep 80
tcp 0 0 :::80 :::* LISTEN
unix 2 [ ACC ] STREAM LISTENING 7801 private/relay
unix 2 [ ACC ] STREAM LISTENING 7805 public/showq
unix 2 [ ACC ] STREAM LISTENING 7809 private/error

httpd.confの文法チェック

動作にはあんまり関係ないかもしれないけど、一応チェックしてみる。
/usr/sbin/apachectl configtest
Syntax OK

プロセスを確認する

# ps -ax | grep httpd
3007 ? Ss 0:00 /usr/local/apache2/bin/httpd
3009 ? S 0:00 /usr/local/apache2/bin/httpd
3010 ? S 0:00 /usr/local/apache2/bin/httpd
3011 ? S 0:00 /usr/local/apache2/bin/httpd
3012 ? S 0:00 /usr/local/apache2/bin/httpd
3013 ? S 0:00 /usr/local/apache2/bin/httpd

アクセスすると以下のエラー

Forbidden You don't have permission to access /~user/index.html on this server.
アクセス権がないといっているのですが、たいていの場合ユーザー自体のディレクトリにパーミッションがないか、またはドキュメントルートに指定しているディレクトリにパーミッションがないかのどちらかです。
/var/www/または/home/user/publisc_html辺りに適切なパーミッションが設定してあるかどうか確認します。755で大丈夫。
またこの場合、

  • /var
  • /home/user

にも755のパーミッションが必要になります。

再起動時にapr_sockaddr_info_get() failed for

Starting httpd: httpd: apr_sockaddr_info_get() failed for HOSTNAME

  • /etc/hosts の設定を忘れている。
  • /etc/sysconfig/network の設定を忘れている。
  • service network restart の実行を忘れている。
  • /etc/httpd/conf/httpd.conf の ServerName の設定を忘れている。

たいていの場合4番目のServerNameの設定を忘れている場合が殆ど。あるいはrootじゃないユーザーで起動かけてしまったときとか。