digipolisgent / robo-digipolis-drupal8
Drupal 8 网站的基本部署流程。
Requires
Requires (Dev)
- drupal/coder: ^8.3
- phpunit/phpunit: ^9.5.20
- dev-develop
- 4.0.9
- 4.0.8
- 4.0.7
- 4.0.6
- 4.0.5
- 4.0.4
- 4.0.3
- 4.0.2
- 4.0.1
- 4.0.0
- 3.x-dev
- 3.0.4
- 3.0.3
- 3.0.2
- 3.0.1
- 3.0.0
- 2.x-dev
- 2.0.2
- 2.0.1
- 2.0.0
- 1.x-dev
- 1.1.8
- 1.1.7
- 1.1.6
- 1.1.5
- 1.1.4
- 1.1.3
- 1.1.2
- 1.1.1
- 1.1.0
- 1.0.2
- 1.0.1
- 1.0.0
- 1.0.0-alpha2
- 1.0.0-alpha1
- 0.2.x-dev
- 0.2.1
- 0.2.0
- 0.1.x-dev
- 0.1.43
- 0.1.42
- 0.1.41
- 0.1.40
- 0.1.39
- 0.1.38
- 0.1.37
- 0.1.36
- 0.1.35
- 0.1.34
- 0.1.33
- 0.1.32
- 0.1.31
- 0.1.30
- 0.1.29
- 0.1.28
- 0.1.27
- 0.1.26
- 0.1.25
- 0.1.24
- 0.1.23
- 0.1.22
- 0.1.21
- 0.1.20
- 0.1.19
- 0.1.18
- 0.1.17
- 0.1.16
- 0.1.15
- 0.1.14
- 0.1.13
- 0.1.12
- 0.1.11
- 0.1.10
- 0.1.9
- 0.1.8
- 0.1.7
- 0.1.6
- 0.1.5
- 0.1.4
- 0.1.3
- 0.1.2
- 0.1.1
- 0.1.0
- 0.1.0-rc8
- 0.1.0-rc7
- 0.1.0-rc6
- 0.1.0-rc5
- 0.1.0-rc4
- 0.1.0-rc3
- 0.1.0-rc2
- 0.1.0-rc1
- dev-master
- dev-3.x-dev
- dev-2.x-dev
- dev-1.x-dev
- dev-0.2.x-dev
- dev-0.1.x-dev
This package is auto-updated.
Last update: 2024-08-27 15:41:36 UTC
README
由 digipolis 使用,作为示例。
此包包含一个 RoboFileBase 类,您可以在自己的 RoboFile 中使用。所有命令都可以通过覆盖父方法来重写。
示例
<?php use DigipolisGent\Robo\Drupal8\RoboFileBase; class RoboFile extends RoboFileBase { use \Robo\Task\Base\loadTasks; /** * @inheritdoc */ public function digipolisDeployDrupal8( array $arguments, $opts = [ 'app' => 'default', 'site-name' => 'Drupal', 'profile' => 'standard', 'force-install' => false, 'config-import' => false, 'existing-config' => false, 'worker' => null, ] ) { $collection = parent::digipolisDeployDrupal8($arguments, $opts); $collection->taskExec('/usr/bin/custom-post-release-script.sh'); return $collection; } }
可用命令
根据上述示例,以下命令将可用
digipolis:backup-drupal8 Create a backup of files (sites/default/files) and database. digipolis:build-drupal8 Build a Drupal 8 site and package it. digipolis:clean-dir Partially clean directories. digipolis:clear-op-cache Command digipolis:database-backup. digipolis:database-backup Command digipolis:database-backup. digipolis:database-restore Command digipolis:database-restore. digipolis:deploy-drupal8 Build a Drupal 8 site and push it to the servers. digipolis:download-backup-drupal8 Download a backup of files (sites/default/files) and database. digipolis:init-drupal8-remote Install or update a drupal 8 remote site. digipolis:install-drupal8 Install the D8 site in the current folder. digipolis:package-project Package a directory into an archive. digipolis:push-package Command digipolis:push-package. digipolis:restore-backup-drupal8 Restore a backup of files (sites/default/files) and database. digipolis:sync-drupal8 Sync the database and files between two Drupal 8 sites. digipolis:update-drupal8 Executes D8 database updates of the D8 site in the current folder. digipolis:upload-backup-drupal8 Upload a backup of files (sites/default/files) and database to a server.
多站点/站点别名
支持 Drupal 8 多站点。有两种实现方式
- 使用 Drupal 的
sites.php
此脚本可以解析 sites.php 中的站点别名,其中 $sites
数组的键是 URL,值是文件夹(位于网站根目录下的 sites/
文件夹中)。
- 使用
properties.yml
您可以在 properties.yml
中定义站点别名,在 remote
键下以相同的方式:键是 URL,值是文件夹。例如
remote:
aliases:
example.com: default
alias1.example.com: alias1
alias2.example.com: alias2
您可以在 helpers 包的 Readme 中了解更多关于 properties.yml
文件的信息。
多站点设置文件
如果您想链接每个多站点安装的设置文件(建议这样做,因为替代方案是将它们放在您的存储库中),您必须将这些链接添加到 properties.yml
中。同样适用于文件目录。
使用上述示例,您必须将以下内容添加到您的 properties.yml 中
remote:
symlinks:
# Settings file symlinks.
- '${remote.configdir}/alias1/settings.php:${remote.webdir}/sites/alias1/settings.php'
- '${remote.configdir}/alias2/settings.php:${remote.webdir}/sites/alias2/settings.php'
# Files directories symlinks.
- '${remote.filesdir}/alias1/public:${remote.webdir}/sites/alias1/files'
- '${remote.filesdir}/alias2/public:${remote.webdir}/sites/alias2/files'
多站点的回滚
由于备份是在多站点部署开始时制作的,因此在部署过程中发生错误时,即使错误发生在第一个别名的部署过程中,也会回滚多站点的每个站点。因此,在上面的示例中,部署开始时,为 default
、alias1
和 alias2
创建数据库备份。如果在 default
的部署过程中过程失败,则回滚过程将恢复 default
、alias1
和 alias2
的数据库备份。同样适用于在 alias2
的部署过程中失败。部署按别名定义的顺序进行。
将新站点添加到现有设置
当将新站点添加到现有安装时,请确保所有设置文件和文件夹都已就绪(就像您在第一次正常安装时做的那样)。新添加的站点将经过安装过程,而现有的站点将保持不变。这意味着您不能同时更新一个子站点并添加另一个。您必须分别进行两次部署。
从现有数据库安装
这适用于“正常”和“多站点”安装。如果出于某种原因,您想从一个现有数据库(即非空数据库)创建新站点(不推荐),您可以这样做。只需将您需要的数据填充到数据库中,并触发部署。部署将检测到尚未有站点(因为您的服务器上没有代码),并触发安装脚本。一旦您的代码上传到您的服务器,安装脚本将能够连接到数据库。然后它将检测到其中已有数据,并跳过安装过程。这样,您的代码就上传到您的服务器,它将使用现有的数据库。如果您的数据库落后于您的代码(意味着您需要触发数据库更新),您必须执行第二次部署。
这也是原因之一,当向您的多站安装添加新站点时,现有的站点不会被更改。我们原本需要覆盖整个基础包(robo-digipolis-helpers)来检测多站中的哪个站点是新的,哪个是可能需要更新的现有站点。因此,当部署脚本检测到多站安装中至少有一个站点需要从头开始安装时,会触发多站安装中所有站点的安装脚本。如果安装脚本为现有站点之一运行,它将在其数据库中检测现有数据,并保持不变。对于新添加的站点,将没有数据(除非您手动将其输入数据库)并触发该特定站点的安装。
常见问题
- 我们假设
$config_directories['sync']
的值相对于网站根目录。我们自行在其前面添加网站根目录的路径。 - 如果有多个别名指向同一个文件夹,我们只使用数组中的第一个别名。请注意,例如,您的站点地图。