2018-3-19 Linux学习笔记
Posted
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了2018-3-19 Linux学习笔记相关的知识,希望对你有一定的参考价值。
12.21 php-fpm的pool
- 需求背景:
假设nginx有多个站点,每一个站点使用各自的pool,这样当一个站点有问题(比如502错误)时,其他站点不会受到影响. - 以下以设置[www]和[karu]两个pool为例来学习.
具体操作步骤: -
vim /usr/local/php-fpm/etc/php-fpm.conf #在[global]部分增加
include = etc/php-fpm.d/*.conf - mkdir /usr/local/php-fpm/etc/php-fpm.d/
- cd /usr/local/php-fpm/etc/php-fpm.d/
- 新增两个配置文件www.con 和 karu.com并编辑如下:
-
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 -
vim karu.conf #内容如下
[karu]
listen = /tmp/karu.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-fpm/sbin/php-fpm -t #检测是否有语法错误
- /etc/init.d/php-fpm restart #重启php-fpm服务以让配置生效
12.22 php-fpm慢执行日志[非常有用]
- 需求背景:
对于LNMP架构的网站,如果发现网站慢了,可借助php-fpm的慢执行日志来排查由于php导致的缓解问题. - 实现的具体步骤如下:
- vim /usr/local/php-fpm/etc/php-fpm.d/karu.conf
- 在末尾加入如下内容:
request_slowlog_timeout = 1 #记录php执行超过1秒的操作
slowlog = /usr/local/php-fpm/var/log/www-slow.log #定义慢执行日志所在位置 - /usr/local/php-fpm/sbin/php-fpm -t
- /etc/init.d/php-fpm reload
- 模拟一个慢执行的php:
- vim /data/wwwroot/default/sleep.php #写入如下内容
<?php
echo "test slow log";
sleep(2);
echo "done";
?>
- 测试结果:
curl -x127.0.0.1:80 default/sleep.php
cat /usr/local/php-fpm/var/log/www-slow.log
12.23 open_basedir
- (1) php-fpm中open_basedir的作用是限制php在指定的目录里活动,以提高站点的安全性.
- 具体配置如下:
vim /usr/local/php-fpm/etc/php-fpm.d/karu.conf - 加入如下内容
php_admin_value[open_basedir]=/data/wwwroot/default:/tmp/ - /usr/local/php-fpm/sbin/php-fpm -t
- /etc/init.d/php-fpm reload
-
测试:
curl -x127.0.0.1:80 default/sleep.php
curl -x127.0.0.1:80 default/sleep.php -I - (2) 配置php-fpm错误日志
-
具体步骤如下:
vi /usr/local/php-fpm/etc/php.ini
display_errors = Off #不让其他人能通过浏览器看到错误信息
log_errors = On #打开错误日志记录功能
error_log = /usr/local/php-fpm/var/log/php_errors.log #错误日志存放位置
error_reporting = E_ALL & ~E_DEPRECATED & ~E_STRICT #定义错误日志级别 - 再次编辑karu.conf
vim /usr/local/php-fpm/etc/php-fpm.d/karu.conf - 故意将其写错,比如:
php_admin_value[open_basedir]=/data/wwwroot/asdefault:/tmp/ - /usr/local/php-fpm/sbin/php-fpm -t
-
/etc/init.d/php-fpm reload
- 测试:
curl -x127.0.0.1:80 default/sleep.php
cat /usr/local/php-fpm/var/log/php_errors.log #查看错误日志
12.24 php-fpm进程管理
- 在php-fpm的配置文件中有进程管理相关配置项,比如:
vim /usr/local/php-fpm/etc/php-fpm.d/karu.conf - 其具体含义如下:
- pm = dynamic
动态进程管理,也可以是static. 注意当为static时,以下的几项就都不生效了! - pm.max_children = 50
最大子进程数 - pm.start_servers = 20
启动服务时会启动的进程数 - pm.min_spare_servers = 5
定义在空闲时段,子进程数的最少数量,如果达到这个数值时,php-fpm服务会自动派生新的子进程。 - pm.max_spare_servers = 35
定义在空闲时段,子进程数的最大值,如果高于这个数值就开始清理空闲的子进程。 - pm.max_requests = 500
定义一个子进程最多处理的请求数,也就是说在一个php-fpm的子进程最多可以处理这么多请求,当达到这个数值时,它会自动退出。
以上是关于2018-3-19 Linux学习笔记的主要内容,如果未能解决你的问题,请参考以下文章