florianmoser / bedrock-deployer
Roots Bedrock 的 Deployer 脚本
Requires
- deployer/deployer: >=7.0
- vlucas/phpdotenv: ^5.3
README
Deployer 的脚本,用于 Roots Bedrock,也支持 Roots Sage 和 Roots Trellis 的设置。
Trellis 提供了强大的 Ansible 部署。但如果你只想运行自定义过程时部署 Bedrock,Deployer 是一个快速简单的替代方案。
也许你甚至正在尝试将 Bedrock 部署到共享主机。根据你的主机环境,这可能可行。查看 florianmoser/plesk-deployer。
注意:在尝试部署脚本之前,请确保你有本地以及远程文件的备份。当你提供错误路径时,文件可能会轻易被覆盖!你使用这里提供的脚本是唯一负责的。
谁需要这个
希望使用 Deployer 部署 Bedrock 应用程序的 PHP 开发者。
安装
使用 Composer
$ composer require florianmoser/bedrock-deployer
脚本
此包提供几个脚本,帮助您部署 Bedrock。根据需要需要每个包。
这些是可用的脚本
Bedrock 数据库
提供任务以从服务器导出数据库并导入到您的开发机器,反之亦然。
有 Trellis / Vagrant 以及 Valet+ 环境的脚本。
Trellis / Vagrant 环境
要求
- 在本地机器上运行的 Vagrant(或当然 Trellis)
- 在 Vagrant 以及远程机器上运行的 WP CLI
通过以下方式将内容加载到您的 deploy.php 文件中
require 'vendor/florianmoser/bedrock-deployer/recipe/bedrock_db.php';
需要设置以下 Deployer 环境变量
- local_root: 本地主机上网站根目录的绝对路径
- vagrant_dir: 包含 .vagrantfile 的目录的绝对路径
- vagrant_root: Vagrant 机器内部网站的绝对路径(应与 local_root 相匹配)
示例
set( 'local_root', dirname( __FILE__ ) ); set( 'vagrant_dir', dirname( __FILE__ ) . '/../trellis' ); set( 'vagrant_root', '/srv/www/domain.com/current' );
Valet+ 环境
要求
- 在 Valet+ 上运行的 Bedrock
通过以下方式将内容加载到您的 deploy.php 文件中
require 'vendor/florianmoser/bedrock-deployer/recipe/bedrock_valetplus_db.php';
需要设置以下 Deployer 环境变量
- local_root: 本地主机上网站根目录的绝对路径
示例
set( 'local_root', dirname( __FILE__ ) );
任务 pull:db
从服务器导出数据库并将其导入到本地 Vagrant 数据库,同时删除旧数据。在导入新数据之前,在 local_root 目录中创建本地数据库的备份。
导入后,将 WordPress 网址从服务器网址转换为本地网址,因此您的 WordPress 安装在导入后将继续工作。
数据库凭据和网址从远程和本地 .env 文件中读取。因此,请确保这些文件是最新的。
任务 push:db
从本地 Vagrant 数据库导出数据库并将其导入到远程服务器,同时删除旧数据。在导入新数据之前,在当前发布目录的服务器上创建远程数据库的备份。
导入后,将 WordPress 网址从本地网址转换为远程网址,因此您的 WordPress 安装在导入后将继续工作。
数据库凭据和网址从远程和本地 .env 文件中读取。因此,请确保这些文件是最新的。
Bedrock .env
提供管理服务器上的 .env 文件的任务。
通过以下方式将内容加载到您的 deploy.php 文件中
require 'vendor/florianmoser/bedrock-deployer/recipe/bedrock_env.php';
不需要设置特殊的 Deployer 环境变量。
任务 bedrock:env
尝试从上一个版本复制到当前版本的 .env 文件。如果没有上一个版本或没有可用的 .env 文件,将创建 .env 文件并提示用户输入凭据。
在创建新的 .env 文件时,此任务还会生成 WordPress 密钥。
Bedrock 其他
提供各种 Bedrock 任务。
通过以下方式将内容加载到您的 deploy.php 文件中
require 'vendor/florianmoser/bedrock-deployer/recipe/bedrock_misc.php';
不需要设置特殊的 Deployer 环境变量。
任务 bedrock:vendors
在您的服务器上为 Bedrock 运行 composer install
。
常见
提供常见的部署任务。
要求
- 在 Vagrant 以及远程机器上运行的 WP CLI
通过以下方式将内容加载到您的 deploy.php 文件中
require 'vendor/florianmoser/bedrock-deployer/recipe/common.php';
不需要设置特殊的 Deployer 环境变量。
任务 activate:plugins
在远程服务器上激活所有插件。
文件传输
提供从/到同步目录上传/下载文件的任务。
通过以下方式将内容加载到您的 deploy.php 文件中
require 'vendor/florianmoser/bedrock-deployer/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/florianmoser/bedrock-deployer/recipe/sage.php';
需要设置以下 Deployer 环境变量
- theme_path: 主题路径,相对于 release_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。
这种方法的不利之处在于,您将在存储库中有一个 /site 以及一个 /trellis 目录。因此,这两个目录都将被克隆到服务器。
此任务处理这种情况
任务 trellis:remove
将删除远程 /trellis 目录,并将 /site 的内容移动到 /。在执行符号链接更改之前,完成部署后使用此任务。