默認(rèn)情況下,Media Manager與安裝目錄的storage / app / media子目錄一起使用赏壹。為了使用Amazon S3或Rackspace CDN,您應(yīng)該更新系統(tǒng)配置聋溜。
您需要先安裝驅(qū)動(dòng)程序插件禁荒,然后才能使用Amazon S3或Rackspace CDN功能叉抡。
請注意尔崔,更改媒體管理器配置后,應(yīng)重置其緩存褥民。您可以通過按“媒體管理器”工具欄中的“ 刷新”按鈕來完成此操作。
配置Amazon S3訪問
要將Amazon S3與OctoberCMS一起使用洗搂,您應(yīng)該創(chuàng)建S3存儲桶消返,存儲桶中的文件夾以及API用戶。
注冊Amazon AWS帳戶或使用您現(xiàn)有的帳戶登錄AWS控制臺耘拇。打開S3管理面板撵颊。創(chuàng)建一個(gè)新存儲桶并為其指定任何名稱(存儲桶的名稱將成為您的公共文件URL的一部分)。
在存儲桶中創(chuàng)建媒體文件夾惫叛。文件夾名稱無關(guān)緊要倡勇。此文件夾將是您的媒體庫的根。
默認(rèn)情況下嘉涌,無法直接訪問S3存儲桶中的文件妻熊。要公開存儲桶夸浅,請返回到存儲桶列表,然后單擊存儲桶扔役。單擊右側(cè)欄中的“ 屬性”按鈕帆喇。展開權(quán)限選項(xiàng)卡。單擊編輯存儲桶策略鏈接亿胸。將以下代碼粘貼到策略彈出窗口坯钦。用您的實(shí)際存儲桶名稱替換存儲桶名稱:
{
"Version": "2008-10-17",
"Id": "Policy1397632521960",
"Statement": [
{
"Sid": "Stmt1397633323327",
"Effect": "Allow",
"Principal": {
"AWS": "*"
},
"Action": "s3:GetObject",
"Resource": "arn:aws:s3:::BUCKETNAME/*"
}
]
}
單擊保存按鈕以應(yīng)用策略。該策略為存儲桶中的所有文件夾和目錄提供公共只讀訪問權(quán)限侈玄。如果要將存儲桶用于其他需求婉刀,則可以設(shè)置對存儲桶中特定文件夾的公共訪問,只需在Resource值中指定目錄名稱即可:
"arn:aws:s3:::BUCKETNAME/media/*"
您還應(yīng)該創(chuàng)建一個(gè)API用戶序仙,OctoberCMS將使用該用戶來管理存儲桶文件路星。在AWS控制臺中,轉(zhuǎn)到IAM部分诱桂。轉(zhuǎn)到“用戶”選項(xiàng)卡并創(chuàng)建一個(gè)新用戶洋丐。用戶名無關(guān)緊要。創(chuàng)建新用戶時(shí)挥等,請確保選中“為每個(gè)用戶生成訪問密鑰”復(fù)選框友绝。AWS創(chuàng)建用戶后,它允許您查看安全憑證-用戶訪問密鑰ID和秘密訪問密鑰肝劲。復(fù)制密鑰并將其放入臨時(shí)文本文件迁客。
返回到用戶列表,然后單擊剛剛創(chuàng)建的用戶辞槐。在“ 權(quán)限”部分中掷漱,單擊“ 附加策略”按鈕。在列表中選擇AmazonS3FullAccess策略榄檬,然后單擊附加策略按鈕卜范。
現(xiàn)在,您擁有所有信息來更新OctoberCMS配置鹿榜。打開config / filesystem.php腳本并找到disks部分海雪。它已經(jīng)包含s3配置,您需要替換API憑據(jù)和存儲桶信息參數(shù):
參數(shù) | 值 |
---|---|
鍵 | 您之前創(chuàng)建的用戶的訪問密鑰ID值舱殿。 |
秘密 | 您創(chuàng)建的用戶的秘密訪問密鑰值奥裸。 |
桶 | 您的存儲桶名稱。 |
區(qū)域 | 存儲桶區(qū)域代碼沪袭,請參見下文官帘。 |
您可以在存儲桶屬性中的S3管理控制臺中找到存儲桶區(qū)域布疙≈杷兀“屬性”選項(xiàng)卡顯示區(qū)域名稱,例如俄勒岡州埠啃。S3驅(qū)動(dòng)程序配置需要存儲區(qū)代碼。使用此表查找您的存儲桶的代碼(您也可以查看AWS文檔):
區(qū)域 | 碼 |
---|---|
美國東部(俄亥俄州) | us-east-2 |
美國東部(弗吉尼亞北部) | us-east-1 |
美國西部(加利福尼亞北部) | us-west-1 |
美國西部(俄勒岡州) | 美國西部2 |
亞太地區(qū)(香港) | ap-east-1 |
亞太地區(qū)(孟買) | ap-south-1 |
亞太地區(qū)(大阪本地) | ap-northeast-3 |
亞太地區(qū)(首爾) | ap-northeast-2 |
亞太地區(qū)(新加坡) | ap-southeast-1 |
亞太地區(qū)(悉尼) | ap-southeast-2 |
亞太地區(qū)(東京) | 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腳本畦攘。查找部分存儲霸妹。在媒體參數(shù)更新disk,文件夾和路徑參數(shù)中:
參數(shù) | 值 |
---|---|
磁碟 | 使用s3值知押。 |
夾 | 您在S3存儲桶中創(chuàng)建的文件夾的名稱叹螟。 |
路徑 | 存儲桶中文件夾的公共路徑,請參見下文台盯。 |
要獲取文件夾的路徑罢绽,請打開AWS控制臺并轉(zhuǎn)到S3部分。導(dǎo)航到存儲桶静盅,然后單擊之前創(chuàng)建的文件夾良价。將任何文件上傳到文件夾,然后單擊文件蒿叠。單擊右側(cè)欄中的“ 屬性”按鈕明垢。文件URL在Link參數(shù)中。復(fù)制URL并從中刪除文件名和斜杠市咽。
存儲配置示例:
'storage' => [
...
'media' => [
'disk' => 's3',
'folder' => 'media',
'path' => 'https://s3-us-west-2.amazonaws.com/your-bucket-name/media'
]
]
恭喜你痊银!現(xiàn)在,您準(zhǔn)備將Amazon S3與OctoberCMS一起使用施绎。請注意溯革,您還可以將Amazon CloudFront CDN配置為與存儲桶配合使用。本文檔未涵蓋該主題谷醉,請參考CloudFront文檔致稀。配置CloudFront之后,您將需要更新存儲配置中的path參數(shù)俱尼。
配置Rackspace CDN訪問
要將Rackspace CDN與OctoberCMS一起使用抖单,您應(yīng)該創(chuàng)建Rackspace CDN容器,容器中的文件夾和API用戶号显。
登錄到Rackspace管理控制臺臭猜,然后導(dǎo)航到“存儲/文件”頁面。創(chuàng)建一個(gè)新的容器押蚤。容器名稱無關(guān)緊要,它將成為您的公共文件URL的一部分羹应。為新容器選擇“ 公共(啟用CDN)”類型揽碘。
在容器中創(chuàng)建媒體文件夾。文件夾名稱無關(guān)緊要。此文件夾將是您的媒體庫的根雳刺。
您應(yīng)該創(chuàng)建一個(gè)API用戶劫灶,OctoberCMS將使用該用戶來管理CDN容器中的文件。在Rackspace控制臺中打開“帳戶/用戶管理”頁面掖桦。單擊創(chuàng)建用戶按鈕本昏。填寫用戶名(例如october.cdn.api),密碼枪汪,安全性問題和答案涌穆。在“ 產(chǎn)品訪問權(quán)限”部分中,選擇“ 自定義”雀久,然后在CDN行中選擇“ 管理員”宿稀。在“ 帳戶”部分中使用“ 無訪問權(quán)限”角色,在“ 聯(lián)系信息”部分中使用“ 技術(shù)聯(lián)系人”類型赖捌。保存用戶帳戶祝沸。保存帳戶后,您將看到帶有API密鑰的“登錄詳細(xì)信息”部分 包含您需要在OctoberCMS配置文件中使用的值的行越庇。
現(xiàn)在罩锐,您擁有所有信息來更新OctoberCMS配置。打開config / filesystem.php腳本并找到disks部分卤唉。它已經(jīng)包含Rackspace配置涩惑,您需要替換API憑證和容器信息參數(shù):
參數(shù) | 值 |
---|---|
用戶名 | Rackspace用戶名(例如october.cdn.api)。 |
鍵 | 您可以從Rackspace用戶個(gè)人資料頁面復(fù)制的用戶的API密鑰搬味。 |
容器 | 容器名稱境氢。 |
區(qū)域 | 存儲桶區(qū)域代碼,請參見下文碰纬。 |
終點(diǎn) | 保持原樣萍聊。 |
區(qū)域 | 您可以在Rackspace控制面板的CDN容器列表中找到該區(qū)域。該代碼是3個(gè)字母的值悦析,例如寿桨,它是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腳本强戴。查找部分存儲亭螟。在媒體參數(shù)更新disk,文件夾和路徑參數(shù)中:
參數(shù) | 值 |
---|---|
磁碟 | 使用機(jī)架空間值骑歹。 |
夾 | 您在CDN容器中創(chuàng)建的文件夾的名稱预烙。 |
路徑 | 容器中文件夾的公共路徑,請參見下文道媚。 |
要獲取文件夾的路徑扁掸,請轉(zhuǎn)到Rackspace控制臺中的CDN容器列表翘县。單擊容器,然后打開媒體文件夾谴分。上傳任何文件锈麸。上傳文件后,單擊它牺蹄。該文件將在新的瀏覽器標(biāo)簽中打開忘伞。復(fù)制文件URL,并從中刪除文件名和斜杠沙兰。
存儲配置示例:
'storage' => [
...
'media' => [
'disk' => 'rackspace',
'folder' => 'media',
'path' => 'https://xxxxxxxxx-xxxxxxxxx.r00.cf0.rackcdn.com/media'
]
]
恭喜你氓奈!現(xiàn)在,您準(zhǔn)備將Rackspace CDN與OctoberCMS一起使用僧凰。
影音播放器
默認(rèn)情況下探颈,系統(tǒng)使用HTML5音頻和視頻標(biāo)簽來呈現(xiàn)音頻和視頻文件:
<video src="video.mp4" controls></video>
要么
<audio src="audio.mp3" controls></audio>
此行為可以被覆蓋。如果存在oc-audio-player.html和oc-video-player.html CMS部分训措,則它們將用于顯示音頻和視頻內(nèi)容伪节。在局部文件中,使用變量src輸出到源文件的鏈接绩鸣。例:
<video src="{{ src }}" width="320" height="200" controls preload></video>
如果您不想使用HTML5播放器怀大,則可以在局部中提供任何其他標(biāo)記。有一個(gè)第三方腳本可以在較舊的瀏覽器中支持HTML5視頻和音頻標(biāo)簽呀闻。
由于分詞是使用Twig編寫的化借,因此您可以基于命名約定自動(dòng)添加替代視頻源。例如捡多,如果有一個(gè)慣例蓖康,每個(gè)全分辨率視頻總是有一個(gè)較小分辨率的視頻,并且較小分辨率的文件具有擴(kuò)展名“ iphone.mp4”垒手,則生成的標(biāo)記可能如下所示:
<video controls>
<source
src="{{ src }}"
media="only screen and (min-device-width: 568px)"></source>
<source
src="{{ src|replace({'.mp4': '.iphone.mp4'}) }}"
media="only screen and (max-device-width: 568px)"></source>
</video>
其他配置選項(xiàng)
有幾個(gè)選項(xiàng)可讓您微調(diào)媒體管理器蒜焊。所有這些都可以在config / cms.php腳本的storage / media部分中定義,例如:
'storage' => [
...
'media' => [
...
'ignore' => ['.svn', '.git', '.DS_Store']
]
],
參數(shù) | 值 |
---|---|
忽視 | 要忽略的文件和目錄名稱的列表科贬。默認(rèn)為['.svn'泳梆,'。git'榜掌,'优妙。DS_Store']。 |
ttl | 指定緩存的生存時(shí)間(以分鐘為單位)憎账。默認(rèn)值為10套硼。添加,更新或刪除庫項(xiàng)目時(shí)胞皱,緩存會自動(dòng)失效熟菲。 |
imageExtensions | 與Image文檔類型相對應(yīng)的文件擴(kuò)展名看政。默認(rèn)值為['gif'朴恳,'png'抄罕,'jpg','jpeg'于颖,'bmp']呆贿。 |
videoExtensions | 與視頻文檔類型相對應(yīng)的文件擴(kuò)展名。默認(rèn)值為['mp4'森渐,'avi'做入,'mov','mpg']同衣。 |
audioExtensions | 與音頻文檔類型相對應(yīng)的文件擴(kuò)展名竟块。默認(rèn)值為['mp3','wav'耐齐,'wma'浪秘,'m4a']。 |
大事記
媒體管理器提供了一些事件埠况,您可以聽這些事件以提高可擴(kuò)展性耸携。
事件 | 描述 | 參量 |
---|---|---|
folder.delete | 刪除文件夾時(shí)調(diào)用 | (string) $path |
file.delete | 刪除文件時(shí)調(diào)用 | (string) $path |
folder.rename | 重命名文件夾時(shí)調(diào)用 |
(string) $originalPath , (string) $newPath
|
file.rename | 重命名文件時(shí)調(diào)用 |
(string) $originalPath 辕翰, (string) $newPath
|
folder.create | 創(chuàng)建文件夾時(shí)調(diào)用 | (string) $newFolderPath |
folder.move | 文件夾移動(dòng)時(shí)調(diào)用 |
(string) $path 夺衍, (string) $dest
|
file.move | 文件移動(dòng)時(shí)調(diào)用 |
(string) $path , (string) $dest
|
上傳文件 | 上傳文件時(shí)調(diào)用 |
(string) $filePath 喜命, (\Symfony\Component\HttpFoundation\File\UploadedFile) $uploadedFile
|
要陷入這些事件沟沙,請Backend\Widgets\MediaManager
直接擴(kuò)展該類:
Backend\Widgets\MediaManager::extend(function($widget) {
$widget->bindEvent('file.rename', function ($originalPath, $newPath) {
// Update custom references to path here
});
});
或通過Event
Facade 全局監(jiān)聽(每個(gè)事件都帶有前綴,media.
并將實(shí)例化的Backend\Widgets\MediaManager
對象作為第一個(gè)參數(shù)傳遞給它):
Event::listen('media.file.rename', function($widget, $originalPath, $newPath) {
// Update custom references to path here
});
故障排除
使用遠(yuǎn)程服務(wù)的最常見問題是SSL連接問題壁榕。如果收到SSL錯(cuò)誤矛紫,請確保您的服務(wù)器具有公共證書頒發(fā)機(jī)構(gòu)(CA)的新SSL證書。