mmoollllee/bedrock-deployer-7

Roots Bedrock 的 Deployer 脚本

v1.0.6 2023-10-13 12:18 UTC

This package is auto-updated.

Last update: 2024-09-13 14:29:33 UTC


README

Roots BedrockRoots 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 上传到发布目录。