PHP7环境开启opcache和memached给wordpress提速

2019年4月28日12:04:28 评论 2,251 4054字

现在还坚持写博客的人纯粹是一种情怀,因为目前博客的流量越来越少,依靠博客赚钱基本上是不可能的,甚至连服务器的费用都赚不回来,因此很多博客上干脆就不挂广告。博客没有一点收入,但是对于有情怀的人来说总想让自己的博客访问速度快一些,访问体验能够媲美门户网站,要达到这种效果就得从两方面着手,一个是升级服务器,另一个就是不断的折腾去优化服务器和程序。

wordpress

目前博客程序很多,而wordpress是大家公认为最臃肿的博客程序,但是依然有很多人选择它,就是因为它虽然臃肿,但是功能强大,更新及时,安全性高,模板和插件资源丰富。而我之所以选择wordpress则纯粹是因为已经习惯了,懒得再折腾。

wordpress之所以慢是因为它不能生成纯静态页面,而是每次访问都要生成页面,所以耗费资源较大,如果是新手的话用Hexo等纯静态程序或Zblog等轻量级程序可能速度会更快(只是可能,因为我也没用过这些程序,只是别人说比较快)。

服务器

其实说wordpress访问慢的主要原因还是服务器不够强大,如果服务器足够强大的话用那种博客程序的访问速度差异都会很小,但好的服务器需要不少银子,这就要看你的情怀有多浓了。但无论如何用一个VPS或云主机是起码得,以现在的价格几百元就能搞定,而虚拟机真没有多大折腾的空间。现在阿里云、百度云、腾讯云等在双十一等时间都会搞活动,价格会更便宜,所以入手一台云服务器也就是一顿饭钱的事。

主题

wordpress速度快慢跟主题有很大的关系,主题除了影响速度外还有和php版本的兼容性,和新版wordpress兼容性、安全性等也有很大关系,因此尽量选一个优质的收费主题,因为收费主题后期更新有保障。很多收费主题都集成了常用插件和常用功能,这样不仅能够减少插件安装,同时也能够节约很多时间,因为插件多了兼容性问题可能就会比较突出,而且插件的很多功能相互重复,安装多了系统要为重复功能浪费很多资源。

还有很多功能如果不用插件实现,而用纯代码试下的话就需要编辑PHP文件,而网上的很多教程针对的PHP版本不同,甚至有些教程是针对windows系统的,这样新人很容易出错。

LNMP环境

用wordpress要想快还是得选LNMP环境,用windows会有各种毛病,而且速度会比linux差很多。对于新人来说linux可能是个阴影,我到目前为止对于linux还是个新人,只会照着教程一步一步的进行,离了教程什么都干不好,不过好在目前有强大的WDCP和宝塔面板,还有万能的百度,所以只要肯折腾,一切都不是问题。

对于不懂linux又不愿意从头学的人,我强烈推荐使用面板,因为真的很简单,使用面板后一切就和windows差不多,全程可视化操作。就面板而言宝塔更为小巧,而且更新较快,和用户互动比较多,功能上调整较快,但在论坛看小毛病也比较多,对于新人可能要习惯折腾。

PHP7.2

LNMP环境中PHP最好选择PHP7.2版本,因为PHP7.2编译效率大概是PHP5.6的10倍以上,PHP5.6以下版本就更不用说了。编译效率高不仅是速度快这一个优点,同时也意味着可以支持更多的并发数。如果选用PHP7.2的话mysql我建议选5.6以上版本。但是很多老的wordpress主题和插件可能不支持php7.2,会出现乱码,白屏等各种问题,如果你使用的主题较老,且需要使用特定插件的话那么还是PHP5.6兼容性更好一些。

为什么选择PHP7.2,而不是其他,这是因为7.2版本目前比较稳定,主题支持也较好,7.3版本还不够稳定,而7.1版本相对7.2版本效率还不够高。

memached

memached是提速的利器,不仅是对wordpress,其他程序也一样,但前提是得是独立主机,虚拟主机就不用想了。关于怎么部署memached的教程网上有很多,但是要在linux下安装memached并不是一件容易学会的事情,即使照着教程也会各种出错,所以对于不懂linux的人还是用面板比较方便,一键安装。

宝塔面板安装memached

正常linux下安装memached比较麻烦,因为需要经过Mencached 的服务端安装、libmemcached安装、php-memcached拓展三步,每一步都可能出错,尤其是php-memcached可能因版本问题会一直不成功。PHP7.0以上版本需要下载github PHP7专用的memcached组件版本,地址https://github.com/php-memcached-dev/php-memcached/archive/php7.zip。

如果不想用面板安装,而要ssh编译安装的话那网上有大把的教程,照着安装就行,但需要注意服务器环境是否和你的一样,否则基本上不会成功。

memached服务器端安装好后百度教程配置wordpress插件,也很简单,网上教程一大把。

opcache

opcache是PHP自带的功能,不需要安装,只要开启就行。在php安装目录下的php.ini文件开启。

打开php.ini搜索opcache,发现[zend opcache],在他下面第一行加上

zend_extension= /www/wdlinux/nginx_php-7.2/lib/php/extensions/no-debug-non-zts-20090626/opcache.so

上面的路径根据自己的实际路径改下,其他内容参照下面的,下表没有的可以不用改。

#启用Zend Optimizer优化开关

opcache.enable=1

#共享内存的大小, 总共能够存储多少预编译的 PHP 代码(单位:MB),推荐128M(根据服务器内存大小调整)

opcache.memory_consumption=128

#暂存池中字符串的占内存总量.(单位:MB), 推荐 8

opcache.interned_strings_buffer=8

#最大缓存的文件数目 200 到 100000 之间,推荐 4000

opcache.max_accelerated_files=4000

#;内存“浪费”达到此值对应的百分比,就会发起一个重启调度.

opcache.max_wasted_percentage=5

#2s检查一次文件更新 注意:0是一直检查不是关闭,推荐 120

opcache.revalidate_freq=2

#是否保存文件/函数的注释 如果apigen、Doctrine、 ZF2、 PHPUnit需要文件注释,推荐 0

opcache.save_comments=0

#打开快速关闭, 打开这个在PHP Request Shutdown的时候会收内存的速度会提高

opcache.fast_shutdown=1

PHP-Fpm

很多wordpress的502错误都和php-fpm及nginx.conf配置有关,调整这两个设置可以根治502问题,同时调整设置也可以提高服务器负载。

php-fpm初始/空闲/最大worker进程数,根据服务器内存来定,基本上每个进程占20-30m内存,自己按照内存大小计算合理数字。

pm.max_children = 300

pm.start_servers = 20

pm.min_spare_servers = 5

pm.max_spare_servers = 35

最大处理请求数

最大处理请求数是指一个php-fpm的worker进程在处理多少个请求后就终止掉,master进程会重新respawn一个新的,这个配置的主要目的是避免php解释器或程序引用的第三方库造成的内存泄露。

pm.max_requests = 10240

最长执行时间

最大执行时间在php.ini和php-fpm.conf里都可以配置,配置项分别为max_execution_time和request_terminate_timeout,建议设置300秒。

nginx.conf

nginx.conf设置也会解决各种502问题,其实502问题也就是nginx的问题,出现这一问题基本上就是nginx超时。打开nginx.conf,找到FastCGI的timeout时间,并修改如下:

http {

fastcgi_connect_timeout 300;

fastcgi_send_timeout 300;

fastcgi_read_timeout 300;

......

}

重启nginx

以上所有设置完成后重启nginx服务,如果不会重启的话直接重启服务器即可,wordpress马上飞起。

插件

目前我只启用了WP Super Cache和Autoptimize两个插件,其中WP Super Cache开启了对象存储。另外还安装了WP Clean Up,一款数据库优化插件,可以删除历史版本,碎片数据,优化数据库,从而太高速度,但这个插件不用常开,过一段时间优化一次即可。

至于有人说在开启memached和Opcache的情况下WP Super Cache没有多大用,但我自己对比后发现还是开启WP Super Cache后更快一些。当然这也许是心理作用,因为已经很快了,那点差异很难观察到。

CDN

其实如果带宽足够的话都用不着CDN,但在带宽太贵的的情况下CDN是不错的选择,对于图片、js、css等体积较大的资源加速非常明显。

以上所有设置中只有memached比较麻烦,其他都很容易,其实如果有老鸟带着设置一遍的话基本上就能上手,自己折腾的话只能让时间成为老师。

以上记录的核心是memached和opcache,这两个才是提速的关键,但很多人望难而退,其实动手做起来并不难。

这篇文章其实是我自己使用wordpress过程中的经验,是一种思路的整理,而不是教程,因为很多内容都没有详细的步骤,因为我自己不懂服务器运维技术,如果强抄别人的教程很可能会误导他人。

  • 版权声明: 发表于 2019年4月28日12:04:28
  • 转载注明:https://www.savouer.com/3886.html
匿名

发表评论

匿名网友 填写信息