gwuj 发表于 2018-12-12 09:35:12

LNMP5) php

                  php-fpm的pool

  http://s1.运维网.com/images/20180326/1522033840262167.png
  (在之前实验中我之定义了一个pool
  http://s1.运维网.com/images/20180326/1522030242557986.png
   /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
  http://s1.运维网.com/images/20180326/1522030866108902.png
  
修改完配置文件后:
(1)测试配置文件是否正确:
/usr/local/nginx/sbin/nginx -t
(2)加载一下配置文件:
/usr/local/nginx/sbin/nginx -s reload
(/etc/init.d/php-fpm reload)

  http://s1.运维网.com/images/20180326/1522031033799527.png

  

  怎么使用我们的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;
  }
  
http://s1.运维网.com/images/20180326/1522031694973139.png
  
修改完配置文件后:
(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 配置文件
  http://s1.运维网.com/images/20180326/1522033202181213.png

  

  2.创建目录:mkdir /usr/local/php-fpm/etc/php-fpm.d/
  

  3.创建相应pool文件
  vim www.conf

#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
  
  #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
  http://s1.运维网.com/images/20180326/1522034909783240.png
  
修改完配置文件后:
(1)测试配置文件是否正确:
/usr/local/nginx/sbin/nginx -t
(2)加载一下配置文件:
/usr/local/nginx/sbin/nginx -s reload
(/etc/init.d/php-fpm reload)
  


  查看慢行日志是否已经创建成功:
  http://s1.运维网.com/images/20180326/1522035118476149.png
  

  

  测试:
  (因为我们的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
  添加内容
  
  http://s1.运维网.com/images/20180326/1522035698151537.png
   curl -x127.0.0.1:80 test.com/sleep.php
  http://s1.运维网.com/images/20180326/1522036011196584.png
  (执行成功)
  查看慢行日志是否记录信息:
  cat /usr/local/php-fpm/var/log/www-slow.log
  (记录了慢行记录)
  http://s1.运维网.com/images/20180326/1522036227301956.png
  

  

                    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=/data/wwwroot/test.com:/tmp/
  

  http://s1.运维网.com/images/20180326/1522048892315541.png
  (定义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
  http://s1.运维网.com/images/20180326/1522049627963208.png
  

  配置错误日志

  1.vim /usr/local/php-fpm/etc/php.ini
  搜索/display_errors
  http://s1.运维网.com/images/20180326/1522050063121400.png
  2.搜索:
  /log_errors =
  http://s1.运维网.com/images/20180326/1522050195936413.png
  

  3.搜索:
  error_log = 指定错误日志文件路径
  http://s1.运维网.com/images/20180326/1522050369587171.png
  ( /usr/local/php-fpm/var/log/php_errors.log)

  

  4.搜索:
  error_reporting定义日志级别
  http://s1.运维网.com/images/20180326/1522050544775216.png
  

  手动生成错误日志文件,并修改权限777

  touch /usr/local/php-fpm/var/log/php_errors.log
  chmod 777 /usr/local/php-fpm/var/log/php_errors.log
  

  故意改错open_basedir 做测试:
  http://s1.运维网.com/images/20180326/1522051126979318.png
  重新启动php-fpm服务:/etc/init.d/php-fpm restart
  http://s1.运维网.com/images/20180326/1522051187734207.png
  

  测试:
   curl -x127.0.0.1:80 test.com/test.php -I
  http://s1.运维网.com/images/20180326/1522051210306331.png
  

  查看错误日志是否有信息:
  cat/usr/local/php-fpm/var/log/php_errors.log
  http://s1.运维网.com/images/20180326/1522051476653915.png
  

  

                    php-fpm进程管理
http://s1.运维网.com/images/20180326/1522052143662008.png
  就是在pool定义的。

http://s1.运维网.com/images/20180326/1522052391710642.png
  
  
  
  
  
  
  
  
  
  
  

  

  

  

  

  

  

  

  

  

  

  

  

  

  

  




页: [1]
查看完整版本: LNMP5) php