mmoollllee / bedrock-deployer-7
Roots Bedrock 的 Deployer 脚本
Requires
- deployer/deployer: ^7.0
- vlucas/phpdotenv: ^5.4
README
为 Roots Bedrock 和 Roots Sage 以及 Roots Trellis 设置提供的 Deployer 7 脚本。基于 FlorianMoser 的工作
Trellis 提供了强大的基于 Ansible 的部署。但如果您只想在运行自定义过程时部署 Bedrock,Deployer 是一个快速且简单的替代方案。
也许您甚至试图将 Bedrock 部署到类似于 Plesk 的共享托管。根据您的托管环境,这可能可行。
注意事项:在进行部署脚本实验之前,请确保您已备份了本地以及远程文件,因为路径错误可能会导致文件被轻易覆盖!您完全负责使用此处提供的脚本。
谁需要这个
希望使用 Deployer v7 部署 Bedrock 应用的 PHP 开发者。
安装
使用 Composer
$ composer require mmoollllee/bedrock-deployer-7
设置您的 Trellis & Bedrock 环境,并创建一个仓库。仓库可以包含 trellis 和站点文件夹,或 bedrock 项目 示例
在项目根目录创建一个 deploy.php 文件并配置您的环境。您可能希望使用 examples/deploy.full-example.php 并查看其所需的 配置文件。如果是这样,首先运行将创建一个 .env.deployer
并询问您的项目详细信息。
第一次运行 vendor/bin/dep -vvv deploy
并选择目标环境。
食谱
此软件包提供了一些食谱,以帮助您完成 Bedrock 部署。根据需要要求每个软件包或使用 examples/deploy.full-example.php 中的示例配置文件,并查看其所需的 配置文件。
可用的食谱
Bedrock DB
提供任务以从服务器导出数据库并将其导入到您的开发机器,反之亦然。
Trellis / VM / Vagrant 环境
要求
- 在您的本地机器上运行的虚拟机(Vagrant、Lima 等)运行
- 您的虚拟机和远程机器上运行的 WP CLI
将其加载到您的 deploy.php 文件中
require 'vendor/mmoollllee/bedrock-deployer-7/recipe/bedrock_db.php';
需要设置这些 Deployer 环境变量
- local_root:本地主机上网站根目录的绝对路径
- trellis_dir:包含 trellis 的目录的绝对路径
- vm_root:虚拟机内部网站(应与 local_root 镜像)的绝对路径
- vm_shell:虚拟机 SSH 模式(例如
vagrant ssh -- -t cd {{vm_root}}
)
示例
set( 'local_root', dirname( __FILE__ ) ); set( 'trellis_dir', dirname( __FILE__ ) . '/../trellis' ); set( 'vm_root', '/srv/www/domain.com/current' ); set( 'vm_shell', 'trellis vm shell --workdir ' . get('vm_root') . ' --' );
Valet+ 环境
要求
- 在 Valet+ 上运行的 Bedrock
将其加载到您的 deploy.php 文件中
require 'vendor/mmoollllee/bedrock-deployer-7/recipe/bedrock_valetplus_db.php';
需要设置这些 Deployer 环境变量
- local_root:本地主机上网站根目录的绝对路径
示例
set( 'local_root', dirname( __FILE__ ) );
任务 pull:db
在服务器上导出数据库,并将其导入到本地Vagrant数据库中,同时删除之前的数据。在导入新数据之前,在local_root目录中对本地数据库进行备份。
导入后,WordPress的URL将从服务器URL转换为本地URL,因此导入后WordPress安装将继续正常工作。
数据库凭据和URL将从远程和本地的.env文件中读取。因此,请确保这些文件是最新的。
任务 push:db
从本地Vagrant数据库导出数据库,并将其导入到远程服务器中,同时删除之前的数据。在导入新数据之前,在服务器当前发布目录中对远程数据库进行备份。
导入后,WordPress的URL将从本地URL转换为远程URL,因此导入后WordPress安装将继续正常工作。
数据库凭据和URL将从远程和本地的.env文件中读取。因此,请确保这些文件是最新的。
Bedrock .env
提供用于管理服务器上.env文件的任务。
将其加载到您的 deploy.php 文件中
require 'vendor/mmoollllee/bedrock-deployer-7/recipe/bedrock_env.php';
不需要设置特殊的Deployer环境变量。
任务 bedrock:env
尝试将.env文件从先前的发布版本复制到当前发布版本。如果没有先前的发布版本或没有可用的.env文件,则将创建.env文件,并提示用户输入凭据。
在创建新的.env文件时,此任务还将生成WordPress的salt。
Bedrock 杂项
提供Bedrock的杂项任务。
将其加载到您的 deploy.php 文件中
require 'vendor/mmoollllee/bedrock-deployer-7/recipe/bedrock_misc.php';
不需要设置特殊的Deployer环境变量。
任务 bedrock:vendors
在服务器上为Bedrock运行composer install
。
通用
提供通用部署任务。
要求
- WP CLI在Vagrant以及远程机器上运行
将其加载到您的 deploy.php 文件中
require 'vendor/mmoollllee/bedrock-deployer-7/recipe/common.php';
不需要设置特殊的Deployer环境变量。
任务 activate:plugins
激活远程服务器上的所有插件。
文件传输
提供从/到同步目录上传/下载文件的任务。
将其加载到您的 deploy.php 文件中
require 'vendor/mmoollllee/bedrock-deployer-7/recipe/filetransfer.php';
需要设置这些 Deployer 环境变量
- sync_dirs: 路径数组,这些路径将与$absoluteLocalPath => $absoluteRemotePath同时更新。如果路径有尾随斜杠,则只传输其内容,而不是目录本身。
示例
set( 'sync_dirs', [ dirname( __FILE__ ) . '/web/app/uploads/' => '{{deploy_path}}/shared/web/app/uploads/', ] );
任务 pull:files
将从每个$absoluteRemotePath
拉取所有文件到每个$absoluteLocalPath
。新文件将被添加,现有文件将被更新,但仅本地存在的文件将不会被删除。
为了确保没有文件丢失,每个$absoluteLocalPath
及其内容都将备份在zip文件中,该zip文件将添加到$absoluteLocalPath
。之前的拉取中存在的备份不会包含在新的备份中。
如果您希望在不进行备份的情况下拉取文件,请考虑使用任务pull:files-no-bak
。
任务 push:files
将所有文件从每个$absoluteLocalPath
推送到每个$absoluteRemotePath
。新文件将被添加,现有文件将被更新,但仅远程服务器上存在的文件将不会被删除。
为了确保没有文件丢失,每个$absoluteRemotePath
及其内容都将备份在zip文件中,该zip文件将添加到$absoluteRemotePath
。之前的推送中存在的备份不会包含在新的备份中。
如果您希望在不进行备份的情况下推送文件,请考虑使用任务push:files-no-bak
。
Sage
提供部署Roots Sage主题的任务。
要求
- Roots Sage 10(也支持Sage 9,有关如何与Sage 9一起使用,请参阅包含的 /examples/deploy.full-example.php)
将其加载到您的 deploy.php 文件中
require 'vendor/mmoollllee/bedrock-deployer-7/recipe/sage.php';
需要设置这些 Deployer 环境变量
- theme_path: 相对于发布路径的主题路径
- local_root:本地主机上网站根目录的绝对路径
示例
set( 'local_root', dirname( __FILE__ ) ); set( 'theme_path', 'web/app/themes/theme-name' );
任务 sage:vendors
在Sage主题目录内运行composer install
。
任务 sage:assets
在本地机器上编译Sage资源,然后将它们上传到远程服务器上的主题目录(覆盖之前的资源!)。
Trellis
您可能不想使用这些配方来部署Trellis。Trellis有其自己的强大部署流程。然而,您可能可以使用Trellis进行开发,仅使用这些配方来部署Bedrock。
您可能在存储库中有一个站点和一个trellis目录,或者只有一个没有站点文件夹的bedrock-style存储库。此任务处理这两种情况
任务 trellis:remove
将检查是否存在 /site 文件夹。如果存在,则删除远程 /trellis 目录,并将 /site 的内容移动到根目录。请在部署后但在更改符号链接之前执行此任务。
高级自定义字段 Pro
ACF PRO 是一个强大的 WordPress 插件,用于构建用户友好的自定义字段等。通过 composer 安装 Pro 版本需要 auth.json 进行认证。有关如何获取内容的官方文档,请参阅此处。
任务 bedrock:acf
将本地 auth.json 上传到发布目录。