これだけは知っておきたい!5つのApacheコマンドラインオプション.

Webサーバではnginxが好きなんですが,仕事では専らApacheを使ってます.
知ってる人多い上に,なんでも揃えられるし外せるしっていう意味で重宝してます.

そんなApacheですが,コマンドラインでの使い方を知っている人が少ない気がします.
いくつかのオプションを知っているだけでグンッとオペレーションが楽になります.

前置き

[httpd]コマンドにパスが通っていることを前提として進めます.
RHEL+yumだと[/usr/sbin/httpd]とかですね.

httpd -v

バージョン番号を出力する.

$ httpd -v
Server version: Apache/[バージョン]
Server built:   [時刻]

httpd -V

コンパイル情報を出力する.

下はRHELにyumで入れたApacheの例.

$ httpd -V
Server version: Apache/[バージョン]
Server built:   [時刻]
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"

httpd -l

コンパイルされているモジュールの一覧を出力する.

下はRHELにyumで入れたApacheの例.

$ httpd -l
Compiled in modules:
  core.c
  prefork.c
  http_core.c
  mod_so.c

httpd -S

設定されているバーチャルホストの一覧を出力する.

下はRHELにyumで入れたApacheにVirtualHostを2つ設定した例.

$ httpd -S
VirtualHost configuration:
wildcard NameVirtualHosts and _default_ servers:
_default_:443          [FQDN] (/etc/httpd/conf.d/ssl.conf:[設定ファイルの該当行数])
*:80                   is a NameVirtualHost
         default server [FQDN] (/etc/httpd/conf/httpd.conf:[設定ファイルの該当行数])
         port 80 namevhost [FQDN] (/etc/httpd/conf/httpd.conf:[設定ファイルの該当行数])
         port 80 namevhost [FQDN] (/etc/httpd/conf/httpd.conf:[設定ファイルの該当行数])
Syntax OK

httpd -t

設定ファイルの構文チェックをおこなう.

[service httpd configtest]とかと同じ意味です.
余談ですが,[service httpd XXXX]っていうコマンド(実体は/etc/init.d/httpd)を投げると,[apachctl]っていうコマンドを呼び出すようになってます.
で,この[apachectl]から[httpd]コマンドに対してコマンドを発行します.名前が複数箇所で被っていて混乱しそうですけど簡単です.

こんな感じ

Apacheの説明用キャプチャ

[apachectl]はシェルスクリプトなので読んでみたら理解深まるとおもいます.

エラーがない時
$ httpd -t
Syntax OK
エラーがある時
$ httpd -t
httpd: Syntax error on line 1064 of /etc/httpd/conf/httpd.conf: </VirtualHost> without matching <VirtualHost> section

まとめ

主要なコマンドラインオプションを5つ紹介してみました.
[httpd -h]でオプション一覧が確認できますので興味がある方は是非.