CentOS release 6.5 (Final)でのApacheの基本設定のメモ

1. 既存のApacheがあったら削除する。(httpd.confは残るので安心)
# yum -y remove httpd
Loaded plugins: fastestmirror
Setting up Remove Process
Resolving Dependencies
…(中略)
Complete!

2. プロセスが止まっていることを確認
# ps aux | grep httpd
root 5603 0.0 0.0 107456 912 pts/0 S+ 09:50 0:00 grep httpd

3. 新規でインストールする
# yum -y install httpd
Loaded plugins: fastestmirror
Loading mirror speeds from cached hostfile
* base: ftp.tsukuba.wide.ad.jp
* extras: ftp.tsukuba.wide.ad.jp
* updates: mirror.premi.st
Setting up Install Process
…(中略)
Complete!

4. Apacheを起動してみる。
# service httpd start

Apacheのhttpd.conf関連の文法チェックのテストをする。Syntax OKがでればOK。
# apachectl configtest
Syntax OK

5. ファイアーウォールでポート80を開放する
# netstat -lp --tcp
Active Internet connections (only servers)
Proto Recv-Q Send-Q Local Address Foreign Address State PID/Program name
tcp 0 0 *:memcache *:* LISTEN 3797/memcached
tcp 0 0 *:ssh *:* LISTEN 1054/sshd
tcp 0 0 localhost:smtp *:* LISTEN 1139/master
tcp 0 0 *:mysql *:* LISTEN 4210/mysqld
tcp 0 0 *:memcache *:* LISTEN 3797/memcached
tcp 0 0 *:http *:* LISTEN 5796/httpd
tcp 0 0 *:ssh *:* LISTEN 1054/sshd
tcp 0 0 *:telnet *:* LISTEN 1062/xinetd
tcp 0 0 localhost:smtp *:* LISTEN 1139/master
となっていると、ポート80の穴が空いてないということで、iptableで80番を通してあげればいいだろうと。
# vi /etc/sysconfig/iptables
iptableの設定を確認してみると、CentOS6.5からなのかわからないけど、デフォルトでポート80閉じてるんですかね。案の定穴が空いてない。
# Firewall configuration written by system-config-firewall
# Manual customization of this file is not recommended.
*filter
:INPUT ACCEPT [0:0]
:FORWARD ACCEPT [0:0]
:OUTPUT ACCEPT [0:0]
-A INPUT -m state --state ESTABLISHED,RELATED -j ACCEPT
-A INPUT -p icmp -j ACCEPT
-A INPUT -i lo -j ACCEPT
-A INPUT -p tcp -m tcp --dport 80 -j ACCEPT
-A INPUT -m state --state NEW -m tcp -p tcp --dport 22 -j ACCEPT ←追記
-A INPUT -j REJECT --reject-with icmp-host-prohibited
-A FORWARD -j REJECT --reject-with icmp-host-prohibited
COMMIT

6. iptableを再起動。
# service iptables restart
これでブラウザーから見れるようになります。

centos_apache2_403

Apacheは正常に起動しているのにブラウザーから接続できない際の対処

これで通常はウェブサーバーに接続できてデモの画面が見れるのですが、見れない場合は、以下をいろいろチェック。

サービスが登録されているか確認
# vi /etc/services
http 80/tcp www www-http # WorldWideWeb HTTP
http 80/udp www www-http # HyperText Transfer Protocol
http 80/sctp # HyperText Transfer Protocol
https 443/tcp # http protocol over TLS/SSL
https 443/udp # http protocol over TLS/SSL
https 443/sctp # http protocol over TLS/SSL
こういうのがあればOK。

エラー集
httpd: apr_sockaddr_info_get() failed for server_name
原因は/etc/sysconfig/networkに書いてあるHOSTNAMEが見つからないということで、/etc/hostsに
127.0.0.1 localhost localhost.localdomain localhost4 localhost4.localdomain4 HOSTNAME
を追加してあげればいい。

httpd: Could not reliably determine the server's fully qualified domain name, using 127.0.0.1 for ServerName.
Apacheのhttpd.confにマシンが指定しているホスト名が書かれてない時のエラーです。放っておいても問題なしです。
ServerName HOSTNAME:80