OctoberCms-Media Manager

默認(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.htmloc-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
    });
});

或通過EventFacade 全局監(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證書。

?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
  • 序言:七十年代末护桦,一起剝皮案震驚了整個(gè)濱河市含衔,隨后出現(xiàn)的幾起案子,更是在濱河造成了極大的恐慌二庵,老刑警劉巖贪染,帶你破解...
    沈念sama閱讀 221,273評論 6 515
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件,死亡現(xiàn)場離奇詭異催享,居然都是意外死亡杭隙,警方通過查閱死者的電腦和手機(jī),發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 94,349評論 3 398
  • 文/潘曉璐 我一進(jìn)店門因妙,熙熙樓的掌柜王于貴愁眉苦臉地迎上來痰憎,“玉大人票髓,你說我怎么就攤上這事∠吃牛” “怎么了洽沟?”我有些...
    開封第一講書人閱讀 167,709評論 0 360
  • 文/不壞的土叔 我叫張陵,是天一觀的道長蜗细。 經(jīng)常有香客問我裆操,道長,這世上最難降的妖魔是什么炉媒? 我笑而不...
    開封第一講書人閱讀 59,520評論 1 296
  • 正文 為了忘掉前任踪区,我火速辦了婚禮,結(jié)果婚禮上吊骤,老公的妹妹穿的比我還像新娘缎岗。我一直安慰自己,他們只是感情好白粉,可當(dāng)我...
    茶點(diǎn)故事閱讀 68,515評論 6 397
  • 文/花漫 我一把揭開白布传泊。 她就那樣靜靜地躺著,像睡著了一般蜗元。 火紅的嫁衣襯著肌膚如雪或渤。 梳的紋絲不亂的頭發(fā)上,一...
    開封第一講書人閱讀 52,158評論 1 308
  • 那天奕扣,我揣著相機(jī)與錄音薪鹦,去河邊找鬼。 笑死惯豆,一個(gè)胖子當(dāng)著我的面吹牛池磁,可吹牛的內(nèi)容都是我干的。 我是一名探鬼主播楷兽,決...
    沈念sama閱讀 40,755評論 3 421
  • 文/蒼蘭香墨 我猛地睜開眼地熄,長吁一口氣:“原來是場噩夢啊……” “哼!你這毒婦竟也來了芯杀?” 一聲冷哼從身側(cè)響起端考,我...
    開封第一講書人閱讀 39,660評論 0 276
  • 序言:老撾萬榮一對情侶失蹤,失蹤者是張志新(化名)和其女友劉穎揭厚,沒想到半個(gè)月后却特,有當(dāng)?shù)厝嗽跇淞掷锇l(fā)現(xiàn)了一具尸體,經(jīng)...
    沈念sama閱讀 46,203評論 1 319
  • 正文 獨(dú)居荒郊野嶺守林人離奇死亡筛圆,尸身上長有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點(diǎn)故事閱讀 38,287評論 3 340
  • 正文 我和宋清朗相戀三年裂明,在試婚紗的時(shí)候發(fā)現(xiàn)自己被綠了。 大學(xué)時(shí)的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片太援。...
    茶點(diǎn)故事閱讀 40,427評論 1 352
  • 序言:一個(gè)原本活蹦亂跳的男人離奇死亡闽晦,死狀恐怖扳碍,靈堂內(nèi)的尸體忽然破棺而出,到底是詐尸還是另有隱情仙蛉,我是刑警寧澤笋敞,帶...
    沈念sama閱讀 36,122評論 5 349
  • 正文 年R本政府宣布,位于F島的核電站捅儒,受9級特大地震影響液样,放射性物質(zhì)發(fā)生泄漏。R本人自食惡果不足惜巧还,卻給世界環(huán)境...
    茶點(diǎn)故事閱讀 41,801評論 3 333
  • 文/蒙蒙 一、第九天 我趴在偏房一處隱蔽的房頂上張望坊秸。 院中可真熱鬧麸祷,春花似錦、人聲如沸褒搔。這莊子的主人今日做“春日...
    開封第一講書人閱讀 32,272評論 0 23
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽星瘾。三九已至走孽,卻和暖如春,著一層夾襖步出監(jiān)牢的瞬間琳状,已是汗流浹背磕瓷。 一陣腳步聲響...
    開封第一講書人閱讀 33,393評論 1 272
  • 我被黑心中介騙來泰國打工, 沒想到剛下飛機(jī)就差點(diǎn)兒被人妖公主榨干…… 1. 我叫王不留念逞,地道東北人困食。 一個(gè)月前我還...
    沈念sama閱讀 48,808評論 3 376
  • 正文 我出身青樓,卻偏偏與公主長得像翎承,于是被迫代替她去往敵國和親硕盹。 傳聞我的和親對象是個(gè)殘疾皇子,可洞房花燭夜當(dāng)晚...
    茶點(diǎn)故事閱讀 45,440評論 2 359

推薦閱讀更多精彩內(nèi)容