web-dev-qa-db-ja.com

スレッドセーフPHPを使用してUbuntu 14.04でイベントMPM Apache 2.4を有効にする方法

デフォルトの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を手動で再コンパイルする必要はありません)

23
Towerman

event MPMを無効にするにはSudo a2dismod mpm_eventを実行し、その後preforkを有効にするにはSudo a2enmod mpm_preforkを実行する必要があります。

最後にApacheを再起動します。

Sudo service Apache2 restart
37
Mehraban

これは私のために働いた。

最初に、このパッケージがインストールされているかどうかを確認してください。

dpkg -l | grep libapache2-mod-php5

持っている場合は削除してください:

apt-get remove libapache2-mod-php5
13
Carlos Mafla

ApacheがPHPと並行して通信するための複数の方法をインストールできます。 fastcgi/php-fpmに加えて(まだ)古いmod_phpがインストールされているかもしれません。

実行時にApacheがロードしたモジュールを確認できます

Apache2ctl -M

必要に応じて、Sudoを使用してルート権限を取得します。 Apacheが現在使用しているモジュールにphp5_module (shared)が表示されている場合、古いmod_phpがまだインストールされており、mpm_workerまたはmpm_eventの使用をブロックしています。

6

私にとっては、debianで完全に動作します:

  1. プリフォークを無効にし、イベントを有効にします:a2dismod mpm_prefork && a2enmod mpm_event
  2. mod-php5を削除:aptitude remove libapache2-mod-php5
  3. VHostにphp_でカプセル化された各<IfModule mod_php5.c></IfModule>オプションがあることに注意してください。そうでない場合、Apacheは再起動しません
  4. service Apache2 restartを行います
2
suther

Apache構成ファイルのLoad Modulesセクションで次を探します。

LoadModule mpm_event_module modules/mod_mpm_event.so

そして、次のモジュールに置き換えます:

LoadModule mpm_prefork_module modules/mod_mpm_prefork.so