FastCGIとPHP5-FPMをubuntuで動作するように設定しましたが、正常に動作しています。
しかし、私は"Apache2 worker mpm"モジュールをインストールし、Apache2のデフォルトである"prefork mpm"を構成および置換したいと考えました。
私が見つけたのは、CentOSの/etc/sysconfig/httpd
を置くだけでHTTPD=/usr/sbin/httpd.worker
を置くだけで"worker mpm"が有効になります。
Ubuntuで「worker mpm」を有効にするにはどうすればよいですか?
また、Apache "/usr/sbin/apachectl -l"
のコンパイル済みモジュールを一覧表示すると、"prefork.c"
を一覧表示しません。しかし、"/usr/sbin/Apache2 -V | grep MPM"
を実行すると、"Server MPM:prefork"と表示されます。
$/usr/sbin/Apache2 -V | grep MPM
Server MPM: prefork
phpinfo();
Server API : FPM/FastCGI
しばらく働いた後、自分でやった。以下の手順をご覧ください。
現在実行されているMPM Apacheを確認します。
apachectl -V | grep -i mpm
Result:
Server MPM: prefork
使用可能なMPMモジュールのリスト(mpm_workerがリストされていることを確認してください)
ls /etc/Apache2/mods-available/mpm*
Result:
/etc/Apache2/mods-available/mpm_event.conf /etc/Apache2/mods-available/mpm_prefork.conf /etc/Apache2/mods-available/mpm_worker.conf
/etc/Apache2/mods-available/mpm_event.load /etc/Apache2/mods-available/mpm_prefork.load /etc/Apache2/mods-available/mpm_worker.load
有効なMPMモジュールを一覧表示します(mpm_workerが有効になっていない場合は、有効にし、mpm_preforkモジュールを無効にする必要があります)
ls -l /etc/Apache2/mods-enabled/mpm*
Result:
/etc/Apache2/mods-enabled/mpm_prefork.conf -> ../mods-available/mpm_prefork.conf
/etc/Apache2/mods-enabled/mpm_prefork.load -> ../mods-available/mpm_prefork.load
MPM_PREFORKモジュールを無効にする
a2dismod mpm_prefork
MPM_WORKERモジュールを有効にする
a2enmod mpm_worker
ApacheがMPM WORKERで実行されているかどうかを確認するには
apachectl -V | grep -i mpm
Result:
Server MPM: worker
これらのコマンドを実行した後にこのエラーが発生した場合:
Apache is running a threaded MPM, but your PHP Module is not compiled to be threadsafe. You need to recompile PHP
Libapache2パッケージを削除してみてください。
apt-get remove libapache2-mod-php5
ApacheはスレッドMPMを実行していますが、PHPモジュールはスレッドセーフにコンパイルされていません。 PHPを再コンパイルする必要があります。
これらのコマンドを実行した後にこのエラーが発生した場合:
Apache is running a threaded MPM, but your PHP Module is not compiled to be threadsafe. You need to recompile PHP
Libapache2パッケージを削除してみてください。
apt-get remove libapache2-mod-php7.0