imarc / craft-boost
一个提供基本部署的Craft插件。
Requires
- composer/installers: ~1.0
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很简单
- 将插件放入craft/plugins/boost/。
- 通过Craft的管理面板安装插件。
- 点击“Boost”,现在为插件提供超链接名称,以进入Boost的设置。
- 填写设置。
Composer、NPM和Gulp
如果在新环境中找到了composer.json
、package.json
或gulpfile.js
,则分别调用composer install --ignore-platform-reqs
、npm install --production
和gulp
。为了使这些文件存在于新环境中,您需要将它们添加到下面的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*
)
- 防止删除 – 以空格分隔的文件和文件夹列表,这些文件和文件夹存在于服务器上的 VCS 目录中,以防止被删除。 (例如:
钩子
- 部署前钩子 – 这些在部署到生产环境之前在新的环境中运行。这是一个运行任何额外构建步骤的好地方。
- 部署后钩子 – 这些在部署到生产环境之后在新的环境中运行。这是一个运行任何缓存清理操作的好地方。
用法
要调用此命令,我们使用 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