默认情况下,Media Manager与安装目录的storage / app / media子目录一起使用。为了使用Amazon S3或Rackspace CDN,您应该更新系统配置。
您需要先安装驱动程序插件,然后才能使用Amazon S3或Rackspace CDN功能。
请注意,更改媒体管理器配置后,应重置其缓存。您可以通过按“媒体管理器”工具栏中的“ 刷新”按钮来完成此操作。
配置Amazon S3访问
要将Amazon S3与OctoberCMS一起使用,您应该创建S3存储桶,存储桶中的文件夹以及API用户。
注册Amazon AWS帐户或使用您现有的帐户登录AWS控制台。打开S3管理面板。创建一个新存储桶并为其指定任何名称(存储桶的名称将成为您的公共文件URL的一部分)。
在存储桶中创建媒体文件夹。文件夹名称无关紧要。此文件夹将是您的媒体库的根。
默认情况下,无法直接访问S3存储桶中的文件。要公开存储桶,请返回到存储桶列表,然后单击存储桶。单击右侧栏中的“ 属性”按钮。展开权限选项卡。单击编辑存储桶策略链接。将以下代码粘贴到策略弹出窗口。用您的实际存储桶名称替换存储桶名称:
{
"Version": "2008-10-17",
"Id": "Policy1397632521960",
"Statement": [
{
"Sid": "Stmt1397633323327",
"Effect": "Allow",
"Principal": {
"AWS": "*"
},
"Action": "s3:GetObject",
"Resource": "arn:aws:s3:::BUCKETNAME/*"
}
]
}
单击保存按钮以应用策略。该策略为存储桶中的所有文件夹和目录提供公共只读访问权限。如果要将存储桶用于其他需求,则可以设置对存储桶中特定文件夹的公共访问,只需在Resource值中指定目录名称即可:
"arn:aws:s3:::BUCKETNAME/media/*"
您还应该创建一个API用户,OctoberCMS将使用该用户来管理存储桶文件。在AWS控制台中,转到IAM部分。转到“用户”选项卡并创建一个新用户。用户名无关紧要。创建新用户时,请确保选中“为每个用户生成访问密钥”复选框。AWS创建用户后,它允许您查看安全凭证-用户访问密钥ID和秘密访问密钥。复制密钥并将其放入临时文本文件。
返回到用户列表,然后单击刚刚创建的用户。在“ 权限”部分中,单击“ 附加策略”按钮。在列表中选择AmazonS3FullAccess策略,然后单击附加策略按钮。
现在,您拥有所有信息来更新OctoberCMS配置。打开config / filesystem.php脚本并找到disks部分。它已经包含s3配置,您需要替换API凭据和存储桶信息参数:
参数 | 值 |
---|---|
键 | 您之前创建的用户的访问密钥ID值。 |
秘密 | 您创建的用户的秘密访问密钥值。 |
桶 | 您的存储桶名称。 |
区域 | 存储桶区域代码,请参见下文。 |
您可以在存储桶属性中的S3管理控制台中找到存储桶区域。“属性”选项卡显示区域名称,例如俄勒冈州。S3驱动程序配置需要存储区代码。使用此表查找您的存储桶的代码(您也可以查看AWS文档):
区域 | 码 |
---|---|
美国东部(俄亥俄州) | us-east-2 |
美国东部(弗吉尼亚北部) | us-east-1 |
美国西部(加利福尼亚北部) | us-west-1 |
美国西部(俄勒冈州) | 美国西部2 |
亚太地区(香港) | ap-east-1 |
亚太地区(孟买) | ap-south-1 |
亚太地区(大阪本地) | ap-northeast-3 |
亚太地区(首尔) | ap-northeast-2 |
亚太地区(新加坡) | ap-southeast-1 |
亚太地区(悉尼) | ap-southeast-2 |
亚太地区(东京) | ap-northeast-1 |
加拿大(中部) | ca-central-1 |
中国(北京) | cn-north-1 |
中国(宁夏) | cn-northwest-1 |
欧盟(法兰克福) | eucentral-1 |
欧盟(爱尔兰) | eu-west-1 |
欧盟(伦敦) | eu-west-2 |
欧盟(巴黎) | eu-west-3 |
欧盟(斯德哥尔摩) | eu-north-1 |
南美洲(圣保罗) | sa-east-1 |
中东(巴林) | 我南1 |
更新后的示例配置:
'disks' => [
...
's3' => [
'driver' => 's3',
'key' => 'XXXXXXXXXXXXXXXXXXXX',
'secret' => 'xxxXxXX+XxxxxXXxXxxxxxxXxxXXXXXXXxxxX9Xx',
'region' => 'us-west-2',
'bucket' => 'my-bucket'
],
...
]
保存config / filesystem.php脚本并打开config / cms.php脚本。查找部分存储。在媒体参数更新disk,文件夹和路径参数中:
参数 | 值 |
---|---|
磁碟 | 使用s3值。 |
夹 | 您在S3存储桶中创建的文件夹的名称。 |
路径 | 存储桶中文件夹的公共路径,请参见下文。 |
要获取文件夹的路径,请打开AWS控制台并转到S3部分。导航到存储桶,然后单击之前创建的文件夹。将任何文件上传到文件夹,然后单击文件。单击右侧栏中的“ 属性”按钮。文件URL在Link参数中。复制URL并从中删除文件名和斜杠。
存储配置示例:
'storage' => [
...
'media' => [
'disk' => 's3',
'folder' => 'media',
'path' => 'https://s3-us-west-2.amazonaws.com/your-bucket-name/media'
]
]
恭喜你!现在,您准备将Amazon S3与OctoberCMS一起使用。请注意,您还可以将Amazon CloudFront CDN配置为与存储桶配合使用。本文档未涵盖该主题,请参考CloudFront文档。配置CloudFront之后,您将需要更新存储配置中的path参数。
配置Rackspace CDN访问
要将Rackspace CDN与OctoberCMS一起使用,您应该创建Rackspace CDN容器,容器中的文件夹和API用户。
登录到Rackspace管理控制台,然后导航到“存储/文件”页面。创建一个新的容器。容器名称无关紧要,它将成为您的公共文件URL的一部分。为新容器选择“ 公共(启用CDN)”类型。
在容器中创建媒体文件夹。文件夹名称无关紧要。此文件夹将是您的媒体库的根。
您应该创建一个API用户,OctoberCMS将使用该用户来管理CDN容器中的文件。在Rackspace控制台中打开“帐户/用户管理”页面。单击创建用户按钮。填写用户名(例如october.cdn.api),密码,安全性问题和答案。在“ 产品访问权限”部分中,选择“ 自定义”,然后在CDN行中选择“ 管理员”。在“ 帐户”部分中使用“ 无访问权限”角色,在“ 联系信息”部分中使用“ 技术联系人”类型。保存用户帐户。保存帐户后,您将看到带有API密钥的“登录详细信息”部分 包含您需要在OctoberCMS配置文件中使用的值的行。
现在,您拥有所有信息来更新OctoberCMS配置。打开config / filesystem.php脚本并找到disks部分。它已经包含Rackspace配置,您需要替换API凭证和容器信息参数:
参数 | 值 |
---|---|
用户名 | Rackspace用户名(例如october.cdn.api)。 |
键 | 您可以从Rackspace用户个人资料页面复制的用户的API密钥。 |
容器 | 容器名称。 |
区域 | 存储桶区域代码,请参见下文。 |
终点 | 保持原样。 |
区域 | 您可以在Rackspace控制面板的CDN容器列表中找到该区域。该代码是3个字母的值,例如,它是Chicago 的ORD。 |
更新后的示例配置:
'disks' => [
...
'rackspace' => [
'driver' => 'rackspace',
'username' => 'october.api.cdn',
'key' => 'xx00000000xxxxxx0x0x0x000xx0x0x0',
'container' => 'my-bucket',
'endpoint' => 'https://identity.api.rackspacecloud.com/v2.0/',
'region' => 'ORD'
],
...
]
保存config / filesystem.php脚本并打开config / cms.php脚本。查找部分存储。在媒体参数更新disk,文件夹和路径参数中:
参数 | 值 |
---|---|
磁碟 | 使用机架空间值。 |
夹 | 您在CDN容器中创建的文件夹的名称。 |
路径 | 容器中文件夹的公共路径,请参见下文。 |
要获取文件夹的路径,请转到Rackspace控制台中的CDN容器列表。单击容器,然后打开媒体文件夹。上传任何文件。上传文件后,单击它。该文件将在新的浏览器标签中打开。复制文件URL,并从中删除文件名和斜杠。
存储配置示例:
'storage' => [
...
'media' => [
'disk' => 'rackspace',
'folder' => 'media',
'path' => 'https://xxxxxxxxx-xxxxxxxxx.r00.cf0.rackcdn.com/media'
]
]
恭喜你!现在,您准备将Rackspace CDN与OctoberCMS一起使用。
影音播放器
默认情况下,系统使用HTML5音频和视频标签来呈现音频和视频文件:
要么
此行为可以被覆盖。如果存在oc-audio-player.html和oc-video-player.html CMS部分,则它们将用于显示音频和视频内容。在局部文件中,使用变量src输出到源文件的链接。例:
如果您不想使用HTML5播放器,则可以在局部中提供任何其他标记。有一个第三方脚本可以在较旧的浏览器中支持HTML5视频和音频标签。
由于分词是使用Twig编写的,因此您可以基于命名约定自动添加替代视频源。例如,如果有一个惯例,每个全分辨率视频总是有一个较小分辨率的视频,并且较小分辨率的文件具有扩展名“ iphone.mp4”,则生成的标记可能如下所示:
其他配置选项
有几个选项可让您微调媒体管理器。所有这些都可以在config / cms.php脚本的storage / media部分中定义,例如:
'storage' => [
...
'media' => [
...
'ignore' => ['.svn', '.git', '.DS_Store']
]
],
参数 | 值 |
---|---|
忽视 | 要忽略的文件和目录名称的列表。默认为['.svn','。git','。DS_Store']。 |
ttl | 指定缓存的生存时间(以分钟为单位)。默认值为10。添加,更新或删除库项目时,缓存会自动失效。 |
imageExtensions | 与Image文档类型相对应的文件扩展名。默认值为['gif','png','jpg','jpeg','bmp']。 |
videoExtensions | 与视频文档类型相对应的文件扩展名。默认值为['mp4','avi','mov','mpg']。 |
audioExtensions | 与音频文档类型相对应的文件扩展名。默认值为['mp3','wav','wma','m4a']。 |
大事记
媒体管理器提供了一些事件,您可以听这些事件以提高可扩展性。
事件 | 描述 | 参量 |
---|---|---|
folder.delete | 删除文件夹时调用 | (string) $path |
file.delete | 删除文件时调用 | (string) $path |
folder.rename | 重命名文件夹时调用 | (string) $originalPath , (string) $newPath |
file.rename | 重命名文件时调用 | (string) $originalPath , (string) $newPath |
folder.create | 创建文件夹时调用 | (string) $newFolderPath |
folder.move | 文件夹移动时调用 | (string) $path , (string) $dest |
file.move | 文件移动时调用 | (string) $path , (string) $dest |
上传文件 | 上传文件时调用 | (string) $filePath , (\Symfony\Component\HttpFoundation\File\UploadedFile) $uploadedFile |
要陷入这些事件,请Backend\Widgets\MediaManager
直接扩展该类:
Backend\Widgets\MediaManager::extend(function($widget) {
$widget->bindEvent('file.rename', function ($originalPath, $newPath) {
// Update custom references to path here
});
});
或通过Event
Facade 全局监听(每个事件都带有前缀,media.
并将实例化的Backend\Widgets\MediaManager
对象作为第一个参数传递给它):
Event::listen('media.file.rename', function($widget, $originalPath, $newPath) {
// Update custom references to path here
});
故障排除
使用远程服务的最常见问题是SSL连接问题。如果收到SSL错误,请确保您的服务器具有公共证书颁发机构(CA)的新SSL证书。