在国内使用 WordPress 搭建网站时无法避免“墙”的问题,经常被人提起的就有 Google Fonts 和 Gravatar,当访客的网络无法连接到这些资源时,浏览体验就会大打折扣。
遇到问题的不只是访客,站长更新 WordPress 时常常失败,绝大多数都因为国内服务器下载 WordPress 安装包的速度太慢导致超时。此前我们讨论过升级主题和插件提示例行维护的问题,其实和网络也有关系。
保持更新很重要
一些站长博主建议关闭 WordPress 更新,以免主题、插件出现兼容问题,或者造成数据库损坏。然而眼哥认为保持 WordPress 更新很重要。
- 软件都不可避免存在漏洞,WordPress 也一样,新的 WordPress 会修补已知漏洞,保护网站和服务器的安全;
- 开发人员不断地优化代码,新的 WordPress 代码效率更高,错误更少,使用体验也会提高;
- 更新的风险并不大,主流的服务器都有备份功能,如果真的很不幸出现了问题,我们还可以“一键还原”。
下面看看有哪些方法可以避免 WordPress 更新失败。
方法一,修改 PHP 最大执行时间(不推荐)
PHP 默认最大执行时间是30秒,而我在阿里云 ECS 上下载最新版本的 WordPress zip包的最长用时超过15分钟,在后台点击升级将导致 PHP 超时报错。网传修改 PHP 最大执行时间的三种方法:
# 在php.ini 里设置
max_execution_time = 120;
# 通过PHP的ini_set函数设置
ini_set("max_execution_time", "120");
# 通过set_time_limit 函数设置
set_time_limit(120);
如果需要不限时地运行,那么将以上代码中的数字改成 0 即可。
眼哥不建议使用本方法,因为一来我们无法确认总体下载时间需要多长,二来长时间或无限期运行 PHP 可能导致服务器被消耗光,最后还可能给黑客运行入侵脚本提供便利。
方法二,修改服务器的 hosts 文件(不推荐)
我们可以通过 hosts 文件手动将域名指向特定的 IP 地址而不是借助 DNS 服务器,有人发布了据说可以加速 wordpress.org 的 IP 地址,然而眼哥测试时发现根本无法 ping 通。目前并未发现真正可以加速的 IP 地址。
wordpress.org 的服务器地址随时可能改变,将 IP 地址写死反而可能导致插件、主题安装失败,因此这个方法也是不推荐的。
方法三,使用代理服务器(需要小心)
这个方法的原理是在国外的服务器上创建一个 http代理,将本地服务器的更新地址指向代理服务器,本地服务器更新 WordPress 时,流量从代理服务器转发过来,从而获得加速效果。centos.bz 就创建了这样的代理供大家使用:
1、打开wp-config.php,在底部增加如下代码:
define('WP_PROXY_HOST', 'us.centos.bz');
define('WP_PROXY_PORT', '31281');
2、保存之后登录wordpress后台,切换到更新,点击升级按钮开始更新。
3、更新完成后请注释掉刚才加的代码,即在前面添加//,如:
//define('WP_PROXY_HOST', 'us.centos.bz');
//define('WP_PROXY_PORT', '31281');
4、下次需要升级时再删除注释。
眼哥着实敬佩这种助人为乐的互联网精神,不过代理服务器的安全是一个需要考虑的问题。因为代理服务器可以控制转发的流量,也就是说一旦有不怀好意的人控制了代理服务器,他就能够让本地服务器收到经过修改的文件,而这个文件很可能被植入了木马病毒。
如果要采取此方法,建议要么自建代理服务器,要么一定要确认代理服务器的安全性。
方法四,使用 WordPress CLI 手动更新(推荐)
WordPress CLI 是一个官方推出的,用来和 WordPress 交互与管理的命令行工具,无需登录网站后台就能操作。以升级 WordPress 最新版本为例,通过 SSH 连接服务器,运行:
# 安装工具
curl -O https://raw.githubusercontent.com/wp-cli/builds/gh-pages/phar/wp-cli.phar
# 测试是否正常
php wp-cli.phar --info
# 为了方便直接用 wp 调用工具
chmod +x wp-cli.phar
sudo mv wp-cli.phar /usr/local/bin/wp
# 测试 wp 能否调用工具
wp --info
# 进入网站所在目录
cd /wwwroot/idcbuy.net
# 下载最新的 WordPress 安装包
wget https://cn.wordpress.org/latest-zh_CN.zip
# 用 CLI 指定安装包进行升级
wp core update latest-zh_CN.zip
如果服务器连接 WordPress 更新服务还算比较快的话,可以直接运行 wp core update
,由 CLI 自动下载安装。放心,它的执行时间比 PHP 要长多了。
升级 WordPress 只不过是 WordPress CLI 的一个小应用,真的是大材小用了,很多专门的 WordPress 主机都是通过它来进行批量管理的,可见它的威力有多大。