国内服务器 WordPress 更新失败该如何解决

在国内使用 WordPress 搭建网站时无法避免“墙”的问题,经常被人提起的就有 Google Fonts 和 Gravatar,当访客的网络无法连接到这些资源时,浏览体验就会大打折扣。

遇到问题的不只是访客,站长更新 WordPress 时常常失败,绝大多数都因为国内服务器下载 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 主机都是通过它来进行批量管理的,可见它的威力有多大。

本作品采用 知识共享署名-非商业性使用-禁止演绎 4.0 国际许可协议 进行许可

发表评论

电子邮件地址不会被公开。 必填项已用*标注