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已經成功啟動。