2012-04-15 25 views
0

私はApacheをコンパイルしてビルドしなかったLinuxボックスで作業しています。/usr/sbin /の両方に実行可能ファイルがあるように見えるので、私が使用しているApache MPM(プリフォークまたはワーカー)を知ることはできません。これは、CentOSのボックスです:スクリプトは/ usr/sbinに/のapachectlでApache MPM Confusion - 明確化が必要

httpd 
httpd.worker 

は次の行です:

# the path to your httpd binary, including options if necessary 
HTTPD='/usr/sbin/httpd' 

しかしには、/ usr/sbin/apachectlの次のファイルにもHTTPDの構成を示しますこれは私はそれがHTTPDのために上記のオプションをオーバーライドし、httpd.workerでそれを指しています信じています:

$ cat /etc/sysconfig/httpd 
# Configuration file for the httpd service. 

# 
# The default processing model (MPM) is the process-based 
# 'prefork' model. A thread-based model, 'worker', is also 
# available, but does not work with some modules (such as PHP). 
# The service must be stopped before changing this variable. 
# 
HTTPD=/usr/sbin/httpd.worker 

# 
# To pass additional options (for instance, -D definitions) to the 
# httpd binary at startup, set OPTIONS here. 
# 
#OPTIONS= 

# 
# By default, the httpd process is started in the C locale; to 
# change the locale in which the server runs, the HTTPD_LANG 
# variable can be set. 
# 
#HTTPD_LANG=C 

# 
# By default, the httpd process will create the file 
# /var/run/httpd/httpd.pid in which it records its process 
# identification number when it starts. If an alternate location is 
# specified in httpd.conf (via the PidFile directive), the new 
# location needs to be reported in the PIDFILE. 
# 
#PIDFILE=/var/run/httpd/httpd.pid 

私の結論は、私はMPMワーカーを使用しているということです。しかし、なぜMPMプリフォークとしてコンパイルされたような/ usr/sbinにhttpd実行可能ファイルがありますか?これらのコマンドを見て?アーティファクト多分?:

# httpd -l 
compiled in modules: 
core.c 
prefork.c 
http_core.c 
mod_so.c 

$ httpd -V 
Server version: Apache/2.2.15 (Unix) 
Server built: Feb 13 2012 22:31:42 
Server's Module Magic Number: 20051115:24 
Server loaded: APR 1.3.9, APR-Util 1.3.9 
Compiled using: APR 1.3.9, APR-Util 1.3.9 
Architecture: 64-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="run/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.worker -l 
Compiled in modules: 
core.c 
worker.c 
http_core.c 
mod_so.c 

$ apachectl -l 
Compiled in modules: 
core.c 
worker.c 
http_core.c 
mod_so.c 
# apachectl -V 
Server version: Apache/2.2.15 (Unix) 
Server built: Feb 13 2012 22:33:00 
Server's Module Magic Number: 20051115:24 
Server loaded: APR 1.3.9, APR-Util 1.3.9 
Compiled using: APR 1.3.9, APR-Util 1.3.9 
Architecture: 64-bit 
Server MPM:  Worker 
    threaded:  yes (fixed thread count) 
    forked:  yes (variable process count) 
Server compiled with.... 
-D APACHE_MPM_DIR="server/mpm/worker" 
-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_SCOREBOARD="logs/apache_runtime_status" 
-D DEFAULT_ERRORLOG="logs/error_log" 
-D AP_TYPES_CONFIG_FILE="conf/mime.types" 
-D SERVER_CONFIG_FILE="conf/httpd.conf" 

私はhttpd.worker実行していると信じて、最終的な理由:

ps -C httpd.worker -F 
UID  PID PPID C SZ RSS PSR STIME TTY   TIME CMD 
root  13603  1 0 34690 4852 1 01:58 ?  00:00:00 /usr/sbin/httpd.worker 
apache 13605 13603 0 34619 2352 1 01:58 ?  00:00:00 /usr/sbin/httpd.worker 
apache 13606 13603 0 123554 7444 1 01:58 ?  00:00:00 /usr/sbin/httpd.worker 
apache 13607 13603 0 240987 52604 0 01:58 ?  00:00:00 /usr/sbin/httpd.worker 
apache 13609 13603 0 273755 52396 0 01:58 ?  00:00:00 /usr/sbin/httpd.worker 
apache 13611 13603 0 290139 52128 0 01:58 ?  00:00:00 /usr/sbin/httpd.worker 

答えて

3

あなたがCentOSの上にある場合、オープンは/ usr/sbinに/のapachectlをし、次の行の下にお言及

# the path to your httpd binary, including options if necessary 
HTTPD='/usr/sbin/httpd' 

次の行見つける:

# Source /etc/sysconfig/httpd for $HTTPD setting, etc. 
if [ -r /etc/sysconfig/httpd ]; then 
    . /etc/sysconfig/httpd 
fi 

これは、apachectlがapachectl自身のHTTPD変数を取得してオーバーライドする方法です。

これは、実際にプリフォークの代わりに作業者mpmを使用していることを意味します。

関連する問題