维护指南
本章提供的是本应用自身特殊等维护与配置。而配置域名、HTTPS设置、数据迁移、应用集成、Web Server 配置、Docker 配置、修改数据库连接、服务器上安装更多应用、操作系统升级、快照备份等操作通用操作请参考:管理员指南 和 安装后配置 相关章节。
场景
WordPress 维护 10 大原则
为了使 WordPress 运行更有效率,方便维护、方便迁移,我们在实践中总结了需要注意的 10 个要点:
- 上传图片尽量不超过100k/张
- 如果总图片数量超过500张,建议将图片放到对象存储中,实现动静分离,也便于维护
- 所有图片名称为英文
- 新闻的图片大小比例最好为600:400,保证统一性。每篇新闻都要配套图片,美观大方,便于展示
- 所有页面、新闻 URL 地址均采用英文
- 后台账号的密码要复杂一些
- 轮播 Banner 不超过3张
- 插件数量不超过20个,不用的插件务必卸载,以避免插件冲突而导致网站不可用
- 网站内容为王,请将精力集中于内容的更新、知识库的建立
- 视频等大文件请放到其他存储中
WordPress 使用外部图片
当 WordPress 的图片超过 500 张的时候,建议将图片存放到外部对象存储中(OSS),实现图片与主程序分离,加速网站访问。
-
通过OSS的客户端工具,上传图片到对象存储
-
获取对象存储中图片的地址
-
登录Wordpress后台,依次打开:页面编辑-插入多媒体,将图片插入到WordPress系统中
WordPress 多站点
WordPress 支持一台服务器,一次安装,一个数据库,部署多个网站,多个网站共享主题、插件,站点 单独操作,方便构建和管理站群系统。
-
初始化 WordPress ,新建默认网站 MainSite
-
启用 WordPress 多站点
- 使用 SSH 工具连接服务器,修改 MainSite 配置文件 wp-config.php,添加配置项:
define( 'WP_ALLOW_MULTISITE', true );
/* That's all, stop editing! Happy blogging. */- 配置网络: 登录 WordPress 后台,通过【工具】-【站点网络配置】,点击【安装】,启用多站点网络功能
如需用域名访问,建议在主站安装时 就设置好域名访问 通过子域名访问网站,需要在域名解析时添加 * 通配符,如 *.websoft9.com
-
修改配置,使 WordPress 支持多站点:将系统生成的配置信息分别插入到 wp-config.php 文件,及替换 .htaccess文件
-
新建网站 web1 :【我的站点】-【管理网站】-【站点】-【添加新站点】,设置网站URL、标题、语言等。
-
多站点管理:重新登录后台,通过【我的站点】-【管理网站】,可以进行查看仪表盘、多网站管理、主题及插件维护等操作
WordPress 集成对象存储
所谓 WordPress 与 对象存储集成实际上就是:将对象存储挂载到 WordPress 的 wp-upload 文件夹上。
挂载 OSS 的操作并不简单,下面OSS Upload 插件 为例说明挂载的方法:
-
准备对象存储集成所需的:Bucket,读写权限、URL、Access Key和Secret Key
-
WordPress后台,安装 OSS Upload 插件并启用
-
对 OSS Upload 插件进行配置,关联将要连接的对象存储
-
设置资源本地备份与同步
备份与恢复
WordPress插件库中有数量众多的备份插件,我们推荐使用:UpdraftPlus WordPress Backup Plugin
这个插件特点和好处包括:
- 可以预设备份时间点,实现自动备份
- 可以备份网站文件和数据库
- 可以实现一键恢复
虚拟机部署迁移至 Docker 部署
将传统的虚拟机部署的 WordPress 迁移至 Docker 部署是必要的,也是可行的。
我们在实践中,发现需要注意的问题:
- 将 /var/www/html 挂载到已有的 WordPress 根目录,并将其目录的 owner 更改为容器中 www-data 用户的 UID,这样便可以避免诸多权限问题。
- 需匹配 WordPress 容器镜像版本,以适应原网站
- 关注 wp-config.php 在 Docker 版与原有网站之间的差异,必要的时候做出修正
权限问题可能导致网站无法访问或插件无法在线安装的问题
计划任务
WordPress 内置计划功能(wp cron),并默认启动了插件更新检查、主题检查等十多个任务。wp cron 不依赖操作系统的计划任务而独立运行。
如果用户希望增加自己的计划任务,具体的步骤如下:
- 安装并启用 WP Crontrol 插件
- 打开:【工具】>【Cron Event】,新增一个 Cron,选择 PHP code
fopen("websoft9.txt", "w");
- 测试这个 Cron,会发现 WP 根目录新增了 websoft9.txt 这个文件
升级
升级之前必须备份,这个是基本素养。
WordPress 升级包括:内核升级、插件升级和主题升级。这三者都可以通过 WordPress 后台进行在线升级,下图是升级提醒:
由于这三者分别属于不同的开发者,升级后可能会导致不兼容的现象。具体表现有:
- 网站打不开,显示500程序错误
- 网站结构变得混乱
- 主题部分功能不可用
以上不兼容现象是正常的,最好的解决办法是让 主题和插件的版本 适应 WordPress 内核版本。
内核升级
一键升级
WordPress 内核升级非常简单,当进入后台之后系统会提示需要升级,点击升级即可。
手动升级
有的时候,由于网络原因,在线一键升级不可用,那么就需要手工升级
- 下载最新的 WordPress 版本,并解压
- 登录云服务器,进入 WordPress 的根目录
- 删除此目录下的
wp-admin
和wp-includes
文件夹 - 上传本地解压后的 WordPress代码,有同名文件提醒的时候选择覆盖上传
- 重新访问WordPress,可能会出现下图所示的数据库升级步骤
- 点击【升级WordPress数据库】即可
插件升级
插件一般采用在线升级的方式,并逐一升级
主题升级
主题升级建议采用的方式:
- 使用 WinSCP 登录服务,删除原有主题(或对其改名)
- 通过 【WordPress 后台】>【外观】>【主题】>【添加】>【上传主题】的方式,完成主题安装
代码植入处理
WordPress 由于被广泛使用,导致安全漏洞被无限放大,其中WordPress网站被植入第三方代码是最常见的安全故障。
- 源码中植入非常明显的代码
- 源码中植入难以察觉的代码
- 数据库中被植入
经过实践,下面介绍一种简单有效的处理办法
- 通过在线安全检查网站sitecheck.sucuri.net进行排查,初步定义被植入的内容
- 登录WordPress后台,安装安全插件Wordfence Scan Enabled
- 运行Wordfence Scan Enabled,启动网站健康检查
- 对于“Critical”标记的结果,手工一一处理
其他扫描工具:
- Quttera Web Malware Scanner
- Anti-Malware Security and Brute-Force Firewall
故障排除
配置HTTPS后,网站部分资源无法加载?
在完成 https 的配置后,可能会出现网站无法加载 css 等静态文件,特别是是对于经过二次开发过的 WordPress 会更为常见。
问题原因及对策
-
特殊插件导致? 某些插件自带 HTTPS 开关,需要根据实际情况开启或关闭。
-
开了 CDN 服务? 编辑 WordPress 根目录下的 wp-config.php 文件,增加如下代码
define('FORCE_SSL_ADMIN', true);
define('FORCE_SSL_LOGIN', true);
$_SERVER['HTTPS'] = 'ON';
define( 'CONCATENATE_SCRIPTS', false );