apacheをCentOSにインストールする度に結構頭から抜け落ちていたりする。
原因
Apacheのファイヤーウォールの設定でhttp用のポートが閉じていた。
経緯
Apache2.4をインストールする
仮想マシンにCentOS7をインストールし、その後webサーバーを構築します。
webサーバーとしてApache2.4をコンソールから以下のyumコマンドでインストール。
# yum install -y httpd
インストール: httpd.x86_64 0:2.4.6-40.el7.centos.1 依存性関連をインストールしました: apr.x86_64 0:1.4.8-3.el7 apr-util.x86_64 0:1.5.2-6.el7 httpd-tools.x86_64 0:2.4.6-40.el7.centos.1 mailcap.noarch 0:2.1.41-2.el7 完了しました!
インストールが完了。
# systemctl start httpd
Apacheを起動させます。
# systemctl status httpd
Apacheの起動状態を確認。
● httpd.service - The Apache HTTP Server Loaded: loaded (/usr/lib/systemd/system/httpd.service; disabled; vendor preset: disabled) Active: active (running)
active欄がrunningとなっているので、どうやら起動しているようだ。
ルートディレクトリにテストページを配置してみる
apacheをインストールすると、varディレクトリ内にwwwというディレクトリができます。
ブラウザにページを表示させるためのファイルを置くディレクトリは”/var/www/html”直下になるので、ブラウザでちゃんと閲覧できるかどうか、適当に作ったテストページでも置いてあげましょう。
<!DOCTYPE html> <html> <head> <title>ほげほげ</title> </head> <body> ほげほげ </body> </html>
適当に作ったhtmlファイル。これを”/var/www/html”に置く。
その後ブラウザからwebページが正しく表示されるか確認する。正しく表示されるなら”ほげほげ”と表示されるはず。
表示されない。
このファイルをルートディレクトリから取り除いたりしたり、テストページが表示されるか試したが、やはり表示されない。
ルートディレクトリの確認をする
一応ルートディレクトリの場所を確認します。
ルートディレクトリは、Apacheの設定ファイルであるhttpd.confから確認できます。
場所はこれ。”/etc/httpd/conf/httpd.conf”
DocumentRoot "/var/www/html"
httpd.confの119行目あたりにこんな記述が。
このDocumentRootというのは、ルートディレクトリを表しています。
どうやらルートディレクトリは間違っていないらしい。
解決
ファイヤーウォールの設定をする
apache2.4をyumでインストールすると、デフォルトでhttp通信のポートが閉じているっぽいので、そのままではhttp通信のやり取りができません。
つまりwebページの閲覧ができない。
故に、ファイヤーウォールの設定でhttpの通信を許可してあげる必要があります。
# firewall-cmd --list-all
という訳で、ファイヤーウォールの稼働状況を見てみます。
public (default, active) interfaces: eno16780032 sources: services: dhcpv6-client ssh ports: masquerade: no forward-ports: icmp-blocks: rich rules:
services欄にhttpがありません。http通信はブロックされます。
ここにhttpを追加してあげる必要があります。
# firewall-cmd --permanent --add-service=http
httpを追加。
# firewall-cmd --reload
稼働状況を確認する前に設定を再起動します。
これをしないと設定が反映されません。
public (default, active) interfaces: eno16780032 sources: services: dhcpv6-client http ssh ports: masquerade: no forward-ports: icmp-blocks: rich rules:
service欄にhttpが追加されています。これで、httpのポートが開きました。
再度表示
これで再度ルートディレクトリにブラウザでアクセスしてみます。
表示されました。無駄に空欄が多い。
テストページも表示。
初めて設定する時にページを表示させるのはかなりワクワクする瞬間だというのに、とりあえずで表示できないのは勘弁してくれよ、とこの時思った。
ちなみにファイヤーウォールのポートを閉じるには、
# firewall-cmd --permanent --remove-service=http
先ほどの命令文のaddの部分をremoveにしてあげましょう。
これでファイヤーウォールの設定を再起動すると、リストからhtmlが消えます。