1. 程式人生 > >LNMP5) php-fpm的pool、慢執行日誌、open_basedir、php-fpm進程管理

LNMP5) php-fpm的pool、慢執行日誌、open_basedir、php-fpm進程管理

php-fpm慢執行日誌

php-fpm的pool

技術分享圖片

(在之前實驗中我之定義了一個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進程管理