UbuntuでApacheをMPM workerで入れてしまった後にpreforkに変更する方法
これはつまり、PHPはMPM prefork用のコンパイルになっているのに、Apacheの方がMPM workerで動いてしまっていのが原因でしょう。
Apacheのコンパイルオプションを確認。
% apache2 -V
Server version: Apache/2.2.11 (Ubuntu)
Server built: Aug 16 2010 17:47:23
Server's Module Magic Number: 20051115:21
Server loaded: APR 1.2.12, APR-Util 1.2.12
Compiled using: APR 1.2.12, APR-Util 1.2.12
Architecture: 32-bit
Server MPM: Worker
threaded: yes (fixed thread count)
forked: yes (variable process count)
Server compiled with....
-D APACHE_MPM_DIR="server/mpm/worker"
やはりそうでした。workerを指定した記憶はないんだけどな・・・
解決方法
apt-get install apache2-mpm-preforkで解決しました。これをやるだけで自動的にMPM workerが削除されてpreforkに入れ替わってくれました。
$ sudo apt-get install apache2-mpm-prefork
パッケージリストを読み込んでいます... 完了
依存関係ツリーを作成しています
状態情報を読み取っています... 完了
以下のパッケージは「削除」されます:
apache2-mpm-worker
以下のパッケージが新たにインストールされます:
apache2-mpm-prefork
アップグレード: 0 個、新規インストール: 1 個、削除: 1 個、保留: 0 個。
240kB のアーカイブを取得する必要があります。
この操作後に 12.3kB のディスク容量が解放されます。
続行しますか [Y/n]? y
取得:1 http://old-releases.ubuntu.com jaunty-updates/main apache2-mpm-prefork 2.2.11-2ubuntu2.7 [240kB]
240kB を 2s で取得しました (86.5kB/s)
dpkg: apache2-mpm-worker: 依存関係に問題があります。しかし要求に従い削除しています:
apache2 は以下に依存 (depends) します: apache2-mpm-worker (>= 2.2.11-2ubuntu2.7) | apache2-mpm-prefork (>= 2.2.11-2ubuntu2.7) | apache2-mpm-event (>= 2.2.11-2ubuntu2.7) ...しかし:
パッケージ apache2-mpm-worker は削除されようとしています。
パッケージ apache2-mpm-prefork はまだインストールされていません。
パッケージ apache2-mpm-event はまだインストールされていません。
(データベースを読み込んでいます ... 現在 27208 個のファイルとディレクトリがインストールされています。)
apache2-mpm-worker を削除しています ...
* Stopping web server apache2
...done.
未選択パッケージ apache2-mpm-prefork を選択しています。
(データベースを読み込んでいます ... 現在 27199 個のファイルとディレクトリがインストールされています。)
(.../apache2-mpm-prefork_2.2.11-2ubuntu2.7_i386.deb から) apache2-mpm-prefork を展開しています...
apache2-mpm-prefork (2.2.11-2ubuntu2.7) を設定しています ...
* Starting web server apache2
apache2: Could not reliably determine the server's fully qualified domain name, using 127.0.0.1 for ServerName
...done.
確認
$ apache2 -V
Server version: Apache/2.2.11 (Ubuntu)
Server built: Aug 16 2010 17:45:31
Server's Module Magic Number: 20051115:21
Server loaded: APR 1.2.12, APR-Util 1.2.12
Compiled using: APR 1.2.12, APR-Util 1.2.12
Architecture: 32-bit
Server MPM: Prefork
threaded: no
forked: yes (variable process count)
Server compiled with....
-D APACHE_MPM_DIR="server/mpm/prefork"
やったーー!!これでPHPが無事動きました。