WordPress 部署与版本控制最佳实践:使用 Git 管理代码、Composer 管理依赖、自动部署上线
现代 WordPress 开发已经不能仅仅依靠 FTP 上传文件了。使用版本控制(Git)、依赖管理(Composer)和自动化部署工具,可以大幅提高开发效率和代码安全性。这套流程让团队协作更顺畅,也让代码发布变得可预测、可回滚。
Git 是版本控制的核心。WordPress 项目的 Git 仓库通常只包含主题和自定义插件,而不包含 WordPress 核心和第三方插件(这些由 Composer 管理)。一个标准的 .gitignore 文件应该排除以下内容:
wp-config.php /wp-content/upgrade/ /wp-content/uploads/ /wp-content/plugins/ /wp-content/themes/(保留你自己的主题) /vendor/ /node_modules/ .env .idea/ *.sql *.log
将 WordPress 核心排除在 Git 之外,可以保持仓库轻量,也便于以后通过 Composer 更新核心。
Composer 管理 PHP 依赖 是 WordPress 开发的主流方式。通过 composer.json 文件,你可以声明 WordPress 核心、第三方插件、以及开发工具(如 PHPUnit、WP-CLI、PHP_CodeSniffer)的版本:
{
"require": {
"johnpbloch/wordpress": "^6.0",
"wpackagist-plugin/woocommerce": "^7.0",
"wpackagist-plugin/akismet": "^4.0"
},
"require-dev": {
"phpunit/phpunit": "^9.0",
"squizlabs/php_codesniffer": "^3.0"
},
"repositories": [
{
"type": "composer",
"url": "https://wpackagist.org"
}
],
"extra": {
"wordpress-install-dir": "wp"
}
}
wpackagist.org 是 WordPress 官方插件的 Composer 镜像,让你可以像安装普通 PHP 包一样安装 WordPress 插件。运行 composer install 后,WordPress 核心会安装在 wp/ 目录,插件安装在 wp-content/plugins/。
部署流程 可以从手动 FTP 升级为自动化部署。常见的部署工具包括 Deployer、Capistrano、以及基于 CI/CD 管道的方案(如 GitHub Actions)。
Deployer 是一个用 PHP 编写的部署工具,配置文件 deploy.php 定义了部署步骤:
namespace Deployer;
require 'recipe/common.php';
set('repository', 'git@github.com:你的项目.git');
set('keep_releases', 5);
host('你的服务器IP')
->set('deploy_path', '/var/www/你的网站');
task('deploy', [
'deploy:info',
'deploy:prepare',
'deploy:lock',
'deploy:release',
'deploy:update_code',
'deploy:vendors',
'deploy:writable',
'deploy:symlink',
'deploy:unlock',
'cleanup',
'success'
]);
after('deploy:failed', 'deploy:unlock');
执行 dep deploy 后,Deployer 会 SSH 到服务器,从 Git 拉取最新代码,安装 Composer 依赖,创建符号链接,实现零停机部署。
环境配置分离 是部署中重要的一环。不同环境(本地、测试、生产)需要不同的配置,比如数据库连接、API 密钥、调试模式。推荐使用环境变量或 .env 文件来管理这些差异。vlucas/phpdotenv 是在 WordPress 中广泛使用的环境变量管理库。
在 wp-config.php 中读取环境变量:
$dotenv = Dotenv\Dotenv::createImmutable(__DIR__);
$dotenv->load();
define('DB_NAME', $_ENV['DB_NAME']);
define('DB_USER', $_ENV['DB_USER']);
define('DB_PASSWORD', $_ENV['DB_PASSWORD']);
在服务器上创建 .env 文件,包含了所有敏感信息,该文件不应提交到 Git 仓库。
数据库迁移 是部署中另一个需要关注的环节。如果你在代码中修改了数据库结构,需要编写迁移脚本。可以使用 wp db 命令执行 SQL 脚本,或者使用 Migrate DB 这类工具。
零停机部署 的最佳实践包括:在部署期间将网站设置为维护模式,部署完成后再恢复。Deployer 可以通过 deploy:writable 任务设置文件权限。对于高流量网站,还可以考虑使用负载均衡器,逐个节点更新。
版本控制和自动化部署是现代开发流程的基石。这套流程从代码编写到上线发布,全程可追溯、可回滚,大幅降低了人为失误的风险。对于团队协作项目,这套流程是必备的。

