看板 KnucklesNote
作者 標題 [CentOS] Apache MPM event模式 mod_proxy_fcgi, php-fpm
時間 2017-02-19 Sun. 00:46:28
Apache 2.4 的記憶體管理模式 MPM
除了預設的 prefork,還可以改用 event
使用 MPM event 要使用內建的 mod_proxy_fcgi
讓 PHP 網頁改為使用獨立的 php-fpm 來執行
安裝 php-fpm
$ sudo yum install php-fpm
修改 php-fpm 設定檔
$ sudo vim /etc/php-fpm.d/www.conf
例如記憶體有2G時,修改child process設定
預設是
pm.max_children = 50
pm.start_servers = 5
pm.min_spare_servers = 5
pm.max_spare_servers = 35
;pm.max_requests = 500
改成
pm.max_children = 200
pm.start_servers = 30
pm.min_spare_servers = 30
pm.max_spare_servers = 100
pm.max_requests = 300
修改 rlimit_files = 1024
為 rlimit_files = 2048
修改 Apache 設定檔
$ sudo vim /etc/httpd/conf/httpd.conf
(或是將設定另外寫在 /etc/httpd/conf.d/common.conf 檔)
加上
<IfModule mpm_event_module>
ServerLimit 32
StartServers 32
MinSpareThreads 128
MaxSpareThreads 256
ThreadsPerChild 32
MaxRequestWorkers 1024
MaxConnectionsPerChild 10000
</IfModule>
修改 Apache 虛擬主機設定檔
$ sudo vim /etc/httpd/conf.d/vhost.conf
例如 mydomain 的 VirtualHost
在 DocumentRoot /home/mydomain/www 這行前加上
<IfModule mpm_event_module>
ProxyPassMatch ^/(.*\.php)$ fcgi://127.0.0.1:9000/home/mydomain/www/$1
</IfModule>
注意 fcgi://127.0.0.1:9000/home/mydomain/www/
後面的路徑要改成跟 DocumentRoot 一樣
意思就是把所有結尾是 .php 的網址改用 fcgi 來執行
改成 SetHandler 寫在 php.conf 就好
ProxyPassMatch ^/(.*\.php)$ fcgi://127.0.0.1:9000/var/www/phpMyAdmin/$1
如果有要限制 ip 存取的話,寫在 <Directory> 裡會失效
要改用
<Proxy *>
Require ip 192.168.0.0
</Proxy>
Require ip 192.168.0.0
</Proxy>
修改 php.conf
$ sudo vim /etc/httpd/conf.d/php.conf
將以下內容加上#停用,以免與 php-fpm 的設定衝突
#<FilesMatch \.php$>
# SetHandler application/x-httpd-php
#</FilesMatch>
改成加上
<IfModule mpm_event_module>
<FilesMatch \.php$>
SetHandler "proxy:fcgi://127.0.0.1:9000"
</FilesMatch>
</IfModule>
停用以下兩行
#php_value session.save_handler "files"
#php_value session.save_path "/var/lib/php/session"
將 Apache 的 MPM 模式改為 event
$ sudo vim /etc/httpd/conf.modules.d/00-mpm.conf
將
LoadModule mpm_prefork_module modules/mod_mpm_prefork.so
#LoadModule mpm_event_module modules/mod_mpm_event.so
改為#LoadModule mpm_event_module modules/mod_mpm_event.so
#LoadModule mpm_prefork_module modules/mod_mpm_prefork.so
LoadModule mpm_event_module modules/mod_mpm_event.so
LoadModule mpm_event_module modules/mod_mpm_event.so
重啟 php-fpm 與 apache
$ sudo systemctl restart php-fpm
$ sudo systemctl restart httpd
參考
High-performance PHP on apache httpd 2.4.x using mod_proxy_fcgi and php-fpm.
Linode VPS 上 CentOS 7 中改 LAMP 执行方式为 PHP-FPM | 水景一页
Apache httpd 2.4.x 使用 mod_proxy_fcgi 和 PHP-FPM 的方式 | 水景一页
這篇探討了一下是否有比 ProxyPassMatch 更好的方式
--
※ 作者: Knuckles 時間: 2017-02-19 00:46:28
※ 編輯: Knuckles 時間: 2024-09-15 11:38:05 (台灣)
※ 看板: KnucklesNote 文章推薦值: 0 目前人氣: 0 累積人氣: 566
回列表(←)
分享