SyntaxHighlighter

2011年9月24日土曜日

Apache の既存環境調査

まずプロセスを見る。(プロセス表示のコマンドはOSによってオプションとかいろいろ異なるので勝手に読み替えて)

# /usr/ucb/ps auxww | grep httpd | grep -v grep
root       803  0.1  0.4 5308 2056 ?        S 15:14:35  0:00 /usr/local/apache2064/bin/httpd -k start
nobody     805  0.0  0.3 5332 1308 ?        S 15:14:35  0:00 /usr/local/apache2064/bin/httpd -k start
nobody     807  0.0  0.3 5332 1308 ?        S 15:14:35  0:00 /usr/local/apache2064/bin/httpd -k start
nobody     808  0.0  0.3 5332 1308 ?        S 15:14:35  0:00 /usr/local/apache2064/bin/httpd -k start
nobody     804  0.0  0.3 5332 1308 ?        S 15:14:35  0:00 /usr/local/apache2064/bin/httpd -k start
nobody     806  0.0  0.3 5332 1308 ?        S 15:14:35  0:00 /usr/local/apache2064/bin/httpd -k start

上記の例の場合、/usr/local/apache2064 が Apache のインストールディレクトリ。-f オプションがないので、設定ファイルはデフォルトの、インストールパス/conf/httpd.conf (例の場合 /usr/local/apache2064/conf/httpd.conf)が読み込まれている。-f オプションがある場合は、その直後にあるパスの設定ファイルを読み込んでいる。
設定ファイルのパスがわかればあとはそれを見ればほとんどの環境調査は可能なはず。 Listen ポート、DocumentRoot、ログの場所などは全て設定ファイルを見ればわかる。

設定ファイルではわからないが重要な情報としてはバージョンと静的に組み込まれたモジュールの情報ぐらいか。

バージョンの確認方法は httpd に -v または -V オプションを付けて実行する(ラージVのほうがちょっとだけ詳しい)。 httpd が起動していても停止していても関係なく実行でき、起動中の httpd に影響が出ることもない。

# /usr/local/apache2064/bin/httpd -v
Server version: Apache/2.0.64
Server built:   Aug 31 2011 20:09:15
# /usr/local/apache2064/bin/httpd -V
Server version: Apache/2.0.64
Server built:   Aug 31 2011 20:09:15
Server's Module Magic Number: 20020903:14
Server loaded:  APR 0.9.19, APR-UTIL 0.9.19
Compiled using: APR 0.9.19, APR-UTIL 0.9.19
Architecture:   32-bit
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_FCNTL_SERIALIZE
-D APR_USE_PTHREAD_SERIALIZE
-D SINGLE_LISTEN_UNSERIALIZED_ACCEPT
-D APR_HAS_OTHER_CHILD
-D AP_HAVE_RELIABLE_PIPED_LOGS
-D HTTPD_ROOT="/usr/local/apache2064"
-D SUEXEC_BIN="/usr/local/apache2064/bin/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 で確認できる。これも httpd の起動状態に関係なく、また影響を及ぼすこともなく実行できる。

# /usr/local/apache2064/bin/httpd -l
Compiled in modules:
core.c
mod_access.c
mod_auth.c
mod_include.c
mod_log_config.c
mod_env.c
mod_setenvif.c
prefork.c
http_core.c
mod_mime.c
mod_status.c
mod_autoindex.c
mod_asis.c
mod_cgi.c
mod_negotiation.c
mod_dir.c
mod_imap.c
mod_actions.c
mod_userdir.c
mod_alias.c
mod_rewrite.c
mod_so.c

ここで表示されるのは、Apache に静的に組み込まれているモジュール、つまりコンパイル時に --enable-module されたモジュール。モジュールを追加したい場合には、Apache の再コンパイルが必要になる。ただし、mod_so が組み込まれていれば、Apache を再コンパイルすることなく動的にモジュールを追加することができる。
mod_so の機能を使って動的に追加されたモジュールはここには表示されず、何が組み込まれているのかは設定ファイルの LoadModule ディレクティブを見ればわかる。

0 件のコメント:

コメントを投稿