LNMP5) php-fpm的pool、慢執行日誌、open_basedir、php-fpm進程管理
(在之前實驗中我之定義了一個pool
/usr/loacl/php-fpm/etc/php-fpm.conf
)
Nginx中可以定義多個虛擬主機,也可以定義多個pool,每個pool可以監聽一個端口,也可以監聽一個socket。
因此在Nginx中如果有多個站點,則每個站點可以使用一個pool,這樣就可以避免單獨的一個站點耗盡php資源導致其他站點也訪問有誤。
定義多個pool:
cd /usr/local/php-fpm/etc/php-fpm.conf
添加多一個pool
修改完配置文件後:
(1)測試配置文件是否正確:
/usr/local/nginx/sbin/nginx -t
(2)加載一下配置文件:
/usr/local/nginx/sbin/nginx -s reload
(/etc/init.d/php-fpm reload)
怎麽使用我們的pool
cd /usr/local/nginx/conf/vhost/
進入到虛擬主機配置文件,站點的配置文件:
針對
location ~ \.php$
{
include fastcgi_params;
fastcgi_pass unix:/tmp/php-fcgi.sock;
fastcgi_index index.php;
fastcgi_param SCRIPT_FILENAME /data/wwwroot/test.com$fastcgi_script_name;
}
修改完配置文件後:
(1)測試配置文件是否正確:
/usr/local/nginx/sbin/nginx -t
把/usr/local/php-fpm/etc/php-fpm.conf 配置文件中配置的pool拆分到
單獨的一個文件,只需在此配置文件中使用:include = etc/php-fpm.d/*.conf
再創建相應的目錄把拆分的pool放置該目錄下就可以include到配置文件中。
mkdir /usr/local/php/etc/php-fpm.d/
1.修改/usr/local/php-fpm/etc/php-fpm.conf 配置文件
2.創建目錄:mkdir /usr/local/php-fpm/etc/php-fpm.d/
3.創建相應pool文件
vim www.conf
[www]
#listen =127.0.0.1:9000
listen = /tmp/php-fcgi.sock
listen.mode = 666
user = php-fpm
group = php-fpm
pm = dynamic
pm.max_children = 50
pm.start_servers = 20
pm.min_spare_servers = 5
pm.max_spare_servers = 35
pm.max_requests = 500
rlimit_files = 1024
vim cansheng.conf
[cansheng.com]
#listen =127.0.0.1:9000
listen = /tmp/cansheng.sock
listen.mode = 666
user = php-fpm
group = php-fpm
pm = dynamic
pm.max_children = 50
pm.start_servers = 20
pm.min_spare_servers = 5
pm.max_spare_servers = 35
pm.max_requests = 500
rlimit_files = 1024
修改完配置文件後:
(1)測試配置文件是否正確:
/usr/local/nginx/sbin/nginx -t
(2)加載一下配置文件:
/usr/local/nginx/sbin/nginx -s reload
(/etc/init.d/php-fpm reload)
php-fpm慢執行日誌
(很實用)
php-fpm慢執行日誌可以幫助我們快速地追蹤到問題,清晰的了解到php腳本哪裏執行時間長,它可以定位到具體的行。
實驗針對www.conf這個pool文件操作:
vim /usr/local/php-fpm/etc/php-fpm.d/www.conf//加入如下內容
request_slowlog_timeout = 1
slowlog = /usr/local/php-fpm/var/log/www-slow.log
修改完配置文件後:
(1)測試配置文件是否正確:
/usr/local/nginx/sbin/nginx -t
(2)加載一下配置文件:
/usr/local/nginx/sbin/nginx -s reload
(/etc/init.d/php-fpm reload)
查看慢行日誌是否已經創建成功:
測試:
(因為我們的www.conf這個pool文件監聽的是 /tmp/php-fcgi.sock,
而/usr/local/nginx/conf/vhost/test.com.conf這個虛擬主機配置文件就是引用 /tmp/php-fcgi.sock文件,且是/data/wwwroot/test.com這個站點。
)
所以在/data/wwwroot/test.com站點下創建測試腳本:
vim sleep.php
添加內容
<?php echo "test slow log";sleep(2);echo "done";?>
curl -x127.0.0.1:80 test.com/sleep.php
(執行成功)
查看慢行日誌是否記錄信息:
cat /usr/local/php-fpm/var/log/www-slow.log
(記錄了慢行記錄)
open_basedir
(open_basedir的目的是安全。httpd可以針對每個虛擬主機設置一個
open_basedir;php-fpm針對每個包不同的pool設置不同的open_basedir)
open_basedir 的作用是限制php在指定的目錄裏活動。
nginx添加open_basedir
(針對www.conf的pool文件實驗/usr/local/php-fpm/etc/php-fpm.d/www.conf)
vim /usr/local/php-fpm/etc/php-fpm.d/www.conf 添加內容:
php_admin_value[open_basedir]=/data/wwwroot/test.com:/tmp/
(定義open_basedir的路徑一定要和引用該pool文件的虛擬主機配置文件的站點路勁一致)
修改完配置文件後:
(1)測試配置文件是否正確:
/usr/local/nginx/sbin/nginx -t
(2)加載一下配置文件:
/usr/local/nginx/sbin/nginx -s reload
(/etc/init.d/php-fpm reload)
測試:
curl -x127.0.0.1:80 test.com/test.php -I
配置錯誤日誌
1.vim /usr/local/php-fpm/etc/php.ini
搜索/display_errors
2.搜索:
/log_errors =
3.搜索:
error_log = 指定錯誤日誌文件路徑
( /usr/local/php-fpm/var/log/php_errors.log)
4.搜索:
error_reporting 定義日誌級別
手動生成錯誤日誌文件,並修改權限777
touch /usr/local/php-fpm/var/log/php_errors.log
chmod 777 /usr/local/php-fpm/var/log/php_errors.log
故意改錯open_basedir 做測試:
重新啟動php-fpm服務:/etc/init.d/php-fpm restart
測試:
curl -x127.0.0.1:80 test.com/test.php -I
查看錯誤日誌是否有信息:
cat /usr/local/php-fpm/var/log/php_errors.log
php-fpm進程管理
就是在pool定義的。
LNMP5) php-fpm的pool、慢執行日誌、open_basedir、php-fpm進程管理