设为首页 收藏本站
查看: 439|回复: 0

[经验分享] nginx和php的基本配置说明

[复制链接]

尚未签到

发表于 2018-12-16 11:59:45 | 显示全部楼层 |阅读模式
     这段时间对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(看情况修改):
  [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[error_log] = /app/php7.0.4/logs/www_error.log
  





运维网声明 1、欢迎大家加入本站运维交流群:群②:261659950 群⑤:202807635 群⑦870801961 群⑧679858003
2、本站所有主题由该帖子作者发表,该帖子作者与运维网享有帖子相关版权
3、所有作品的著作权均归原作者享有,请您和我们一样尊重他人的著作权等合法权益。如果您对作品感到满意,请购买正版
4、禁止制作、复制、发布和传播具有反动、淫秽、色情、暴力、凶杀等内容的信息,一经发现立即删除。若您因此触犯法律,一切后果自负,我们对此不承担任何责任
5、所有资源均系网友上传或者通过网络收集,我们仅提供一个展示、介绍、观摩学习的平台,我们不对其内容的准确性、可靠性、正当性、安全性、合法性等负责,亦不承担任何法律责任
6、所有作品仅供您个人学习、研究或欣赏,不得用于商业或者其他用途,否则,一切后果均由您自己承担,我们对此不承担任何法律责任
7、如涉及侵犯版权等问题,请您及时通知我们,我们将立即采取措施予以解决
8、联系人Email:admin@iyunv.com 网址:www.yunweiku.com

所有资源均系网友上传或者通过网络收集,我们仅提供一个展示、介绍、观摩学习的平台,我们不对其承担任何法律责任,如涉及侵犯版权等问题,请您及时通知我们,我们将立即处理,联系人Email:kefu@iyunv.com,QQ:1061981298 本贴地址:https://www.yunweiku.com/thread-651979-1-1.html 上篇帖子: LAMP——httpd 2.4.20 + mysql 下篇帖子: xcache为php加速
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

扫码加入运维网微信交流群X

扫码加入运维网微信交流群

扫描二维码加入运维网微信交流群,最新一手资源尽在官方微信交流群!快快加入我们吧...

扫描微信二维码查看详情

客服E-mail:kefu@iyunv.com 客服QQ:1061981298


QQ群⑦:运维网交流群⑦ QQ群⑧:运维网交流群⑧ k8s群:运维网kubernetes交流群


提醒:禁止发布任何违反国家法律、法规的言论与图片等内容;本站内容均来自个人观点与网络等信息,非本站认同之观点.


本站大部分资源是网友从网上搜集分享而来,其版权均归原作者及其网站所有,我们尊重他人的合法权益,如有内容侵犯您的合法权益,请及时与我们联系进行核实删除!



合作伙伴: 青云cloud

快速回复 返回顶部 返回列表