Apache の起動、停止だけじゃない httpd コマンド
あっ・・・
という間に、一月も終わりを迎えようとしています。こんにちは、nakamura です。都会は時間が経つのが早かね~。毎日、精一杯生きましょうね。
Apache って一体何なんだ?とは日頃あまり考えませんが、とどのつまりは httpd というコマンドをバックグラウンドで実行して 80 番ポートなり 443 番ポートなりで Listen させている、というのが実体です。この httpd コマンド、Apache の起動や停止以外にも実は色々なオプションがあり、うまく使えばとても便利なやつなんです。
注)ディストリビューションによっては httpd ではなく apache2 コマンドの場合もあります。また、バージョンによってもオプションに違いがあります。今回は Apache 2.2.3 での解説です。
httpd -t
-t オプションを付けて実行する事で設定ファイルのシンタックスチェックが可能です。実行結果に『 Syntax OK 』と表示されれば問題なしです。
httpd -S
-t 以外にもシンタックスチェックを行ってくれるオプションがあり、中でも個人的によく使うのが -S オプションです。これは読み込まれるバーチャルホストの設定を一覧表示した上でシンタックスチェックしてくれます。バーチャルホストの追加を行う際、正常に読み込まれているか確認するのにとても有用です。
実行結果
sh > httpd -S
wildcard NameVirtualHosts and _default_ servers:
*:80 is a NameVirtualHost
default server localhost (/etc/httpd/conf/vhosts/00_default.conf:1)
port 80 namevhost localhost (/etc/httpd/conf/vhosts/00_default.conf:1)
port 80 namevhost www1.example.com (/etc/httpd/conf/vhosts/www1.conf:1)
port 80 namevhost www2.example.com (/etc/httpd/conf/vhosts/www2.conf:1)
*:443 is a NameVirtualHost
default server localhost (/etc/httpd/conf/vhosts/00_default_ssl.conf:1)
port 443 namevhost localhost (/etc/httpd/conf/vhosts/00_default_ssl.conf:1)
Syntax OK
httpd -M
-M オプションは読み込まれるモジュールを一覧表示した上でシンタックスチェックしてくれます。あまり使用頻度は高くありませんが、サードパーティーのモジュールを読み込ませたり、何かが動かない時のトラブルシューティングに使えます。
実行結果
sh > httpd -M
Loaded Modules:
core_module (static)
mpm_prefork_module (static)
http_module (static)
so_module (static)
auth_basic_module (shared)
auth_digest_module (shared)
authn_file_module (shared)
authn_alias_module (shared)
・・・・
・・・・この後にもたくさん続きます
・・・・
Syntax OK
httpd -L
このオプションは Apache 設定ファイルのディレクティブ(設定項目)の名前と簡単な解説、設定ファイルのどこに記述が可能かを一覧表示してくれます。『 KeepAlive の設定を追加したいけど、どこに書けばいいんだっけ?』というような時にちゃちゃっと調べられます。
実行結果
sh > httpd -L
<Directory (core.c)
Container for directives affecting resources located in the specified directories
Allowed in *.conf only outside <Directory>, <Files> or <Location>
<Location (core.c)
Container for directives affecting resources accessed through the specified URL paths
Allowed in *.conf only outside <Directory>, <Files> or <Location>
<VirtualHost (core.c)
Container to map directives to a particular virtual host, takes one or more host addresses
Allowed in *.conf only outside <Directory>, <Files> or <Location>
<Files (core.c)
Container for directives affecting files matching specified patterns
Allowed in *.conf anywhere and in .htaccess
when AllowOverride isn't None
<Limit (core.c)
Container for authentication directives when accessed using specified HTTP methods
Allowed in *.conf anywhere and in .htaccess
when AllowOverride isn't None
・・・・
・・・・この後にもたくさん続きます
・・・・
httpd -v, httpd -V
Apache のバージョン情報を表示してくれます。大文字の V はより詳細な情報( APR ライブラリのバージョンや MPM 、コンパイル時の条件等)を表示してくれます。
実行結果
sh > httpd -V
Server version: Apache/2.2.3
Server built: Sep 3 2009 17:38:51
Server's Module Magic Number: 20051115:3
Server loaded: APR 1.2.7, APR-Util 1.2.7
Compiled using: APR 1.2.7, APR-Util 1.2.7
Architecture: 32-bit
Server MPM: Prefork
threaded: no
forked: yes (variable process count)
Server compiled with....
-D APACHE_MPM_DIR="server/mpm/prefork"
-D APR_HAS_SENDFILE
-D APR_HAS_MMAP
-D APR_HAVE_IPV6 (IPv4-mapped addresses enabled)
-D APR_USE_SYSVSEM_SERIALIZE
-D APR_USE_PTHREAD_SERIALIZE
-D SINGLE_LISTEN_UNSERIALIZED_ACCEPT
-D APR_HAS_OTHER_CHILD
-D AP_HAVE_RELIABLE_PIPED_LOGS
-D DYNAMIC_MODULE_LIMIT=128
-D HTTPD_ROOT="/etc/httpd"
-D SUEXEC_BIN="/usr/sbin/suexec"
-D DEFAULT_PIDLOG="logs/httpd.pid"
-D DEFAULT_SCOREBOARD="logs/apache_runtime_status"
-D DEFAULT_LOCKFILE="logs/accept.lock"
-D DEFAULT_ERRORLOG="logs/error_log"
-D AP_TYPES_CONFIG_FILE="conf/mime.types"
-D SERVER_CONFIG_FILE="conf/httpd.conf"
ちなみに
apachectl や apche2ctl といったコマンドもありますが、これは httpd コマンドの wrapper 的なもので、中身を見てみると大体ただのシェルスクリプトだったりします。ディストリビューションによって使い方がまちまちで覚えるのが面倒なので、僕はいつも httpd コマンドを直接使っています。
終わりに
特に本番サーバの Apache を再起動する際はとても神経を使いますね。この辺りのオプションをうまく使う事で再起動時のリスクをかなり減らす事が出来ます。ぜひ参考にしてみてください!