PHP参数调优
一 基础简介PHP.ini 适合于nginx和apache,如php-fpm适合于nginx+fastcgi的配置
php.ini PHP引擎php.fpm PHP的进程
PHP的配置文件由两个,一个是development,另一个是production
两个的区别:
生产场景php.ini的日志都是关闭或者输出到文件中的,所以我们在生产环境中把非程序上的输出都关闭或隐藏
二php.ini 参数调优
日志的关闭与隐藏就是PHP的基本调优
1 打开PHP的安全模式
PHP的安全模式是PHP内嵌的安全机制,能够控制一些PHP中的函数执行,同时把很多文件操作的函数进行权限控制,如果通过PHP来调用rm而删除一些服务器资源,则安全不复存在
http://i2.运维网.com/images/blog/201806/03/e91ce838e2e8e227eb8e372085b8e17b.png
http://i2.运维网.com/images/blog/201806/03/4ca597349213e44f1ea626c16f3c2cb4.png
2 用户组安全
当safe_mode 打开时,safe_mode_gid被关闭,那么PHP脚本能够对文件进行访问,而且相同组的用户也能对文件进行访问,建议设置为:safe_mode_gid=off
如果不设置,则有可能我发对服务器网站目录下的文件进行操作
http://i2.运维网.com/images/blog/201806/03/06383219ed329640e6cf3e8100a9edc2.png
3 关闭危险函数
例如可以通过phpinfo()查看PHP的版本和基础信息,进而对系统有一个了解
http://i2.运维网.com/images/blog/201806/03/73131668166ab943781f422b3a4a421a.png
4 关闭PHP版本信息在HTTP头中的泄露
http://i2.运维网.com/images/blog/201806/03/1a8df5b8474e6bf19078b7bfaa29367a.png
5 关闭注册全局变量
在PHP中提交的变量,包括使用POST或者GET提交的变量,都将自动注册为全局变量,能够直接访问,这对服务器是非常不安全的,所有我们不能让他注册为全局变量,就把注册全局变量的选项关闭,此处涉及到程序开发
http://i2.运维网.com/images/blog/201806/03/9e08865e1aa9cdae2f7732c36920a036.png
6 打开magic_quotes_gpc 来防止SQL注入
SQL注入是非常危险的,轻则网站后台被修改,重则整个服务器沦陷
http://i2.运维网.com/images/blog/201806/03/94fbfe59b3755a30cdbc324bd7dab2f0.png
SQL注入防范:
apache中mod_security和mod_enasive
nginx 中 nginx lua vaf
7 错误信息控制
一般的PHP在没有连接到数据库或者其他情况下会有提示错误,一般错误信息中会包含PHP脚本当前的路径信息或者查询的SQL语句等信息,这样不安全
http://i2.运维网.com/images/blog/201806/03/4e1ac22e5837de523b9d886941786f7c.png
如果自己想看日志,则首先需要设置日志的级别
http://i2.运维网.com/images/blog/201806/03/c16e3ee3401500021ab270470e369868.png
设置日志打开并提供一个路径
http://i2.运维网.com/images/blog/201806/03/d9e8b2fcf0c33b7a94dc85f34a2c1d90.png
8 部分资源参数限制优化
1 设置每个脚本运行的最长时间
当无法上传较大的文件或者后台备份数据经常超时,需要调整,此参数是默认
http://i2.运维网.com/images/blog/201806/03/49b207da5a257cca8c0779683f8dd32c.png
2 每个脚本使用的最大内存
http://i2.运维网.com/images/blog/201806/03/f4ad68a2710cd27494857419e5e19ce1.png
3 每个脚本等待输入数据的最长时间
http://i2.运维网.com/images/blog/201806/03/5f33d3113a32be6f34d527244a349ef2.png
其中-1表示无限制
4 上载文件的最大许可大小
http://i2.运维网.com/images/blog/201806/03/adfcfc9781190a7e06336579233f5520.png
9 部分安全参数优化
1 禁止打开远程地址
http://i2.运维网.com/images/blog/201806/03/493a1db6b5a4133990cf0b17e1635b74.png
2 设定 cgi.fix_pathinfo=0放置nginx文件类型错误解析漏洞
http://i2.运维网.com/images/blog/201806/03/b0564af04877f07942f6df2a0de99f47.png
10 调整PHP session 信息存放类型和位置
默认位置
http://i2.运维网.com/images/blog/201806/03/1682e81bc63efea44f1958a11e1f7ee1.png
一般的,在数据进行再次访问如果会话存放在本地,访问被调用到另一台设备上,则会导致重新需要再次进行会话的保存
其默认的保存方式是文件,一般需要将文件修改为memcached
http://i2.运维网.com/images/blog/201806/03/1491a1009bd95c68333157f7dce564c3.png
搭建memcached
http://i2.运维网.com/images/blog/201806/03/df207660a061c0c181f012bb892d117b.png
http://i2.运维网.com/images/blog/201806/03/f0436761d219d805544301e20f7537c2.png
路径修改为memcached服务器的地址
http://i2.运维网.com/images/blog/201806/03/e17c4c45811cadd9d2a3313a511e6413.png
http://i2.运维网.com/images/blog/201806/03/f55d95dbee5db04b74d4137c22e725b4.png
重启服务
http://i2.运维网.com/images/blog/201806/03/54b7b4d510c6a040f071e7ff205bb6a0.png
查看info是否存在
http://i2.运维网.com/images/blog/201806/03/8a015143698b36345d59147b58450a13.png
二 php-fpm
1 pid
http://i2.运维网.com/images/blog/201806/03/3dc2393bdd7f0444d0de14e407d7b510.png
打开pid 通过pid进行管理
2 开启错误日志
http://i2.运维网.com/images/blog/201806/03/db1db3962ae5327c3359c4b1fa95a493.png
3 开启日志级别
http://i2.运维网.com/images/blog/201806/03/28968bea56dd680c0410779e0fd4b6a9.png
4 最大的FPM fork 进程的数量。如果并发比较大,可以开大一点
http://i2.运维网.com/images/blog/201806/03/9cc29da13415305073693f6e65ea6794.png
5调整最大打开文件数量
http://i2.运维网.com/images/blog/201806/03/b1525cee92dc4cc03f3817f0b9af04e4.png
6 用户和组,要和nginx的用户和组相同
http://i2.运维网.com/images/blog/201806/03/893e2a3e8b0048e4ea174ca1dc0e81db.png
7 修改监听别的端口和IP地址
http://i2.运维网.com/images/blog/201806/03/a462d2f0bcbd49c039e9309c4018404e.png
8 进程相关
1 默认
最大的进程数量
http://i2.运维网.com/images/blog/201806/03/4d8611240aed0892d82b806eea731d31.png
启动服务进程数量
http://i2.运维网.com/images/blog/201806/03/567aaa8efaefe200646bdf1cbae3bd89.png
服务最小进程数量,当没有流量时的服务数量
http://i2.运维网.com/images/blog/201806/03/90f869d22e8e882e2c2f3913d70dc039.png
最大空间数
http://i2.运维网.com/images/blog/201806/03/67637cb70be293e69f9b6f29093b99c5.png
2 修改
http://i2.运维网.com/images/blog/201806/03/81764d208e4a239825b1802706332d41.png
修改参数结果
http://i2.运维网.com/images/blog/201806/03/43015e1f67da2aa74c02b5a4fc3b22b9.png
http://i2.运维网.com/images/blog/201806/03/c94295b81ad06b865d43792bd831f4f2.png
http://i2.运维网.com/images/blog/201806/03/7353660cd28f894114301ff24e8a1c29.png
http://i2.运维网.com/images/blog/201806/03/1513ef02f1b24f3d524981918c0ee569.png
当该进程不使用时销毁时间
http://i2.运维网.com/images/blog/201806/03/c99ec75fbbe144affb596692091b88a6.png
每个子进程服务请求的数量
http://i2.运维网.com/images/blog/201806/03/4984f9223d7982d3e1ab6d8fb68ba53a.png
9PHP的访问日志
http://i2.运维网.com/images/blog/201806/03/205916181f36aa3015d7e7f7f824e1fb.png
10慢查询相关日志开启
http://i2.运维网.com/images/blog/201806/03/4b68178acb2d3bf45a05b573289cbda8.png
页:
[1]