imarc/craft-boost

一个提供基本部署的Craft插件。

安装次数: 1,667

依赖项: 0

建议者: 0

安全: 0

星星: 9

关注者: 24

分支: 0

开放问题: 0

类型:craft-plugin

2.5.2 2018-09-17 17:06 UTC

This package is auto-updated.

Last update: 2024-09-13 10:51:57 UTC


README

Boost是一个Craft插件,它使我们基于典型流程的简化部署系统得以实现。虽然此软件是功能性软件,但最佳情况下应将其视为测试版。它对Craft的配置和服务器环境有严格的要求。

Boost旨在与三个环境——开发、测试和生产环境一起工作。它自动化在环境之间复制资产和数据库,以及从Git存储库中拉取新代码。

  • 数据库和资产始终从当前标准环境(开发或生产)复制。
  • 在部署到开发或测试环境时,使用Git的最新提交来处理版本控制文件。
  • 在生产环境部署时,使用测试环境当前的提交来处理版本控制文件。

有关更多信息,请参阅iMarc手册

Boost可以

  • 将文件从一个Craft环境复制到同一服务器上的另一个Craft环境,
  • 将Craft的数据库从一个环境复制到另一个环境,并且
  • 从Git中拉取新文件。

Boost 不支持

  • 迁移 - 包括数据库迁移。所有数据库/Craft更改都需要仅在标准环境中进行(最初为开发环境,一旦将内容放入生产环境,则变为生产环境。)

Craft配置

首先,您必须使用 环境配置设置。虽然应该可以使用Craft的内置、基于域的环境,但我们只测试了与如下自定义代码一起使用Boost

/* craft/config/general.php */

$env = preg_replace('#^.*/#', '', dirname(CRAFT_BASE_PATH));

$config = [
        'omitScriptNameInUrls' => true,
        'maxUploadFileSize' => 104857600
];

switch ($env) {
        case 'dev':
                $config = array_merge($config, [
                        'siteUrl' => 'http://dev.example.com',
                        'devMode' => true,
                        'useCompressedJs' => false,
                ]);
                break;
        case 'stage':
                $config = array_merge($config, [
                        'siteUrl' => 'http://stage.example.com',
                        'useCompressedJs' => false,
                ]);
                break;
        case 'prod':
                $config = array_merge($config, [
                        'siteUrl' => 'http://www.example.com',
                ]);
                break;
        default:
                die("Unfortunately, the server is misconfigured. Please review the configuration in config/general.php.");
}

return $config;

这里的好处是环境仅由 CRAFT_BASE_PATH 决定,这避免了域名别名的问题。 craft/config/general.php 和 craft/config/db.php 都需要这样设置。

保持资产相对路径

其次,如果您想避免每次部署后都需要重新配置Craft,您应该在定义资产源时使用 相对路径。例如,您可能会使用 '../public/writable/documents' 而不是 '/var/www/example.com/prod/public/writable/documents'。

安装和配置Boost

安装Boost很简单

  1. 将插件放入craft/plugins/boost/。
  2. 通过Craft的管理面板安装插件。
  3. 点击“Boost”,现在为插件提供超链接名称,以进入Boost的设置。
  4. 填写设置。

Composer、NPM和Gulp

如果在新环境中找到了composer.jsonpackage.jsongulpfile.js,则分别调用composer install --ignore-platform-reqsnpm install --productiongulp。为了使这些文件存在于新环境中,您需要将它们添加到下面的VCS目录设置中。如果您不添加它们,则不会自动调用这些命令。

Boost设置

  • 环境根目录 - 包含所有环境的单个目录。例如,/var/www/example.com/
  • 标准环境 - 用于内容的标准源环境。在网站推出之前通常是开发环境,一旦网站推出,则是生产环境。
  • VCS URL - 这是从版本控制中签出的URL。例如,git@github.com:imarc/example-com.git
  • VCS缓存目录 - Boost在目录中保持对存储库的本地克隆。通常是类似 /var/www/example.com/cache 的东西。
  • VCS 目录 – 这是一个以空格分隔的相对路径列表,表示从 VCS 复制到环境中作为部署的一部分的目录。这可能像这样
craft/plugins craft/templates public/css public/fonts public/img public/.htaccess composer.json

数据库设置

对于每个数据库,您可以指定 名称用户密码主机。除了生产数据库的名称外,所有这些都是可选的。如果省略了开发或测试数据库的名称,则它们将分别使用前缀 'dev_' 或 'stage_' 与生产名称结合使用。

高级设置

  • 重置所有权 – 如果指定,则将重置从版本控制同步的文件的所有权。 (例如:www-data:web).
  • 重置文件权限 – 如果指定,则传递给 chmod 以重置从版本控制同步的文件和目录的权限。 (例如:g+rw).
  • 保留数据库 – Boost 的默认行为是删除并重新创建每个数据库,以便它只包含从导出中提取的表/记录。然而,如果您没有执行此操作的权限,您可以启用此设置,Boost 将确保导出包括 DROP TABLE 语句,以便可以在不需要重新创建的情况下替换目标数据库中的表。这意味着目标环境中作为目标环境一部分的表将持久存在。
  • 重置数据库权限 – 如果指定,则在创建新数据库时授予此用户完整数据库权限。 (例如:web@localhost).
  • 删除遗留文件 – 如果指定,在 VCS 目录同步后,将删除存在于 VCS 目录中但不在存储库中的遗留文件。
    • 防止删除 – 以空格分隔的文件和文件夹列表,这些文件和文件夹存在于服务器上的 VCS 目录中,以防止被删除。 (例如:/writable*)

钩子

  • 部署前钩子 – 这些在部署到生产环境之前在新的环境中运行。这是一个运行任何额外构建步骤的好地方。
  • 部署后钩子 – 这些在部署到生产环境之后在新的环境中运行。这是一个运行任何缓存清理操作的好地方。

用法

要调用此命令,我们使用 Craft 的默认 CLI

php /var/www/<sitename>/prod/craft/app/etc/console/yiic.php boost

要将部署到特定环境,使用

php /var/www/<sitename>/prod/craft/app/etc/console/yiic.php boost deploy --env=stage

要将分支部署到特定环境,使用

php /var/www/<sitename>/prod/craft/app/etc/console/yiic.php boost deploy --env=stage --branch=branch-name

要显示将要部署到环境的提交日志

php /var/www/<sitename>/prod/craft/app/etc/console/yiic.php boost log --env=stage

显示每个环境的当前版本

php /var/www/<sitename>/prod/craft/app/etc/console/yiic.php boost versions