开发 WordPress 项目,正确的做法是在本地开发,然后把对项目做的修改部署到生产环境。按照 《WordPress 开发:开发环境》 这个课程,可以自动化在本地搭建一个开发环境,可以使用 Composer 管理 WordPress。《WordPress 开发:生产环境》,这个课程里演示了自动化搭建生产环境,并部署 WordPress 项目的方法。
本地开发环境与生产环境基本可以保持一致,同样的操作系统(Ubuntu),同样的配置方法。对环境的配置都保存成了文件,修改了配置文件,再次执行配置,可以配置本地开发环境,也可以自动化去配置网站的生产环境。最近更新了 《WordPress 开发:开发环境》,演示了在本地开发环境上发现核心需要更新,更新以后,做一下提交,然后把更新再部署到生产环境的整套过程。
下面介绍一下更新核心并部署到生环境的流程。
更新核心
发现 WordPress 核心有更新,打开 site 目录下的 composer.json 文件,在 require 里面找到 johnpbloch/wordpress,把它后面的版本号修改最提示更新到的版本号。
示例:
site/composer.json
"require": { ... "johnpbloch/wordpress": "4.8.3", ...
打开命令行,登录到开发环境上的虚拟机,然后进入到项目所在目录(site),执行更新命令:
composer update
这样 Composer 会帮我们按照 composer.json 文件上的指示去更新项目,它会发现我们修改了 WordPress 的版本号,这样就会去给我们下载指定版本的 WordPress 核心。
更新数据库
有些更新需要更新核心的数据库,可以使用 wp-cli 去更新数据库。执行:
wp core update-db
提交更新
在本地完成了更新以后,要做一次提交,再把提交 push 到项目的远程仓库。
git add . git commit -m '更新到 WordPress 4.8.3' git push origin master
部署更新
远程仓库包含了我们新做的提交,这样我们就可以把它部署到网站的生产环境了。Windows 用户登录到开发环境上的虚拟机,进入到用户主目录下的 trellis 目录。macOS 用户直接在主机的位置上找到项目下面的 trellis 目录。因为部署的时候要用到 Ansible,这个工具在 Windows 上不能用,所以我们在本地开发环境的虚拟机上安装了一个 Ansible。macOS 用户直接在主机上安装了 Ansible 工具,所以要在主机上直接使用 Ansible。
执行:
./bin/deploy.sh production 生产环境网站名
生产环境网站名是我们在描述生产环境的时候自己配置的名字。这个配置存储在了 trellis/group_vars/production/wordpress_sites.yml。
完成以后,我们的生产环境的网站也会是最新版本的 WordPress。如果更新需要更新数据库,我们可以登录到生产环境的服务器,然后用 wp-cli 再去更新一下数据库。
WordPress