デフォルトのApacheインストールで新しいイベントMPMが使用されることを期待して、Ubuntu Server 14.04にアップグレードしましたが、代わりに古いメモリを食べるプリフォークが見つかりました。
Arch LinuxでイベントMPMを正常にセットアップしましたが、Ubuntuではそうしていません。私は取得し続けます:
Apache is running a threaded MPM, but your PHP Module is not compiled to be threadsafe. You need to recompile PHP
私はすでにphp-fpm
をインストールし、それを使用するようにApache2を構成しましたが、Apache2の構成ファイルはUbuntuで異なるため、適切な場所で実行しているかどうかはよくわかりません。
Apache2 event-mpmを使用できるようにPHPスレッドセーフにする方法についてのアイデアはありますか? (もちろん、PHPを手動で再コンパイルする必要はありません)
event MPM
を無効にするにはSudo a2dismod mpm_event
を実行し、その後prefork
を有効にするにはSudo a2enmod mpm_prefork
を実行する必要があります。
最後にApacheを再起動します。
Sudo service Apache2 restart
これは私のために働いた。
最初に、このパッケージがインストールされているかどうかを確認してください。
dpkg -l | grep libapache2-mod-php5
持っている場合は削除してください:
apt-get remove libapache2-mod-php5
ApacheがPHPと並行して通信するための複数の方法をインストールできます。 fastcgi/php-fpmに加えて(まだ)古いmod_phpがインストールされているかもしれません。
実行時にApacheがロードしたモジュールを確認できます
Apache2ctl -M
必要に応じて、Sudo
を使用してルート権限を取得します。 Apacheが現在使用しているモジュールにphp5_module (shared)
が表示されている場合、古いmod_phpがまだインストールされており、mpm_worker
またはmpm_event
の使用をブロックしています。
私にとっては、debianで完全に動作します:
a2dismod mpm_prefork && a2enmod mpm_event
aptitude remove libapache2-mod-php5
php_
でカプセル化された各<IfModule mod_php5.c></IfModule>
オプションがあることに注意してください。そうでない場合、Apacheは再起動しませんservice Apache2 restart
を行いますApache構成ファイルのLoad Modulesセクションで次を探します。
LoadModule mpm_event_module modules/mod_mpm_event.so
そして、次のモジュールに置き換えます:
LoadModule mpm_prefork_module modules/mod_mpm_prefork.so