1. 程式人生 > >php-fpm的pool池子、php慢日誌記錄、open_basedir、php-fpm進程管理

php-fpm的pool池子、php慢日誌記錄、open_basedir、php-fpm進程管理

設置 children nmp In 找不到 AD specified 加載 scrip

1、php-fpm的poo池子:
目的:可以讓不同的網站,對於不同的php解析,可以把不同的網站解析區分開。
編輯:vim /usr/local/php5-fpm/etc/php-fpm.conf
加入:

[test]
listen = /tmp/php-test.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


語法檢查:/usr/local/php5-fpm/sbin/php-fpm -t
重新加載php-fpm:/etc/init.d/php-fpm reload
查看:ps -aux | grep php-fpm

技術分享圖片
查看:
技術分享圖片

在配制nginx虛擬主機的時候就可以對應著改了,比如在server裏面加入以下代碼:

location ~ \.php$
{
#把php整合
include fastcgi_params;
fastcgi_pass unix:/tmp/php-test.sock;
#fastcgi_pass 127.0.0.1:8080;


fastcgi_index index.php;
fastcgi_param SCRIPT_FILENAME /var/www/test.com$fastcgi_script_name;
}

技術分享圖片

再重新加載nginx之後,解析就會分開了。

這樣子,就可以配制網站不同的php解析了,但還可以進行優化,修改成如下:
修改:/usr/local/php5-fpm/etc/php-fpm.conf
改成:

[global]
pid = /usr/local/php5-fpm/var/run/php-fpm.pid
error_log = /usr/local/php5-fpm/var/log/php-fpm.log


include=/usr/local/php5-fpm/etc/vconf/*
/usr/local/php5-fpm/etc/下創建vconf目錄:mkdir /usr/local/php5-fpm/etc/vconf/
在創建對應虛擬機的配制文件:vim /usr/local/php5-fpm/etc/vconf/test.conf 並加入相關代碼:

[name_xxxx] #對應的解析池名可以自己隨便取
listen = /tmp/vconf.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
檢查語法:/usr/local/php5-fpm/sbin/php-fpm -t
然後重新加載:/etc/init.d/php-fpm reload

技術分享圖片
查看:
技術分享圖片

以後,就可以在vconf下設置,不同虛擬機的php解析池了。

2、php慢日誌記錄

目的:為了找出網站慢的原因
編輯訪問慢的主機的配制文件:vim /usr/local/php5-fpm/etc/vconf/test.conf
追加:

request_slowlog_timeout = 1 #這裏默認一般設置為2秒
slowlog = /usr/local/php5-fpm/var/log/test-slow.log
檢查語法:/usr/local/php5-fpm/sbin/php-fpm -t
然後重新加載:/etc/init.d/php-fpm reload

技術分享圖片

寫一個php文件,加入以下代碼進行測試:

<?php
echo "vconf_test..com _php; test slow log";sleep(2);
?>

然後進行訪問:
技術分享圖片

到此慢日誌記錄配制完成。

3、open_basedir 目錄權限訪問控制
目的:設置目錄權限訪問控制
編輯:vim /usr/local/php5-fpm/etc/vconf/test.conf
追加:php_admin_value[open_basedir]=/var/www/test.com:/tmp/ #這裏表示,允許訪問的權限只有/var/www/test.com 和 /tmp/目錄
(可以這樣子理解,即php模塊進行解析時,只能運行在這2個目錄下)
                 
技術分享圖片

檢查語法:/usr/local/php5-fpm/sbin/php-fpm -t
然後重新加載:/etc/init.d/php-fpm reload
若把/usr/local/nginx/conf/vhost/test.com.conf 的root 目錄改為/var/www/222目錄,嘗試訪問:
技術分享圖片

然後,我們進行測試:
技術分享圖片

總結:
php解析模塊裏面的配制文件

/usr/local/php5-fpm/etc/vconf/test.conf )文件的 解析目錄(php_admin_value[open_basedir]=/var/www/test.com:/tmp/ )的權限 限定,和
nginx配制文件
/usr/local/nginx/conf/vhost/test.com.conf)中的php整合模塊(fastcgi_param SCRIPT_FILENAME /var/www/test.com$fastcgi_script_name;
的php文件存放的路徑要一樣。若不一樣,訪問php文件時,則會顯示:No input file specified.(即找不到指定文件)

若nginx配制文件
/usr/local/nginx/conf/vhost/test.com.conf)中的root /var/www/test.com;和fastcgi_param SCRIPT_FILENAME /var/www/test.com$fastcgi_script_name;
的路徑不一樣的話,那麽訪問php文件時,就顯示File not found(即找不到文件)。

4、php-fpm進程管理
編輯:vim /usr/local/php5-fpm/etc/vconf/test.conf 文件,對其配制,根據自己機器的實際情況進行配制。

[vconf]
listen = /tmp/vconf.sock
listen.mode=666
user = php-fpm
group = php-fpm
pm = dynamic
;pm =static
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

request_slowlog_timeout = 1
slowlog = /usr/local/php5-fpm/var/log/test-slow.log

php_admin_value[open_basedir]=/var/www/test.com/:/tmp/


技術分享圖片

到此 lnmp 相關學習完閉。

php-fpm的pool池子、php慢日誌記錄、open_basedir、php-fpm進程管理