FreeBSD改用Apache Event模式與PHP-FPM加大伺服器能承受的連線數與PHP的執行效率
請先安裝Apache2.4+PHP7.4+Mariadb10.3,請參考FreeBSD使用pkg安裝apache2-mariadb10-php7(第二版)
Step1)更改Apache的MPM(Multi-Processing Module)模式為event模式,使用thread處理連線,比較不耗系統資源來處理連線。
#ee /usr/local/etc/apache24/httpd.conf
去除mod_mpm_event.so前方的「#」,在mod_mpm_prefork.so前方加上「#」,如下。
LoadModule mpm_event_module libexec/apache24/mod_mpm_event.so
#LoadModule mpm_prefork_module libexec/apache24/mod_mpm_prefork.so
Step2)移除php74
(1)移除php74
#pkg remove -y mod_php74
(2)編輯httpd.conf,停用libphp7.so,在前方加上「#」
ee /usr/local/etc/apache24/httpd.conf
#LoadModule php7_module libexec/apache24/libphp7.so
檢查設定檔,重新啟動apache
#apachectl configtest
#apachectl restart
Step3)啟用PHP-FPM模組
(1)在/etc/rc.conf增加php_fpm_enable="YES"
#sysrc php_fpm_enable="YES"
(2)編輯httpd.conf,啟用mod_proxy.so與 mod_proxy_fcgi.so,去除前方「#」
ee /usr/local/etc/apache24/httpd.conf
LoadModule proxy_module libexec/apache24/mod_proxy.so
LoadModule proxy_fcgi_module libexec/apache24/mod_proxy_fcgi.so
(3)啟用php-fpm服務,會開啟9000埠,接著重新啟動apache。
#service php-fpm start
#apachectl restart
Step4)檢查是否安裝成功
#apachectl -M | grep 'mpm'
是否出現「mpm_event_module (shared)」表示執行event模組
#apachectl -M | grep 'proxy'
是否出現「proxy_module (shared) proxy_fcgi_module (shared)」表示執行proxy_module與proxy_fcgi_module模組
Step5)在<Directory "/usr/local/www/apache24/data">內新增<FilesMatch>能夠讓附檔名php的檔案,轉給proxy:fcgi://127.0.0.1:9000執行。所有需要執行php的<Directory>內都可以新增<FilesMatch>,讓php轉給proxy:fcgi://127.0.0.1:9000執行。
(1)編輯httpd.conf
#ee /usr/local/etc/apache24/httpd.conf
DocumentRoot "/usr/local/www/apache24/data"
<Directory "/usr/local/www/apache24/data">
...
<FilesMatch \.php$>
SetHandler "proxy:fcgi://127.0.0.1:9000"
</FilesMatch>
</Directory>
(2)重新啟動apache
#apachectl restart
Step6)測試php是否能執行
(1)在/usr/local/www/apache24/data新增檔案info.php
<?php
phpinfo();
?>
(2)瀏覽http://127.0.0.1/info.php,看到Server API是FPM/FastCGI ,表示FPM已經成功啟動。