Apacheはデーモンとしてさせる必要があるのでserviceコマンドを使用して起動させます。
serviceコマンドはデーモンの起動・再起動・停止・状態確認などの操作を行なえます。
まずはApacheの状態を確認します。状態確認は以下のコマンドで行なえます。
# service httpd status httpd is stopped
「stopped」と表示されたので、現在、Apacheは停止中となっています。「running…」と表示されれば、Apacheは既に起動中であることを示します。
Apacheを起動する
Apacheを起動するには以下のコマンドを実行します。
# service httpd start Starting httpd: [ OK ]
httpd.confを編集する
Apacheを起動したら、テストページを用意し、実際にそのテストページを表示させてみましょう。
テストページを表示させるため、「httpd.conf」ファイルを編集し、Apacheを設定します。
# cd /etc/httpd/conf # vi httpd.conf Listen 80 ServerAdmin root@localhost ServerName www.test.com:80 UseCanonicalName On DocumentRoot "/var/www/html"
「httpd.conf」ファイルを開いたら、何百もの行がずらずらと記述されていますが、まずは上記の5つの設定を確認します。(上記以外のディレクティブの記述については削除せず、そのままとしておきます。)
「Listen」ディレクティブにはApacheが待ち受けるポート番号を、「ServerAdmin」にはWebサーバー(Apache)の管理者のメールアドレスを記述します。必要に応じて編集してください。
「ServerName」ディレクティブはWebサーバーが自分自身のホスト名を示す時に使われる名前を指定します。例えば、Apacheがエラー表示をする場合に、自分自身を表すホスト名も合わせて表示する場合などに、ここで指定したホスト名が使われます。(「ServerName」ディレクティブが指定されていない場合はWebサーバーに割り当てられているIPアドレスをDNSで逆引きして取得したホスト名が表示されます。)
「ServerName」ディレクティブの指定は「ホスト名:ポート番号」のフォーマットで記述します。
「ServerName」ディレクティブで指定した設定を有効にするには、「UseCanonicalName」ディレクティブを「On」に設定する必要があります。「On」に設定するとサーバー名として「ServerName」ディレクティブの指定を使うようになります。
「DocumentRoot」ディレクティブではドキュメントルートを指定します。ドキュメントルートはWebページに使うファイルを置くディレクトリの起点となる、いわばWebサーバーのルートディレクトリのことです。そのドキュメントルート配下に格納したファイルがWebページとして公開されます。上記例では「/var/www/html」がドキュメントルートとなります。
ドキュメントルート配下にコンテンツを格納する
ドキュメントルート配下にテスト用のWebページを格納します。
# cd /var/www/html # vi index.html <html> <head><title>テストページ</title></head> <body> <p>テストページです。</p> </body> </html>
httpd.confを反映する
「httpd.conf」ファイルを編集しただけではApacheに設定は反映されません。設定を反映させるためにはApacheを再起動させる必要があります。Apache再起動は以下のコマンドで行なえます。
# service httpd restart Stopping httpd: [ OK ] Starting httpd: [ OK ]
以上でWebサApacheの設定は完了です。
ファイアウォール設定を確認する
CentOSの初期設定では外部からのポートはssh(22)以外は拒否する設定となっており、http(80)への通信はファイアウォールでドロップされてしまいます。
まずはファイアウォール(iptables)の設定を確認します。iptablesはLinuxの標準的なファイアウォール・アプリケーションです。
# service iptables status Table: filter Chain INPUT (policy ACCEPT) num target prot opt source destination 1 ACCEPT all -- 0.0.0.0/0 0.0.0.0/0 state RELATED,ESTABLISHED 2 ACCEPT icmp -- 0.0.0.0/0 0.0.0.0/0 3 ACCEPT all -- 0.0.0.0/0 0.0.0.0/0 4 ACCEPT tcp -- 0.0.0.0/0 0.0.0.0/0 state NEW tcp dpt:22 5 REJECT all -- 0.0.0.0/0 0.0.0.0/0 reject-with icmp-host-prohibited Chain FORWARD (policy ACCEPT) num target prot opt source destination 1 REJECT all -- 0.0.0.0/0 0.0.0.0/0 reject-with icmp-host-prohibited Chain OUTPUT (policy ACCEPT) num target prot opt source destination
上記状態では、外部から本サーバーへの接続はssh(22)のみ許可しており、それ以外は拒否されます。httpの接続許可の設定を追加してみましょう。
# iptables -I INPUT 5 -p tcp --dport http -j ACCEPT
「-I」でチェインと番号を指定すると、指定したチェインの指定した番号にルールが挿入されます。指定した番号以降のルールは、それぞれ一つ下にずれます。番号をつけない場合は、先頭(1番)にルールを挿入されます。
続いて、変更した内容を保存します。
# service iptables save iptables: Saving firewall rules to /etc/sysconfig/iptables:[ OK ]
最後にもう一度iptablesの設定を確認し、上記で追加したルールが追加されていることを確認します。
# service iptables status
Table: filter
Chain INPUT (policy ACCEPT)
num target prot opt source destination
1 ACCEPT all -- 0.0.0.0/0 0.0.0.0/0 state RELATED,ESTABLISHED
2 ACCEPT icmp -- 0.0.0.0/0 0.0.0.0/0
3 ACCEPT all -- 0.0.0.0/0 0.0.0.0/0
4 ACCEPT tcp -- 0.0.0.0/0 0.0.0.0/0 state NEW tcp dpt:22
5 ACCEPT tcp -- 0.0.0.0/0 0.0.0.0/0 tcp dpt:80
6 REJECT all -- 0.0.0.0/0 0.0.0.0/0 reject-with icmp-host-prohibited
Chain FORWARD (policy ACCEPT)
num target prot opt source destination
1 REJECT all -- 0.0.0.0/0 0.0.0.0/0 reject-with icmp-host-prohibited
Chain OUTPUT (policy ACCEPT)
num target prot opt source destination
以上で、httpでの接続が可能になりました。
SELinuxを無効化する
SELinuxはセキュリティ管理するLinuxカーネル用のセキュリティ拡張機能です。SELinuxを利用することで強力なアクセス制限が可能になりますが、その制限により、インストール作業や運用業務でつまづくことが多々あります。
Apacheについて覚えていく上で、SELinuxは趣旨からはずれるため、ここではSELinuxを無効にします。
# setenforce 0
SELinuxの状態は以下のコマンドで確認できます。
# getenforce Permissive
「Permissive」と表示されれば、SELinuxによるアクセス制限は無効になっています。
Enforcing | SELinux機能、アクセス制御が有効。 |
Permissive | SElinuxは警告を出力するが、アクセス制限は無効。 |
Disabled | SElinux機能、アクセス制御が無効。 |
ただし、上記設定ではOSを再起動するとSELinuxが再び有効になってしまいます。再起動後もSELinuxを無効にするには、「/etc/selinux/config」を直接編集します。
# vi /etc/selinux/config SELINUX=disabled
以上でSELinuxは常に無効になります。
Webページを表示する
Apache以外の設定もたくさんありましたが、これで準備が整いました。早速、テストページを表示させてみます。
クライアントパソコンからブラウザを起動し、アドレスバーにURLを入力し、Enterキーを押してください。ここまでの手順では、DNSにホスト名を登録していないので、URLのホスト名部分にはWebサーバーのアドレスを直接入力します。(もしくはhostsファイルを編集してください。)
また、上記したテスト用Webページの作成手順ではHTMLファイル名を「index.html」としたので、URLは「http://<WebサーバーのIPアドレス>」となります。(「/index.html」の記述は省略できます。)
テストページが表示されれば成功です。