UbuntuでApacheをMPM workerで入れてしまった後にpreforkに変更する方法

Ubunt 9.04に、Apache2をapt-getで入れて、PHP5.4をソースからコンパイルして入れて、apache2を起動しようとしたらこんなエラーが出ました。
dqneo@colinux:/usr/lib/apache2/modules% sudo /etc/init.d/apache2 restart
 * Restarting web server apache2
[Thu Jun 20 00:45:01 2013] [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
   ...fail!
エラーに"threaded MPM"と出ています。
これはつまり、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が無事動きました。
カテゴリ:

人気記事