十三周一次課
12.21php-fpm的pool
12.22php-fpm的慢執行日誌
12.23open_basedir
12.24php-fpm進程管理
12.21php-fpm的pool
php-fpm的pool目錄概要
vim /usr/local/php/etc/php-fpm.conf//在[global]部分增加
include = etc/php-fpm.d/*.conf
mkdir /usr/local/php/etc/php-fpm.d/
cd /usr/local/php/etc/php-fpm.d/
vim www.conf //內容如下
[www] listen = /tmp/www.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 aming.conf //內容如下
[aming] listen = /tmp/aming.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/php/sbin/php-fpm –t
/etc/init.d/php-fpm restart
php-fpm的pool
1.php-fpm有一個概念,叫做pool。 使用ps aux |grep php-fpm最右側看到的那一列就是pool,也就是它的池子
[root@tianqi-01 vhost]# ps aux |grep php-fpm
root 1056 0.0 0.4 227204 4952 ? Ss 08:39 0:01 php-fpm: master process (/usr/local/php-fpm/etc/php-fpm.conf)
php-fpm 1057 0.0 0.4 227204 4716 ? S 08:39 0:00 php-fpm: pool www
php-fpm 1058 0.0 0.4 227204 4716 ? S 08:39 0:00 php-fpm: pool www
php-fpm 1060 0.0 0.4 227204 4716 ? S 08:39 0:00 php-fpm: pool www
php-fpm 1061 0.0 0.4 227204 4720 ? S 08:39 0:00 php-fpm: pool www
php-fpm 1062 0.0 0.4 227204 4720 ? S 08:39 0:00 php-fpm: pool www
php-fpm 1063 0.0 0.4 227204 4720 ? S 08:39 0:00 php-fpm: pool www
php-fpm 1064 0.0 0.4 227204 4720 ? S 08:39 0:00 php-fpm: pool www
php-fpm 1065 0.0 0.4 227204 4720 ? S 08:39 0:00 php-fpm: pool www
php-fpm 1066 0.0 0.4 227204 4720 ? S 08:39 0:00 php-fpm: pool www
php-fpm 1067 0.0 0.4 227204 4720 ? S 08:39 0:00 php-fpm: pool www
php-fpm 1068 0.0 0.4 227204 4720 ? S 08:39 0:00 php-fpm: pool www
php-fpm 1069 0.0 0.4 227204 4724 ? S 08:39 0:00 php-fpm: pool www
php-fpm 1070 0.0 0.4 227204 4724 ? S 08:39 0:00 php-fpm: pool www
php-fpm 1071 0.0 0.4 227204 4724 ? S 08:39 0:00 php-fpm: pool www
php-fpm 1072 0.0 0.4 227204 4724 ? S 08:39 0:00 php-fpm: pool www
php-fpm 1073 0.0 0.4 227204 4724 ? S 08:39 0:00 php-fpm: pool www
php-fpm 1074 0.0 0.4 227204 4724 ? S 08:39 0:00 php-fpm: pool www
php-fpm 1075 0.0 0.4 227204 4724 ? S 08:39 0:00 php-fpm: pool www
php-fpm 1076 0.0 0.4 227204 4724 ? S 08:39 0:00 php-fpm: pool www
root 5360 0.0 0.0 112664 980 pts/0 S+ 21:50 0:00 grep --color=auto php-fpm
[root@tianqi-01 vhost]#
2.切換目錄,會看到我們只定義了一個www的pool
[root@tianqi-01 vhost]# cd /usr/local/php-fpm/etc/
[root@tianqi-01 etc]# ls
pear.conf php-fpm.conf php-fpm.conf.default php.ini
[root@tianqi-01 etc]# cat php-fpm.conf
[global]
pid = /usr/local/php-fpm/var/run/php-fpm.pid
error_log = /usr/local/php-fpm/var/log/php-fpm.log
[www] //這裏只定義了一個www的pool
listen = /tmp/php-fcgi.sock
#listen = 127.0.0.1:9000
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
[root@tianqi-01 etc]#
3.其實是支持定義多個池子的,每一個池子都可以監聽不同的sock或者TCP/IP,nginx如果有多個站點,那麽每個站點都能去使用一個獨立的pool。這樣做的優勢就是,當其中一個php發生502了(502很有可能是php資源不夠了),如果所有的網站使用了同一個池子,那其中一個網站發生了故障(比如寫的程序有問題),那麽就會把你的php資源耗盡,這樣就會造成其他的站點也會502,所以有必要把每一個站點隔離開來,每一個站點使用獨立的pool。
4.設置多個pool
方法一
在/usr/local/php-fpm/etc/php-fpm裏面,繼續增加pool
寫第二個pool,名稱為tianqi.com,listen = /tmp/tianqi.sock
配置中的其他信息可根據自己的需求來配置
[root@tianqi-01 etc]# vim !$
vim php-fpm.conf
[global]
pid = /usr/local/php-fpm/var/run/php-fpm.pid
error_log = /usr/local/php-fpm/var/log/php-fpm.log
[www]
listen = /tmp/php-fcgi.sock
#listen = 127.0.0.1:9000
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
[tianqi.com]
listen = /tmp/tianqi.sock
#listen = 127.0.0.1:9000
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
保存退出
5.檢查是否存在語法錯誤
[root@tianqi-01 etc]# /usr/local/php-fpm/sbin/php-fpm -t
[16-Mar-2018 21:58:38] NOTICE: configuration file /usr/local/php-fpm/etc/php-fpm.conf test is successful
[root@tianqi-01 etc]#
6.若沒有語法錯誤,做一個php-fpm重啟
/etc/init.d/php-fpm restart 或使用 /etc/init.d/php-fpm reload
[root@tianqi-01 etc]# /etc/init.d/php-fpm reload
Reload service php-fpm done
[root@tianqi-01 etc]#
7.這裏再來ps查看,會看到最右側多了一個tianqi.com,這個就是兩個不同的池子
[root@tianqi-01 etc]# ps aux |grep php-fpm
root 5389 0.2 0.4 227264 4976 ? Ss 21:59 0:00 php-fpm: master process (/usr/local/php-fpm/etc/php-fpm.conf)
php-fpm 5390 0.0 0.4 227204 4712 ? S 21:59 0:00 php-fpm: pool www
php-fpm 5391 0.0 0.4 227204 4712 ? S 21:59 0:00 php-fpm: pool www
php-fpm 5392 0.0 0.4 227204 4712 ? S 21:59 0:00 php-fpm: pool www
php-fpm 5393 0.0 0.4 227204 4712 ? S 21:59 0:00 php-fpm: pool www
php-fpm 5394 0.0 0.4 227204 4716 ? S 21:59 0:00 php-fpm: pool www
php-fpm 5395 0.0 0.4 227204 4716 ? S 21:59 0:00 php-fpm: pool www
php-fpm 5396 0.0 0.4 227204 4716 ? S 21:59 0:00 php-fpm: pool www
php-fpm 5397 0.0 0.4 227204 4716 ? S 21:59 0:00 php-fpm: pool www
php-fpm 5398 0.0 0.4 227204 4716 ? S 21:59 0:00 php-fpm: pool www
php-fpm 5399 0.0 0.4 227204 4720 ? S 21:59 0:00 php-fpm: pool www
php-fpm 5400 0.0 0.4 227204 4720 ? S 21:59 0:00 php-fpm: pool www
php-fpm 5401 0.0 0.4 227204 4720 ? S 21:59 0:00 php-fpm: pool www
php-fpm 5402 0.0 0.4 227204 4720 ? S 21:59 0:00 php-fpm: pool www
php-fpm 5403 0.0 0.4 227204 4720 ? S 21:59 0:00 php-fpm: pool www
php-fpm 5404 0.0 0.4 227204 4720 ? S 21:59 0:00 php-fpm: pool www
php-fpm 5405 0.0 0.4 227204 4720 ? S 21:59 0:00 php-fpm: pool www
php-fpm 5406 0.0 0.4 227204 4720 ? S 21:59 0:00 php-fpm: pool www
php-fpm 5407 0.0 0.4 227204 4720 ? S 21:59 0:00 php-fpm: pool www
php-fpm 5408 0.0 0.4 227204 4720 ? S 21:59 0:00 php-fpm: pool www
php-fpm 5409 0.0 0.4 227204 4720 ? S 21:59 0:00 php-fpm: pool www
php-fpm 5410 0.0 0.4 227204 4716 ? S 21:59 0:00 php-fpm: pool tianqi.com
php-fpm 5411 0.0 0.4 227204 4716 ? S 21:59 0:00 php-fpm: pool tianqi.com
php-fpm 5412 0.0 0.4 227204 4716 ? S 21:59 0:00 php-fpm: pool tianqi.com
php-fpm 5413 0.0 0.4 227204 4716 ? S 21:59 0:00 php-fpm: pool tianqi.com
php-fpm 5414 0.0 0.4 227204 4720 ? S 21:59 0:00 php-fpm: pool tianqi.com
php-fpm 5415 0.0 0.4 227204 4724 ? S 21:59 0:00 php-fpm: pool tianqi.com
php-fpm 5416 0.0 0.4 227204 4724 ? S 21:59 0:00 php-fpm: pool tianqi.com
php-fpm 5417 0.0 0.4 227204 4724 ? S 21:59 0:00 php-fpm: pool tianqi.com
php-fpm 5418 0.0 0.4 227204 4724 ? S 21:59 0:00 php-fpm: pool tianqi.com
php-fpm 5419 0.0 0.4 227204 4724 ? S 21:59 0:00 php-fpm: pool tianqi.com
php-fpm 5420 0.0 0.4 227204 4724 ? S 21:59 0:00 php-fpm: pool tianqi.com
php-fpm 5421 0.0 0.4 227204 4724 ? S 21:59 0:00 php-fpm: pool tianqi.com
php-fpm 5422 0.0 0.4 227204 4724 ? S 21:59 0:00 php-fpm: pool tianqi.com
php-fpm 5423 0.0 0.4 227204 4724 ? S 21:59 0:00 php-fpm: pool tianqi.com
php-fpm 5424 0.0 0.4 227204 4724 ? S 21:59 0:00 php-fpm: pool tianqi.com
php-fpm 5425 0.0 0.4 227204 4724 ? S 21:59 0:00 php-fpm: pool tianqi.com
php-fpm 5426 0.0 0.4 227204 4724 ? S 21:59 0:00 php-fpm: pool tianqi.com
php-fpm 5427 0.0 0.4 227204 4724 ? S 21:59 0:00 php-fpm: pool tianqi.com
php-fpm 5428 0.0 0.4 227204 4724 ? S 21:59 0:00 php-fpm: pool tianqi.com
php-fpm 5429 0.0 0.4 227204 4724 ? S 21:59 0:00 php-fpm: pool tianqi.com
root 5447 0.0 0.0 112660 984 pts/0 R+ 22:02 0:00 grep --color=auto php-fpm
[root@tianqi-01 etc]#
8.在nginx中使用新的pool
[root@tianqi-01 conf]# cd /usr/local/nginx/conf/vhost
[root@tianqi-01 vhost]# ls
aaa.com.conf load.conf proxy.conf ssl.conf test.com.conf
[root@tianqi-01 vhost]#
9.可以把test.com.conf定義成fastcgi_pass unix:/tmp/php-fcgi.sock;
這是www池子中的php-fcgi.sock
[root@tianqi-01 vhost]# vim test.com.conf
server
{
listen 80;
server_name test.com test2.com test3.com;
index index.html index.htm index.php;
root /data/wwwroot/test.com;
if ($host != 'test.com' ) {
rewrite ^/(.*)$ http://test.com/$1 permanent;
}
# location ~ .*\.(gif|jpg|jpeg|png|bmp|swf)$
# {
# expires 7d;
# access_log off;
# }
location ~* ^.+\.(gif|jpg|png|swf|flv|rar|zip|doc|pdf|gz|bz2|jpeg|bmp|xls)$
{
expires 7d;
valid_referers none blocked server_names *.test.com ;
if ($invalid_referer) {
return 403;
}
access_log off;
}
location ~ .*\.(js|css)$
{
# expires 12h;
access_log off;
}
location /admin/
{
allow 127.0.0.1;
allow 192.168.11.136;
deny all;
}
location ~ .*(upload|image)/.*\.php$
{
deny all;
}
if ($http_user_agent ~* 'Spider/3.0|YoudaoBot|Tomato')
{
return 403;
}
location ~ \.php$
{
include fastcgi_params;
fastcgi_pass unix:/tmp/php-fcgi.sock;
#fastcgi_pass 127.0.0.1:9000;
fastcgi_index index.php;
fastcgi_param SCRIPT_FILENAME /data/wwwroot/test.com$fastcgi_script_name;
}
access_log /tmp/test.com.log combined_realip;
}
10.再把另一個aaa.com.conf中 fastcgi_pass unix:/tmp/tianqi.sock;
這是tianqi.com池子中的tianqi.sock
路徑/data/wwwroot/default$fastcgi_script_name;
[root@tianqi-01 vhost]# vim aaa.com.conf
server
{
listen 80 default_server;
server_name aaa.com;
index index.html index.htm index.php;
root /data/wwwroot/default;
location ~ \.php$
{
include fastcgi_params;
fastcgi_pass unix:/tmp/tianqi.sock;
fastcgi_index index.php;
fastcgi_param SCRIPT_FILENAME /data/wwwroot/default$fastcgi_script_name;
}
}
保存退出
11.這樣這兩個站點就隔離開了
12.假設現在test.com請求量很大,最終將進程耗盡了,比如php-fpm耗盡了,這時候又有其他請求來了,就會報502,因為沒有多余的php給進程提供服務了,而另一個站點則不受影響,因為使用的是另一個池子,另一個pool,這就是定義多個池子的原因
方法二
1.在vhost目錄下是多個.conf文件,在nginx.conf裏面加了一條 include vhost/*.conf;
[root@tianqi-01 vhost]# ls
aaa.com.conf load.conf proxy.conf ssl.conf test.com.conf
[root@tianqi-01 vhost]# tail ../nginx.conf
tcp_nodelay on;
gzip on;
gzip_min_length 1k;
gzip_buffers 4 8k;
gzip_comp_level 5;
gzip_http_version 1.1;
gzip_types text/plain application/x-javascript text/css text/htm
application/xml;
include vhost/*.conf;
}
[root@tianqi-01 vhost]#
2.在php-fpm同樣是支持 include vhost/*.conf;
3.在主配置文件php-fpm中的 [global] 加入include = etc/php-fpm.d/*.conf ,並將池子拆分出來,將其中的池子pool刪除
快速刪除內容方法,100dd就會給刪除
[root@tianqi-01 vhost]# cd /usr/local/php-fpm/etc/
[root@tianqi-01 etc]# ls
pear.conf php-fpm.conf php-fpm.conf.default php.ini
[root@tianqi-01 etc]# vim php-fpm.conf
[global]
pid = /usr/local/php-fpm/var/run/php-fpm.pid
error_log = /usr/local/php-fpm/var/log/php-fpm.log
include = etc/php-fpm.d/*.conf //添加一條語句,刪除下面的語句
保存退出
4.因為include = etc/php-fpm.d/,所以需要創建/php-fpm.d/的目錄
[root@tianqi-01 etc]# mkdir php-fpm.d
[root@tianqi-01 etc]#
5.切換路徑,並創建www.conf,然後將之前php-fpm.conf中的www部分寫入到其中
[root@tianqi-01 etc]# cd !$
cd php-fpm.d
[root@tianqi-01 php-fpm.d]# vim www.conf
[www]
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
保存退出
6.然後再創建tianqi.conf
[root@tianqi-01 php-fpm.d]# vim tianqi.conf
[tianqi.com]
listen = /tmp/tianqi.sock
#listen = 127.0.0.1:9000
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
7.這樣看著就會很幹凈,類似於nginx的vhost
8.檢查是否有錯誤
[root@tianqi-01 php-fpm.d]# /usr/local/php-fpm/sbin/php-fpm -t
[16-Mar-2018 22:24:33] NOTICE: configuration file /usr/local/php-fpm/etc/php-fpm.conf test is successful
[root@tianqi-01 php-fpm.d]#
9.然後重啟查看
[root@tianqi-01 php-fpm.d]# /etc/init.d/php-fpm restart
Gracefully shutting down php-fpm . done
Starting php-fpm done
[root@tianqi-01 php-fpm.d]# !ps
ps aux |grep php-fpm
root 5511 2.0 0.4 227292 4984 ? Ss 22:25 0:00 php-fpm: master process (/usr/local/php-fpm/etc/php-fpm.conf)
php-fpm 5512 0.0 0.4 227232 4720 ? S 22:25 0:00 php-fpm: pool tianqi.com
php-fpm 5513 0.0 0.4 227232 4720 ? S 22:25 0:00 php-fpm: pool tianqi.com
php-fpm 5514 0.0 0.4 227232 4720 ? S 22:25 0:00 php-fpm: pool tianqi.com
php-fpm 5515 0.0 0.4 227232 4720 ? S 22:25 0:00 php-fpm: pool tianqi.com
php-fpm 5516 0.0 0.4 227232 4724 ? S 22:25 0:00 php-fpm: pool tianqi.com
php-fpm 5517 0.0 0.4 227232 4724 ? S 22:25 0:00 php-fpm: pool tianqi.com
php-fpm 5518 0.0 0.4 227232 4724 ? S 22:25 0:00 php-fpm: pool tianqi.com
php-fpm 5519 0.0 0.4 227232 4724 ? S 22:25 0:00 php-fpm: pool tianqi.com
php-fpm 5520 0.0 0.4 227232 4724 ? S 22:25 0:00 php-fpm: pool tianqi.com
php-fpm 5521 0.0 0.4 227232 4724 ? S 22:25 0:00 php-fpm: pool tianqi.com
php-fpm 5522 0.0 0.4 227232 4724 ? S 22:25 0:00 php-fpm: pool tianqi.com
php-fpm 5523 0.0 0.4 227232 4724 ? S 22:25 0:00 php-fpm: pool tianqi.com
php-fpm 5524 0.0 0.4 227232 4724 ? S 22:25 0:00 php-fpm: pool tianqi.com
php-fpm 5525 0.0 0.4 227232 4724 ? S 22:25 0:00 php-fpm: pool tianqi.com
php-fpm 5526 0.0 0.4 227232 4724 ? S 22:25 0:00 php-fpm: pool tianqi.com
php-fpm 5527 0.0 0.4 227232 4724 ? S 22:25 0:00 php-fpm: pool tianqi.com
php-fpm 5528 0.0 0.4 227232 4728 ? S 22:25 0:00 php-fpm: pool tianqi.com
php-fpm 5529 0.0 0.4 227232 4728 ? S 22:25 0:00 php-fpm: pool tianqi.com
php-fpm 5530 0.0 0.4 227232 4728 ? S 22:25 0:00 php-fpm: pool tianqi.com
php-fpm 5531 0.0 0.4 227232 4728 ? S 22:25 0:00 php-fpm: pool tianqi.com
php-fpm 5532 0.0 0.4 227232 4724 ? S 22:25 0:00 php-fpm: pool www
php-fpm 5533 0.0 0.4 227232 4724 ? S 22:25 0:00 php-fpm: pool www
php-fpm 5534 0.0 0.4 227232 4724 ? S 22:25 0:00 php-fpm: pool www
php-fpm 5535 0.0 0.4 227232 4724 ? S 22:25 0:00 php-fpm: pool www
php-fpm 5536 0.0 0.4 227232 4728 ? S 22:25 0:00 php-fpm: pool www
php-fpm 5537 0.0 0.4 227232 4728 ? S 22:25 0:00 php-fpm: pool www
php-fpm 5538 0.0 0.4 227232 4728 ? S 22:25 0:00 php-fpm: pool www
php-fpm 5539 0.0 0.4 227232 4728 ? S 22:25 0:00 php-fpm: pool www
php-fpm 5540 0.0 0.4 227232 4728 ? S 22:25 0:00 php-fpm: pool www
php-fpm 5541 0.0 0.4 227232 4728 ? S 22:25 0:00 php-fpm: pool www
php-fpm 5542 0.0 0.4 227232 4728 ? S 22:25 0:00 php-fpm: pool www
php-fpm 5543 0.0 0.4 227232 4728 ? S 22:25 0:00 php-fpm: pool www
php-fpm 5544 0.0 0.4 227232 4732 ? S 22:25 0:00 php-fpm: pool www
php-fpm 5545 0.0 0.4 227232 4732 ? S 22:25 0:00 php-fpm: pool www
php-fpm 5546 0.0 0.4 227232 4732 ? S 22:25 0:00 php-fpm: pool www
php-fpm 5547 0.0 0.4 227232 4732 ? S 22:25 0:00 php-fpm: pool www
php-fpm 5548 0.0 0.4 227232 4732 ? S 22:25 0:00 php-fpm: pool www
php-fpm 5549 0.0 0.4 227232 4732 ? S 22:25 0:00 php-fpm: pool www
php-fpm 5550 0.0 0.4 227232 4732 ? S 22:25 0:00 php-fpm: pool www
php-fpm 5551 0.4 0.4 227232 4732 ? S 22:25 0:00 php-fpm: pool www
root 5553 0.0 0.0 112660 980 pts/0 S+ 22:25 0:00 grep --color=auto php-fpm
[root@tianqi-01 php-fpm.d]#
10.這就是多個池子的配置方法
12.22php-fpm的慢執行日誌(非常有用)
php-fpm慢執行日誌目錄概要
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
配置nginx的虛擬主機test.com.conf,把unix:/tmp/php-fcgi.sock改為unix:/tmp/www.sock
重新加載nginx服務
vim /data/wwwroot/test.com/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
php-fpm慢執行日誌
在做php網站的時候,建議使用LNMP,因為我們可以分析php的慢執行日誌
查詢方法:
1.系統負載高,可以通過各種工具查,查出是哪個進程導致
2.PHP網站訪問慢,通過查看慢執行日誌
1.配置www.conf 在配置文件中加入
request_slowlog_timeout = 1 //超過一秒鐘就要記錄日誌
slowlog = /usr/local/php-fpm/var/log/www-slow.log //日誌放到該路徑下
[root@tianqi-01 php-fpm.d]# vim www.conf
[www]
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
request_slowlog_timeout = 1
slowlog = /usr/local/php-fpm/var/log/www-slow.log
保存退出
2.查看語法錯誤,並重新加載
[root@tianqi-01 php-fpm.d]# /usr/local/php-fpm/sbin/php-fpm -t
[16-Mar-2018 22:34:21] NOTICE: configuration file /usr/local/php-fpm/etc/php-fpm.conf test is successful
[root@tianqi-01 php-fpm.d]# /etc/init.d/php-fpm reload
Reload service php-fpm done
[root@tianqi-01 php-fpm.d]#
3.修改虛擬主機配置文件
[root@dl-001 etc]# vim /usr/local/nginx/conf/vhost/test.com.conf # 修改sock文件 fastcgi_pass unix:/tmp/www.sock; ...
1
2
3
4
4.重啟nginx服務
[root@dl-001 etc]# /usr/local/nginx/sbin/nginx -t nginx: the configuration file /usr/local/nginx/conf/nginx.conf syntax is ok nginx: configuration file /usr/local/nginx/conf/nginx.conf test is successful [root@dl-001 etc]# /usr/local/nginx/sbin/nginx -s reload
1
2
3
4
5.設置測試php文件
[root@dl-001 etc]# vim /data/www/test.com/sleep.php <?php echo "test slow log"; sleep(2); echo "done"; ?>
1
2
3
4
5
6
說明:要查看具體的錯誤信息,可以開啟php.ini內的display_error參數
6.查看慢執行日誌
[root@dl-001 etc]# cat /usr/local/php-fpm/var/log/www-slow.log [05-Jan-2018 21:13:15] [pool www] pid 3430 script_filename = /data/www/test.com/sleep.php [0x00007f616ec772d8] sleep() /data/www/test.com/sleep.php:3
12.23open_basedir
open_basedir 的作用是限制php在指定的目錄裏活動。
相關配置代碼
[root@dl-001 etc]# vim /usr/local/php-fpm/etc/php-fpm.d/test.conf # 添加如下代碼 php_admin_value[open_basedir]=/data/www/test.com:/tmp/
1
2
3
效果測試
先測試錯誤配置時php腳本的效果
[root@dl-001 etc]# vim /usr/local/php-fpm/etc/php-fpm.d/test.conf # 將添加的代碼內站點錯誤書寫為aaa.com php_admin_value[open_basedir]=/data/www/aaa.com:/tmp/
1
2
3
重啟php-fpm服務
[root@dl-001 etc]# /usr/local/php-fpm/sbin/php-fpm -t [09-Jan-2018 18:35:50] NOTICE: configuration file /usr/local/php-fpm/etc/php-fpm.conf test is successful [root@dl-001 etc]# /etc/init.d/php-fpm restart Gracefully shutting down php-fpm . done Starting php-fpm done
1
2
3
4
5
6
使用curl測試網頁訪問
# 由於已經設置了open_basedir,網頁無法訪問 [root@dl-001 etc]# curl -x 127.0.0.1:80 test.com/test.php -I HTTP/1.1 404 Not Found Server: nginx/1.12.2 Date: Tue, 09 Jan 2018 10:38:45 GMT Content-Type: text/html; charset=UTF-8 Connection: keep-alive X-Powered-By: PHP/5.6.30
1
2
3
4
5
6
7
8
修改正確後驗證
[root@dl-001 etc]# vim /usr/local/php-fpm/etc/php-fpm.d/test.conf # 將添加的代碼錯誤書寫為 php_admin_value[open_basedir]=/data/www/test.com:/tmp/
1
2
3
重啟服務並驗證
[root@dl-001 etc]# /usr/local/php-fpm/sbin/php-fpm -t [09-Jan-2018 18:39:10] NOTICE: configuration file /usr/local/php-fpm/etc/php-fpm.conf test is successful [root@dl-001 etc]# /etc/init.d/php-fpm restart Gracefully shutting down php-fpm . done Starting php-fpm done # 成功訪問 [root@dl-001 etc]# curl -x 127.0.0.1:80 test.com/test.php -I HTTP/1.1 200 OK Server: nginx/1.12.2 Date: Tue, 09 Jan 2018 10:39:20 GMT Content-Type: text/html; charset=UTF-8 Connection: keep-alive X-Powered-By: PHP/5.6.30
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
php錯誤日誌設置
修復php.ini配置文件,關閉display_errors參數
# 不在瀏覽器上顯示錯誤信息 display_errors = Off # 開啟錯誤日誌記錄 log_errors = On # 設置存放路徑 error_log = /usr/local/php-fpm/var/log/php_errors.log # 設置錯誤記錄級別 error_reporting = E_ALL
1
2
3
4
5
6
7
8
9
為了防止錯誤日誌無法創建並修改,最好先行創建並給予權限。
[root@dl-001 etc]# touch /usr/local/php-fpm/var/log/php_errors.log [root@dl-001 etc]# chmod 777 /usr/local/php-fpm/var/log/php_errors.log
1
2
為了產生錯誤信息,先故意寫錯php代碼
[root@dl-001 etc]# touch /usr/local/php-fpm/var/log/php_errors.log [root@dl-001 etc]# chmod 777 /usr/local/php-fpm/var/log/php_errors.log php_admin_value[open_basedir]=/data/www/aaa.com:/tmp/
1
2
3
訪問網頁,其錯誤信息如下
[root@dl-001 etc]# curl -x 127.0.0.1:80 test.com/test.php -I HTTP/1.1 404 Not Found Server: nginx/1.12.2 Date: Tue, 09 Jan 2018 10:52:01 GMT Content-Type: text/html; charset=UTF-8 Connection: keep-alive X-Powered-By: PHP/5.6.30 # 這裏明確指出所要訪問的網頁不在aaa.com站點 [root@dl-001 etc]# cat /usr/local/php-fpm/var/log/php_errors.log [09-Jan-2018 10:52:01 UTC] PHP Warning: Unknown: open_basedir restriction in effect. File(/data/www/test.com/test.php) is not within the allowed path(s): (/data/www/aaa.com:/tmp/) in Unknown on line 0 [09-Jan-2018 10:52:01 UTC] PHP Warning: Unknown: failed to open stream: Operation not permitted in Unknown on line 0
1
2
3
4
5
6
7
8
9
10
11
12
修改正確後再查看日誌(php文件已被解析)
[root@dl-001 etc]# cat /usr/local/php-fpm/var/log/php_errors.log ... [09-Jan-2018 10:53:18 UTC] PHP Warning: phpinfo(): It is not safe to rely on the syst
12.24php-fpm進程管理
進程管理
# 動態進程管理 pm = dynamic # 靜態進程管理 # 設置了靜態進程管理的配置項只有緊跟該行的那項配置生效 pm = static
1
2
3
4
5
6
最大子進程數
# 可以使用ps aux進行查看 pm.max_children = 50
1
2
設置啟動時開啟的PHP進程數
# 值可以根據需要進行修改 pm.start_servers = 20
1
2
在空閑時段,子進程數的最小值
# 如果達到這個數值,php-fpm服務會自動派生新的子進程 pm.min_spare_servers = 5
1
2
定義在空閑時段,子進程數的最大值
# 如果高於這個數值,就開始清理空閑的子進程 pm.max_spare_servers = 35
1
2
定義一個子進程最多處理的請求數
# 對於該項而言,超出該值的話進程會因此而退出 pm.max_requests = 500
1
2
說明:們需要根據實際應用時的需要對上述參數的值進行配置,配置後重啟php-fpm服務使其生效即可。
十三周一次課