このページではLinux上でApache/httpdを使ったWebサーバー書式チェック起動設定の反映方法についてビギナー向けに解説します。
お便利サーバー.com+相互リンクサイト内をキーワードで検索
Webサーバーの構築

Webサーバーについて

Apacheの構成と設定の準備

全般的な動作環境の設定

コンテナディレクティブの形式

コンテナディレクティブの設定

ドキュメントルートの設定等

ユーザーディレクトリの設定

バーチャルホストの設定

CGIの実行許可の設定

ユーザー認証機能の設定

httpdのコントロール

httpdの動作チェック

ポートフォワーディングの設定


設定ファイルの書式チェックコマンドについて

WBEL CentOS インストール の「パッケージグループの選択」で、 "Webサーバ" ( Apache )を選択しておくと WBEL3のインストール「パッケージグループの選択」 CentOS3のインストール「パッケージグループの選択」 WBEL4のインストール「パッケージグループの選択」 CentOS4のインストール「パッケージグループの選択」 CentOS5のインストール「パッケージグループの選択」 、Apacheの動作コントロール コマンド apachectl が自動的にインストールされています。

このコマンドは、 httpd の起動や終了、動作チェックの他、保存済みの設定ファイル"/etc/httpd/conf/httpd.conf"の誤りを探し出してレポートすることができます。

しかし実際のところは、apachectlはhttpdの実体プログラムである "/usr/sbin/httpd" を利用して作られている シェル スクリプト で、例えば"/etc/httpd/conf/httpd.conf"の書式チェックを行う場合は、

apachectl -t

と実行しますが、httpdの起動、停止のコントロールに一般的に用いられるシェルスクリプト、 "/etc/init.d/httpd" でも、

/etc/init.d/httpd configtest

と実行することで、同じ書式チェックを行うことができます。

実のところこれらのコマンドは、httpdの本体プログラムである"/usr/sbin/httpd"に対して間接的に、

httpd -t

と命令しているだけですから、これらの三つの方法のどれでも同じ書式チェックを行うことができます。

[root@web1 ~]# httpd -tEnter
Syntax error on line 307 of /etc/httpd/conf/httpd.conf:
/etc/httpd/conf/httpd.conf:336: <Directory> was not closed.!/etc/httpd/conf/httpd.conf:307: <Directory> was not closed.
「"/etc/httpd/conf/httpd.conf"の307行目に書式エラーがあります。」
[root@web1 ~]#

これらのチェックコマンドは非常に強力で、"/etc/httpd/conf/httpd.conf"だけではなく、 "/etc/httpd/conf.d/" 以下に収容されているモジュール類の設定ファイルも同時に検査します。

またそれらの単純な書式上の誤りだけではなく、その中で記述されているディレクトリやファイルが存在しない場合や、それらのディレクトリやファイルの パーミッション がhttpdの動作の妨げになるようなケースでもエラーをリポートします。

もしも設定に問題がなければ、以下のように表示されます。

[root@web1 ~]# httpd -tEnter
Syntax OK
[root@web1 ~]#

ただし、チェックの対象となるのはあくまで保存されている設定ファイルで、実行中のhttpdではないことに注意してください。

細かいパラメータの修正程度ならば、これらのコマンドでいちいちチェックする必要はありませんが、キーワードを新規に作成したり、大幅に内容を書き換えたりしたときは必ずチェックを行うようにしましょう。

ただしチェックできるのは、仕組みとしての誤りだけで、設定内容そのものの間違いはチェックできませんので、「チェック」の意味を間違えないようにしてください。

このページの先頭へ↑

httpdの起動、停止、再起動

httpd の起動、停止は通常、予め準備されている シェル スクリプト "/etc/init.d/httpd" を利用して行います。

正確なスクリプトの場所は "/etc/rc.d/init.d/httpd" ですが、予めディレクトリ "/etc/rc.d/init.d/" シンボリックリンク "/etc/init.d/" で作成されていますので、 "/etc/init.d/httpd" でも実行することができます。

このシェルスクリプトが格納されているディレクトリには パス が通っていませんのでパス名付きで実行する必要があります パスが通っていない場所のファイルを実行するには

パス名を付けずに コマンド 名"httpd"のみで実行すると、パスが通っているhttpdの実体プログラム "/usr/sbin/httpd" Apacheの構成ファイル が呼び出されてしまいますので注意してください。

書式は以下のとおりです。作業はすべてroot アカウント から行います。

/etc/init.d/httpd start...httpdの起動

/etc/init.d/httpd stop...httpdの停止

[tanaka@web1 ~]$ su -Enter
Password: "root"のパスワードを入力します。 Enter
[root@web1 ~]# /etc/init.d/httpd startEnter
httpdを起動中:                       [ OK ]
[root@web1 ~]# /etc/init.d/httpd stopEnter
httpdを停止中:                       [ OK ]
[root@web1 ~]#

"/etc/httpd/conf/httpd.conf"を書き換えた後にその設定を有効にするには、一度httpdを停止して起動しなおすか、以下のコマンドを実行します。

/etc/init.d/httpd restart...httpdの再起動

/etc/init.d/httpd reload...httpdの設定の再読み込み

httpd reload は、httpdを終了せずに設定の読み込みをやりなおします。
ただし、httpdの設定に誤りがある場合で、実際に設定の再読み込みが行われなくても[ OK ]のメッセージが表示されてしまいます。
従って、 httpd reload の使用はお勧めしません。
[root@web1 ~]# /etc/init.d/httpd restartEnter
httpdを停止中:                       [ OK ]
httpdを起動中:                       [ OK ]
[root@web1 ~]# /etc/init.d/httpd reloadEnter
httpdを再読み込み中:                    [ OK ]
[root@web1 ~]#

httpdが現在稼動してるかどうかを確認するには、

/etc/init.d/httpd status...httpdの状態確認

あるいは、 ps コマンドで起動プロセスを確認します。

httpdは設定によって最初から複数のプロセスを起動します。右のように大量に起動中のプロセスが見つかっても異常ではありません。
[root@web1 ~]# /etc/init.d/httpd statusEnter
httpd (pid 5877 5876 5875 5874 5873 5872 5871 5870 5848) を実行中...
[root@web1 ~]# ps ax | grep httpdEnter パイプ処理の説明 grepコマンドの説明
5848 ?    S   0:02 /usr/sbin/httpd
5870 ?    S   0:00 /usr/sbin/httpd
5871 ?    S   0:00 /usr/sbin/httpd
5872 ?    S   0:00 /usr/sbin/httpd
5873 ?    S   0:00 /usr/sbin/httpd
5874 ?    S   0:00 /usr/sbin/httpd
5875 ?    S   0:00 /usr/sbin/httpd
5876 ?    S   0:00 /usr/sbin/httpd
5877 ?    S   0:00 /usr/sbin/httpd
 ↑httpdが実行中であることを示します。
5890 pts/2  S   0:00 grep httpd
 ↑このgrepコマンドのプロセスです。
[root@web1 ~]# /etc/init.d/httpd stopEnter
httpdを停止中:                       [ OK ]
[root@web1 ~]# /etc/init.d/httpd statusEnter
httpdは停止しています
[root@web1 ~]# ps ax | grep httpdEnter
5919 pts/2  S   0:00 grep httpd
[root@web1 ~]#

httpdは設定に誤りがあるときは起動できません。

以下に、"/etc/httpd/conf/httpd.conf"に記述ミスがある状態でhttpdを再起動した場合を示します。

"/etc/init.d/httpd"は、設定に誤りがあってhttpdを起動できない場合は、このように自動的に設定のチェックコマンド "httpd -t" が実行されるようになっています。
[root@web1 ~]# /etc/init.d/httpd restartEnter
httpdを停止中:                       [ OK ]
httpdを起動中: Syntax error on line 307 of /etc/httpd/conf/httpd.conf:
/etc/httpd/conf/httpd.conf:336: <Directory> was not closed.!/etc/httpd/conf/httpd.conf:307: <Directory> was not closed.
                              [失敗]
[root@web1 ~]#

つまり、設定に誤りがあることに気付かずにhttpdの再起動を実行してしまうとhttpdは停止したままになってしまいます。

この場合はもちろん設定を修正して起動すれば良いだけですが、それまではhttpdを稼動させることはできないということになります。

もし、httpdの稼動をできるだけ停止したくないときには、再起動操作を行う前に、 "apachectl -t "httpd -t" で設定をチェックすることをお勧めします。

また、httpdを起動、再起動した後は必ず httpdの動作チェック を参考に、具体的な動作内容の確認も合わせて行ってください。

このページの先頭へ↑

httpdを自動的に起動する

httpd は、常に動作させてしておくべき サーバー アプリケーション ですから、 構築中のLinuxサーバー が起動したときに自動的に デーモン が起動するように設定しておきましょう。

設定は ntsysv コマンド で設定画面を開き、 "httpd" にチェックを入れるだけです。

httpdをntsysvで自動起動登録する
"httpd"を"ntsysv"で自動起動登録する

設定が終わったら念のため一度 構築中のLinuxサーバー reboot コマンドで再起動し、上のパートで説明した動作確認の方法で、きちんと起動しているかどうかをチェックしてみてください。

このサイトは リンクフリー です。趣味や勉強のためでしたら、引用、転用、コピー、朗読、その他OKです。このサイトへのリンクについては こちら をご覧ください。今のところ更新予定はありませんのでご了承ください。
”Linux”は、Linus Torvalds 氏の各国における登録商標です。”Red Hat”及びRed Hatのロゴおよび Red Hat をベースとしたすべての商標とロゴは、各国におけるRed Hat, Inc. 社の商標または登録商標です。その他のプログラム名、システム名、製品名などは各メーカー、ベンダの各国における登録商標又は商標です。