mmoollllee / bedrock-deployer
Requires
- deployer/deployer: ^7.0
- vlucas/phpdotenv: ^5.4
README
Deployer 7 的配方用于 Roots Bedrock,也支持 Roots Sage 和 Roots Trellis 环境。基于 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 数据库
提供任务以从服务器导出数据库并将其导入到您的开发机器,反之亦然。
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数据库中,同时删除以前的数据。在导入新数据之前,在本地_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的盐值。
Bedrock 杂项
提供Bedrock的杂项任务。
使用以下内容将它们加载到您的 deploy.php 文件中
require 'vendor/mmoollllee/bedrock-deployer-7/recipe/bedrock_misc.php';
无需设置特殊的Deployer环境变量。
任务 bedrock:vendors
在您的服务器上为Bedrock运行composer install
。
通用
提供通用部署任务。
要求
- 在Vagrant以及远程机器上运行WP CLI
使用以下内容将它们加载到您的 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文件中,该文件将添加到 $absoluteLocalPath
。之前拉取的现有备份不包括在新的备份中。
如果您希望不创建备份就拉取文件,请考虑使用任务 pull:files-no-bak
。
任务 push:files
将所有文件从每个 $absoluteLocalPath
推送到每个 $absoluteRemotePath
。新文件将被添加,现有文件将被更新,但仅远程服务器上存在的文件不会被删除。
为确保不丢失文件,每个 $absoluteRemotePath
及其内容都将备份在一个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存储库。此任务处理这两种情况。
任务树形图:移除
将检查是否存在 /site 文件夹。如果存在,将删除远程的 /trellis 目录并将 /site 的内容移动到根目录。请在部署后但在修改符号链接之前使用此任务。
高级定制字段 Pro
ACF PRO 是一款强大的 WordPress 插件,用于构建用户友好的自定义字段等。通过 composer 安装 Pro 版本需要 auth.json 进行认证。有关获取内容的官方文档,请参阅:如何获取其内容的官方文档。
任务 bedrock:acf
将本地 auth.json 文件上传到发布目录。