这段时间对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