cf2000 发表于 2018-12-16 11:59:45

nginx和php的基本配置说明

     这段时间对nginx和php的一些配置文件深入学习了一下,把线上的服务做了一下参数优化,现在把一些基础的配置标注一下,让大家看看,希望大家能提出意见,让我能完善补全。
  nginx
  1. nginx.conf:
  ###########################################################################################
  #运行用户
  user nginx;
  

  #启动进程,通常设置成和cpu的数量相等
  worker_processes 1;
  

  #全局错误日志及PID文件
  error_log /app/nginx/logs/error.log;
  pid /app/nginx/logs/nginx.pid;
  
  #一个nginx进程打开的最多文件描述符数目,建议与ulimit -n的值保持一致。(系统的值ulimit -n)
  worker_rlimit_nofile 65535;
  

  #工作模式及连接数上限
  events {
  #epoll是多路复用IO(I/O Multiplexing)中的一种方式,但是仅用于linux2.6以上内核,可以大大提高nginx的性能
  use epoll;
  

  #单个后台worker process进程的最大并发链接数
   worker_connections 2048;
  }
  
  #设定http服务器,利用它的反向代理功能提供负载均衡支持
  http {
               #设定mime类型,类型由mime.type文件定义
               include /app/nginx/mime.types;
  
               #默认文件类型
               default_type application/octet-stream;
  

               #设定日志格式
               log_format main '$remote_addr - $remote_user [$time_local] "$request" "$request_time" '
                             '$status $body_bytes_sent "$http_referer" '
                             '"$http_user_agent" "$http_x_forwarded_for"';
  
               #其中,各个字段的含义如下:
               #1.$remote_addr 与$http_x_forwarded_for 用以记录客户端的ip地址;
               #2.$remote_user :用来记录客户端用户名称;
               #3.$time_local : 用来记录访问时间与时区;
               #4.$request : 用来记录请求的url与http协议;
               #5.$request_time: 用来记录相应时间;
               #6.$status : 用来记录请求状态;成功是200,
               #7.$body_bytes_s ent :记录发送给客户端文件主体内容大小;
               #8.$http_referer :用来记录从那个页面链接访问过来的;
               #9.$http_user_agent :记录客户端浏览器的相关信息;
  
               #访问日志
               access_log /app/nginx/logs/access.log;
  

               #sendfile 指令指定 nginx 是否调用 sendfile 函数(zero copy 方式)来输出文件,对于普通应用,必须设为 on,如果用来进行下载等应用磁盘IO重负载 应用,可设置为 off,以平衡磁盘与网络I/O处理速度,降低系统的uptime.
               sendfile on;
  

               #连接超时时间
               keepalive_timeout 65;
  

               #设定客户请求头缓冲区大小。
               client_header_buffer_size 16k;
               large_client_header_buffers 4 64k;
  

               include /app/nginx/conf.d/*.conf;
  }
  ###########################################################################################
  

  php:
  1. 配置php.ini
  php.ini是php运行核心配置文件。
  
  1)避免PHP信息暴露在http头中:
  expose_php = Off
  
  2)避免暴露php调用mysql的错误信息:
  display_errors = Off
  
  3)在关闭display_errors后开启PHP错误日志(路径在php-fpm.conf中配置):
  log_errors = On
  
  4)设置PHP的扩展库路径(使用默认就行):
  extension_dir = "/usr/local/php7/lib/php/extensions/no-debug-non-zts-20141001/"
  
  5)设置PHP的时区:
  date.timezone = Asia/Shanghai
  
  6)开启opcache(看情况修改):
   ;
  Determines if Zend OPCache is enabled
  opcache.enable=1
  opcache具体配置参考:http://www.cnblogs.com/HD/p/4554455.html
  
  2. 配置php-fpm.conf
  php-fpm.conf是 php-fpm 进程服务的配置文件。
  
  1)设置php-fpm的pid路径:
  pid = /app/php7.0.4/logs/php-fpm.pid
  
  2)设置错误日志的路径:
  error_log = /app/php7.0.4/logs/php-fpm.log
  
  3)设置日志级别为:
  log_level = error
  日志可用级别为: alert(必须立即处理), error(错误情况), warning(警告情况), notice(一般重要信息), debug(调试信息). 默认: notice.
  
  4)设置文件打开描述符的rlimit限制,默认值为: 系统定义值。(可使用 ulimit -n查看):
  rlimit_files = 32768
  
  5)在linux服务器上,如果不设置events.mechanism,那么默认就是采用epoll:
  events.mechanism = epoll
  

  6)引入www.conf文件中的配置:
  include=/app/php7.0.4/etc/php-fpm.d/*.conf
  
  3. 配置www.conf(在php-fpm.d目录下)
  www.conf这是 php-fpm 进程服务的扩展配置文件。
  
  1)设置启动进程的用户和用户组:
  user = nginx
  group = nginx
  
  2)unix socket设置选项,如果使用tcp方式访问,这里注释即可:
  isten.owner = nginx
  listen.group = nginx
  listen.mode = 0660
  
  3)子进程最大数(看情况修改):
  pm.max_children = 1024
  
  4)启动时的进程数(看情况修改):
  pm.start_servers = 16
  
  5)保证空闲进程数最小值,如果空闲进程小于此值,则创建新的子进程(看情况修改)::
  pm.min_spare_servers = 5
  
  6)保证空闲进程数最大值,如果空闲进程大于此值,此时进行清理(看情况修改):
  pm.max_spare_servers = 20
  
  7)设置每个子进程重生之前服务的请求数(看情况修改):
  pm.max_requests = 2048
  对于可能存在内存泄漏的第三方模块来说是非常有用的. 如果设置为 '0' 则一直接受请求. 等同于 PHP_FCGI_MAX_REQUESTS 环境变量. 默认值: 0.
  

  8)开启慢日志:
  slowlog = /app/php7.0.4/logs/$pool.log.slow
  
  9)当一个请求该设置的超时时间后,就会将对应的PHP调用堆栈信息完整写入到慢日志中. 设置为 '0' 表示 'Off'. 可用单位: s(秒)(默认), m(分), h(小时), 或者 d(天). 默认值: 0.:
  request_slowlog_timeout = 3s
  
  10):设置单个请求的超时中止时间:
  request_terminate_timeout = 600s
  
  11):错误日志:
  php_admin_value = /app/php7.0.4/logs/www_error.log
  




页: [1]
查看完整版本: nginx和php的基本配置说明