digitalerase / deployer-extended-media
部署任务,用于管理应用实例间的媒体同步。
Requires
- deployer/deployer: ^7.0.0
- digitalerase/deployer-instance: ^6.0.0 || dev-master
- digitalerase/deployer-loader: ^4.0.0 || dev-master
README
它做了什么?
该包为部署器(deployer.org)提供了额外的任务,用于在实例之间同步媒体。
这对我有何用处?
最有用的是dep media:pull [source]
任务,允许您使用rsync从源实例拉取媒体到当前实例。
还有两个额外的有用任务,允许在远程实例之间复制或创建符号链接。例如,您可以使用dep media:link [source] --options=target:[target]
为每个单独的文件创建符号链接(等同于cp -Rs)。
安装
使用composer安装包
composer require digitalerase/deployer-extended-media
如果您将部署器用作composer包,只需在您的deploy.php中添加以下行
new \SourceBroker\DeployerLoader\Load([['path' => 'vendor/digitalerase/deployer-extended-media/deployer']]);
如果您将部署器用作phar,请在您的deploy.php中添加以下行
require_once(__DIR__ . '/vendor/digitalerase/deployer-loader/autoload.php'); new \SourceBroker\DeployerLoader\Load([['path' => 'vendor/digitalerase/deployer-extended-media/deployer']]);
重要提示!不要在deploy.php中放置require('/vendor/autoload.php')
,因为您可能会遇到依赖问题。请使用require_once(__DIR__ . '/vendor/digitalerase/deployer-loader/autoload.php');
代替,如建议。在deploy.php中设置您想要同步的文件夹
set('media', [ 'filter' => [ '+ /fileadmin/', '- /fileadmin/_processed_/*', '+ /fileadmin/**', '+ /uploads/', '+ /uploads/**', '- *' ] ]);
运行任务
dep media:pull [source]
选项
-
exclude 默认值: null
包含要排除的模式数组。
-
exclude-case-insensitive 默认值: null
包含要排除的模式数组。由于rsync不支持不区分大小写的排除,因此数组中的每个值都设置为状态大写/小写。这意味着如果您有['*.mp4', '*.zip']
,则最终的排除将是--exclude '*.[mM][pP]4' --exclude '*.[zZ][iI][pP]'
。
-
exclude-file 默认值: null
包含排除模式的文件的绝对路径。
-
include 默认值: null
包含要包含的模式数组。
-
include-file 默认值: null
包含包含模式的文件的绝对路径。
-
filter 默认值: null
包含rsync过滤规则的数组。
-
filter-file 默认值: null
包含合并文件名称的字符串。
-
filter-perdir 默认值: null
包含要扫描并合并rsync列表中每个目录的文件的合并文件名称的字符串。
-
flags 默认值: rz
添加到rsync命令的标志。
-
options 默认值: ['copy-links', 'keep-dirlinks', 'safe-links']
要添加到rsync命令的选项数组。
-
timeout 默认值: 0
rsync任务的超时时间。零表示没有超时。
任务的默认配置
set('media_default', [ 'exclude' => [], 'exclude-case-insensitive' => [ '*.mp4', '*.zip', '*.pdf', '*.exe', '*.doc', '*.docx', '*.pptx', '*.ppt', '*.xls', '*.xlsx', '*.xlsm', '*.tiff', '*.tif', '*.potx', '*.mpg', '*.mp3', '*.avi', '*.wmv', '*.flv', '*.eps', '*.ai', '*.mov', ], 'exclude-file' => false, 'include' => [], 'include-file' => false, 'filter' => [], 'filter-file' => false, 'filter-perdir' => false, 'flags' => 'rz', 'options' => ['copy-links', 'keep-dirlinks', 'safe-links'], 'timeout' => 0, ]);
在您的项目中,您应该设置"media",它将与"media_default"配置合并。
TYPO3 CMS(typo3.org)的示例配置
set('media', [ 'filter' => [ '+ /fileadmin/', '- /fileadmin/_processed_/*', '+ /fileadmin/**', '+ /uploads/', '+ /uploads/**', '- *' ] ]);
任务
media:copy
在(远程)实例之间复制媒体。
dep media:copy [source] --options=target:[target]
命令在目标远程实例上执行。如果实例位于同一远程服务器上,则调用本地文件的rsync。如果实例位于不同的远程服务器上,则在目标实例上执行media:pull [source]
。
复制到在 instance_live_name
中定义的实例(默认为 production
)是特殊情况。如果您复制到最高实例,则默认情况下您将被询问两次是否真的想要这样做。您可以通过将 media_allow_copy_live_force
设置为 true
来禁用询问。您还可以通过将 media_allow_copy_live
设置为 false
来禁止复制到实时实例。
示例:dep media:copy production --options=target:staging
media:link
仅适用于放置在同一台机器上的远程实例。命令在目标实例上创建指向源机器上文件的符号链接。
media:link [source] --options=target:[target]
对于源实例中不存在于目标实例的每个文件:1. 递归创建目录树。2. 从源实例创建符号链接到文件。
因此,目标实例上的每个文件可能被修改/删除,而不会影响源实例。
链接到在 instance_live_name
中定义的实例(默认 production
)是特殊情况。如果您链接到最高实例,则默认情况下您将被询问两次是否真的想要这样做。您可以通过将 media_allow_link_live_force
设置为 true
来禁用询问。您还可以通过将 media_allow_link_live
设置为 false
来禁止链接到实时实例。
示例:dep media:link production --options=target:staging
media:pull
使用 rsync 和 "media_default" 以及 "media" 中的选项,从源实例将媒体拉取到当前实例。
dep media:pull [source]
示例:dep media:pull production
将媒体从源实例拉取到在 instance_live_name
中定义的实例(默认 production
)是特殊情况。如果您将媒体拉取到最高实例,则默认情况下您将被询问两次是否真的想要这样做。您可以通过将 media_allow_pull_live_force
设置为 true
来禁用询问。您还可以通过将 media_allow_pull_live
设置为 false
来禁止拉取到实时实例。
media:push
使用 rsync 和 "media_default" 以及 "media" 中的选项,将当前实例的媒体拉取到目标实例。
dep media:push [target]
将媒体推送到在 instance_live_name
中定义的实例(默认 production
)是特殊情况。如果您将媒体推送到最高实例,则默认情况下您将被询问两次是否真的想要这样做。您可以通过将 media_allow_push_live_force
设置为 true
来禁用询问。您还可以通过将 media_allow_push_live
设置为 false
来禁止推送至实时实例。
示例:dep media:push staging
变更日志
请参阅 https://github.com/digitalerase/deployer-extended-media/blob/master/CHANGELOG.rst