気まぐれSE日記

地方でエンジニアしてます

大変今更感が強いですが

Apacheをworkerで動作させてPHP4も動かしてみたい。
PHP4の動作に効果がないとは思いますが...あえて実験。


⇒結果:CentOS5.5のapacheRPM版では失敗。

1./etc/sysconfig/httpd

↓コメントを外す
#HTTPD=/usr/sbin/httpd.worker


2.phpもスレッドセーフ対応にしてmake installする必要有り。
./configure 指定時に 「--enable-roxen-zts」 を指定する

ここまではOK。

3.apache再起動...が、エラーで動かない
phpがスレッドセーフに対応してねえよってエラーで動作せず。


[Fri Mar 04 13:33:32 2011] [crit] Apache is running a threaded MPM, but your PHP Module is not compiled to be threadsafe. You need to recompile PHP.
Pre-configuration failed
apacheの何かがダメっぽいらしい。ちなみにPHPを何度もmake installしても結果は同じだった。


ダメっぽいのでこの後、apacheRPMではなく、ソースファイルからmake install してphpももう一回makeしてやったら動いた

httpdはworker起動


/usr/local/apache2/bin/httpd -V
Server version: Apache/2.2.17 (Unix)
Server built: Mar 2 2011 18:42:28
Server's Module Magic Number: 20051115:25
Server loaded: APR 1.4.2, APR-Util 1.3.10
Compiled using: APR 1.4.2, APR-Util 1.3.10
Architecture: 32-bit
Server MPM: Worker
threaded: yes (fixed thread count)
forked: yes (variable process count)

/usr/local/apache2/bin/httpd -M
Loaded Modules:
core_module (static)
mpm_worker_module (static)
http_module (static)
so_module (static)
〜省略〜
dir_module (shared)
imagemap_module (shared)
actions_module (shared)
speling_module (shared)
userdir_module (shared)
alias_module (shared)
rewrite_module (shared)
php4_module (shared)
Syntax OK

こんな感じ。PHPも動作しているので問題はなさそうだけど、効果はあるのか?なぁ..ベンチマーク時間あったらやってみたい。あと、PHPはworkerだと不安定ぽいらしいので実運用には向かないようです。


参考
Apache 2.0の必須設定と基本セキュリティ対策 (2/3):実用 Apache 2.0運用・管理術(1) - @IT
ApacheのMPM、「prefork」と「worker」を切り替える方法