sourcebroker / deployer-extended-wordpress-composer
基于Composer的WordPress部署,使用deployer.org。
Requires
- deployer/deployer: ~7.0
- sourcebroker/deployer-extended: ^18
- sourcebroker/deployer-extended-database: ^16
- sourcebroker/deployer-extended-media: ^11
- sourcebroker/deployer-loader: ^4
- symfony/dotenv: ^3.3 || ^4 || ^5 || ^6
- wp-cli/search-replace-command: ~2.0
- wp-cli/wp-cli: ~2.1
README
它做什么?
此包提供了使用deployer (deployer.org) 部署WordPress的部署任务,同时还提供了同步数据库和媒体文件的任务。
预期部署将与基于capistrano的https://roots.io/bedrock/兼容
依赖项
此包依赖于以下包
- sourcebroker/deployer-extended 包提供了一些deployer任务,可用于任何框架或CMS。
- sourcebroker/deployer-extended-database 包提供了一些与php框架无关的deployer任务,用于同步数据库。
- sourcebroker/deployer-extended-media 包提供了一些与php框架无关的deployer任务,用于同步媒体。
- wp-cli/search-replace-command 包在数据库同步后更改域名。是wp-cli/wp-cli工具的一部分。
安装
使用composer安装包
composer require sourcebroker/deployer-extended-wordpress-composer
如果您使用deployer作为phar,请将以下行放入您的deploy.php文件中
require __DIR__ . '/vendor/autoload.php'; new \SourceBroker\DeployerExtendedWordpressComposer\Loader();
从您的deploy.php中删除任务 "deploy"。否则,您将覆盖在deployer/deploy/task/deploy.php中定义的部署任务
示例deploy.php文件
<?php namespace Deployer; require_once(__DIR__ . '/vendor/sourcebroker/deployer-loader/autoload.php'); new \SourceBroker\DeployerExtendedWordpressComposer\Loader(); set('repository', 'git@my-git:my-project.git'); host('live') ->setHostname('111.111.111.111')->port(22) ->setRemoteUser('www-data') ->set('branch', 'master') ->set('public_urls', ['https://www.example.com/']) ->set('deploy_path', '/var/www/example.com.live'); host('beta') ->setHostname('111.111.111.111')->port(22) ->setRemoteUser('www-data') ->set('branch', 'beta') ->set('public_urls', ['https://beta.example.com/']) ->set('deploy_path', '/var/www/example.com.beta'); host('dev') ->set('public_urls', ['https://example-com.local/']) ->set('deploy_path', getcwd());
请注意host('dev');的声明。这对于数据库任务声明域名替换和存储数据库转储的路径是必需的。
同步数据库
使用sourcebroker/deployer-extended-database同步数据库。从实时实例到本地实例同步数据库的命令示例
dep db:pull live
您也可以像这样从实时实例复制数据库到测试实例
dep db:copy live --options=target:beta
域名替换
"post_command"任务"db:import:post_command:wp_domains"将更改在"public_urls"中声明的域名。域名替换是通过来自wp-cli/wp-cli的cli命令"search-replace"完成的。
请注意,每个实例应有相同数量的"public_urls",因为域名替换是为每对相应的URL进行的。
查看以下示例以获得灵感
host('live') ->setHostname('111.111.111.111') ->setRemoteUser('www-data') ->set('public_urls', ['https://www.example.com', 'https://sub.example.com']) ->set('deploy_path', '/var/www/example.com.live'); host('beta') ->setHostname('111.111.111.111') ->setRemoteUser('www-data') ->set('public_urls', ['https://beta.example.com', 'https://beta-sub.example.com']) ->set('deploy_path', '/var/www/example.com.beta'); host('dev') ->set('public_urls', ['https://example-com.dev', 'https://sub-example-com.dev']) ->set('deploy_path', getcwd());
如果您这样做
dep db:pull live
以下命令将在数据库导入后自动执行
wp search-replace https://www.example.com https://example-com.dev wp search-replace https://sub.example.com https://sub-example-com.dev
我应该使用 "deployer-extended-wordpress" 还是 "deployer-extended-wordpress-composer"?
在sourcebroker/deployer-extended-wordpress中,WordPress和第三方插件是手动安装的。好处是您可以自动更新WordPress和插件。这对于预算较低的WordPress网站来说可能更可取。
在 sourcebroker/deployer-extended-wordpress-composer 中,WordPress 和第三方插件使用 composer 进行安装。这种方式可以让你更好地控制安装内容,但同时安装新的 WordPress 或新的插件版本时,你首先需要修改 composer.json 或执行 composer update(取决于升级的大小)。然后你需要提交 composer.json / composer.lock 并进行部署,这将安装 WordPress 和插件的最新版本。这是一项不能轻易自动化的额外工作。这种解决方案的一个额外优点是,你可以轻松地清理受感染的 WordPress/plugins 文件,因为每次部署时,所有的 php 文件都是最新的(来自你的 git 和 composer 仓库的部分)。