阿里云對(duì)象存儲(chǔ)OSS,主要是用于存儲(chǔ)靜態(tài)資源文件,它提供了很多方便的操作圖片的方法(縮放旋轉(zhuǎn)水印等),在實(shí)現(xiàn)了OSS的基礎(chǔ)上,我們也可以通過(guò)購(gòu)買(mǎi)阿里云的CDN服務(wù)輕松的實(shí)現(xiàn)內(nèi)容的分發(fā) !
什么是OSS
阿里云對(duì)象存儲(chǔ)服務(wù)(Object Storage Service病袄,簡(jiǎn)稱(chēng) OSS)墓贿,是阿里云提供的海量炎咖、安全衫冻、低成本宙枷、高可靠的云存儲(chǔ)服務(wù)斥季。它具有與平臺(tái)無(wú)關(guān)的RESTful API接口搞动,能夠提供99.99999999%的服務(wù)持久性...... 阿里云OSS詳細(xì)了解可以參考這個(gè)文檔 , 這里主要介紹的是使用方式 !
想要使用OSS 存儲(chǔ)第一步,先購(gòu)買(mǎi)阿里云的OSS存儲(chǔ)服務(wù),現(xiàn)在有特惠 0.9元 兩年40G,當(dāng)然如果還有更高需求的話(huà)那就自己看情況購(gòu)買(mǎi) !
購(gòu)買(mǎi)之后點(diǎn)擊 新建 Bucket 創(chuàng)建一個(gè) Bucket , 這個(gè)就相當(dāng)于一個(gè)示例 , 可以把它理解成一個(gè)獨(dú)立的網(wǎng)盤(pán) , 可以創(chuàng)建多個(gè) ~
下面的管理資源包可以查看你購(gòu)買(mǎi)的是那種類(lèi)型的 OSS存儲(chǔ) ~
根據(jù)個(gè)人情況選擇不同的產(chǎn)品服務(wù) ! 購(gòu)買(mǎi)地址
基本情況就算是介紹完畢了~ 下面就開(kāi)始我們新征程 !
OSS 的作用
這個(gè)OSS 存儲(chǔ)能夠幫助我們完成很多新的需求 , 如果你是土豪你可以把它當(dāng)成一個(gè)網(wǎng)盤(pán)來(lái)使用,如果你是個(gè)后端開(kāi)發(fā)者那么恭喜你,你就相當(dāng)于有了一臺(tái)靜態(tài)資源服務(wù)器 ! 你可以把圖片以及靜態(tài)頁(yè)面放到這里 ! 通過(guò)OSS獲取需要的資源,從而減少服務(wù)器的IO操作~,不止如此,一些視頻類(lèi)的網(wǎng)站還可以把需要保持的視頻存儲(chǔ)到這里,OSS還為我們提供了很多圖片處理API,包括防盜鏈午笛、水印......
這篇教程主要實(shí)現(xiàn)的是關(guān)于OSS前期配置,如果有其他想法的朋友可以去參考OSS的技術(shù)文檔 ! 直接參照 SDK 即可操作 (我當(dāng)時(shí)發(fā)昏了,看了半天亂七八糟的東西,浪費(fèi)了很多時(shí)間)
安裝
SDK下載
GitHub地址:GitHub
版本迭代:Releases
SDK API文檔:API Doc
環(huán)境準(zhǔn)備
- PHP 5.3+,可通過(guò)php -v命令查看當(dāng)前的PHP版本苦锨。
- cURL 擴(kuò)展逼泣,可通過(guò)php -m命令查看curl擴(kuò)展是否已經(jīng)安裝好。
安裝
有三種方式安裝 SDK
- composer方式
- phar方式
- 源碼方式
composer 方式
- 可以通過(guò) composer 安裝項(xiàng)目依賴(lài) , 需要在項(xiàng)目的根目錄運(yùn)行
composer require aliyuncs/oss-sdk-php
- 或者在
composer.json
中聲明對(duì) composer require aliyuncs/oss-sdk-php 的依賴(lài)
"require": {
"aliyuncs/oss-sdk-php": "~2.0"
}
- 通過(guò)
composer install
安裝依賴(lài) , 安裝完成后 , 目錄結(jié)構(gòu)應(yīng)該像下面這樣
├── app.php
├── composer.json
├── composer.lock
└── vendor
其中 app.php
使用戶(hù)的應(yīng)用程序 , vendor/
目錄下包含了所依賴(lài)的庫(kù) , 您需要在app.php中引入依賴(lài):
require_once __DIR__ . '/vendor/autoload.php';
注意 :
如果您的項(xiàng)目中已經(jīng)引用過(guò)autoload.php舟舒,則加入了SDK的依賴(lài)之后拉庶,不需要再引入autoload.php了。
如果使用composer出現(xiàn)網(wǎng)絡(luò)錯(cuò)誤秃励,可以使用composer中國(guó)區(qū)的鏡像源氏仗,方法是在命令行執(zhí)行:composer config -g repositories.packagist composer http://packagist.phpcomposer.com
有沒(méi)有點(diǎn)蒙蔽 ~~
這些是官網(wǎng)的教程,我是用的就是這種安裝方式 ~
不過(guò)我使用的是 ThinkPHP 框架,所以我的安裝路徑做了適當(dāng)?shù)男薷?~
當(dāng)你做完上述的操作后頁(yè)面上會(huì)出現(xiàn)這樣一個(gè)文件
打開(kāi)后是這樣的
里面追加一條(圖片里的橫線(xiàn))這個(gè)就OK了 , 然后 composer install
運(yùn)行一下就OK~
后面也有兩種安裝方式 phar方式 和 源碼方式
phar方式
使用phar單文件方式時(shí),您需要在發(fā)布頁(yè)面中選擇相應(yīng)的版本并下載打包好的phar文件夺鲜。
在您的代碼中引入這個(gè)文件即可:
require_once '/path/to/oss-sdk-php.phar';
源碼方式
使用SDK源碼時(shí)皆尔,您需要在發(fā)布頁(yè)面中選擇相應(yīng)版本并下載打包好的zip文件。
解壓后的根目錄中包含一個(gè)autoload.php
文件币励,您需要在代碼中引入這個(gè)文件:
require_once '/path/to/oss-sdk/autoload.php';
示例程序
您可以通過(guò)以下步驟運(yùn)行示例程序:
解壓下載到的sdk包
修改samples目錄中的Config.php文件
- 修改 OSS_ACCESS_ID, 您從OSS獲得的AccessKeyId慷蠕。
- 修改 OSS_ACCESS_KEY, 您從OSS獲得的AccessKeySecret。
- 修改 OSS_ENDPOINT, 您選定的OSS數(shù)據(jù)中心訪(fǎng)問(wèn)域名榄审,如 http://oss-cn-hangzhou.aliyuncs.com砌们。
- 修改 OSS_TEST_BUCKET, 您要用來(lái)運(yùn)行sample使用的bucket,sample程序會(huì)在這個(gè)bucket中創(chuàng)建一些文件。
注意:不能用生產(chǎn)環(huán)境的bucket浪感,以免污染用戶(hù)數(shù)據(jù)
到samples目錄中執(zhí)行 php RunAll.php昔头, 也可以單個(gè)運(yùn)行某個(gè)Sample文件。
給大家展示一下config.php打開(kāi)之后的樣子
OSS_ACCESS_ID 和 OSS_ACCESS_KEY 所在的位置
OSS_ENDPOINT 所在位置
OK 走到這一步,我們最艱難的步驟就算是完成了,從這以后我們基本就算是暢通無(wú)阻了
上面這張圖片好像沒(méi)什么太大幫助......
剛剛又翻了下文檔,有些概念還是要給大家介紹一下
OSS\OssClient 是SDK的客戶(hù)端類(lèi)影兽,使用者可以通過(guò)OssClient提供的接口管理存儲(chǔ)空間(Bucket)和文件(Object)等揭斧。
確定Endpoint
Endpoint是阿里云OSS服務(wù)在各個(gè)區(qū)域的地址,目前支持兩種形式
Endpoint | 解釋 |
---|---|
OSS區(qū)域地址 | OSS區(qū)域地址這里 |
用戶(hù)自定義域名 | 用戶(hù)自定義域名峻堰,且CNAME指向OSS域名 |
關(guān)于Endpoint讹开,可以參考:點(diǎn)擊查看。
OSS區(qū)域地址
使用OSS Bucket所在區(qū)域地址捐名,Endpoint查詢(xún)可以有下面兩種方式:
- 查詢(xún)Endpoint與區(qū)域?qū)?yīng)關(guān)系詳情旦万,可以參考:點(diǎn)擊查看。
- 您可以登錄 阿里云OSS控制臺(tái)镶蹋,進(jìn)入Bucket概覽頁(yè)成艘,Bucket域名的后綴部分:如
bucket-1.oss-cn-hangzhou.aliyuncs.com
的oss-cn-hangzhou.aliyuncs.com
部分為該Bucket的外網(wǎng)Endpoint。
CNAME
- 您可以將自己擁有的域名通過(guò)CNAME綁定到某個(gè)存儲(chǔ)空間(Bucket)上贺归,然后通過(guò)自己域名訪(fǎng)問(wèn)存儲(chǔ)空間內(nèi)的文件
- 比如您要將域名
new-image.xxxxx.com
綁定到深圳區(qū)域的名稱(chēng)為image的存儲(chǔ)空間上: - 您需要到您的域名
xxxxx.com
托管商那里設(shè)定一個(gè)新的域名解析淆两,將http://new-image.xxxxx.com
解析到http://image.oss-cn-shenzhen.aliyuncs.com
,類(lèi)型為CNAME
配置密鑰
要接入阿里云OSS拂酣,您需要擁有一對(duì)有效的 AccessKey(包括AccessKeyId和AccessKeySecret)用來(lái)進(jìn)行簽名認(rèn)證秋冰。可以通過(guò)如下步驟獲得:
在獲取到 AccessKeyId和 AccessKeySecret之后婶熬,您可以按照下面步驟進(jìn)行初始化
新建OssClient
使用OSS域名新建OssClient
<?php
use OSS\OssClient;
use OSS\Core\OssException;
$accessKeyId = "<您從OSS獲得的AccessKeyId>";
$accessKeySecret = "<您從OSS獲得的AccessKeySecret>";
$endpoint = "<您選定的OSS數(shù)據(jù)中心訪(fǎng)問(wèn)域名剑勾,例如http://oss-cn-hangzhou.aliyuncs.com>";
try {
$ossClient = new OssClient($accessKeyId, $accessKeySecret, $endpoint);
} catch (OssException $e) {
print $e->getMessage();
}
OSS目前所有的節(jié)點(diǎn)列表見(jiàn):OSS節(jié)點(diǎn)列表
使用自定義域名(CNAME)新建OssClient
<?php
use OSS\OssClient;
use OSS\Core\OssException;
$accessKeyId = "<您從OSS獲得的AccessKeyId>";
$accessKeySecret = "<您從OSS獲得的AccessKeySecret>";
$endpoint = "<您的綁定在某個(gè)Bucket上的自定義域名>";
try {
$ossClient = new OssClient(
$accessKeyId, $accessKeySecret, $endpoint, true /* use cname */);
} catch (OssException $e) {
print $e->getMessage();
}
其中OssClient
的構(gòu)造函數(shù)中,第4個(gè)參數(shù)是含義是是否使用自定義域名赵颅,在使用CNAME
的時(shí)候需要將它置成true
甥材。而如果使用的是OSS官方域名,則不需要填此項(xiàng)性含,或者填為false
。
配置網(wǎng)絡(luò)參數(shù)
我們可以用ClientConfiguration設(shè)置一些網(wǎng)絡(luò)參數(shù):
<?php
$ossClient->setTimeout(3600 /* seconds */);
$ossClient->setConnectTimeout(10 /* seconds */);
其中:
-
setTimeout
設(shè)置請(qǐng)求超時(shí)時(shí)間鸳惯,單位秒商蕴,默認(rèn)是5184000秒, 這里建議 不要設(shè)置太小,如果上傳文件很大芝发,消耗的時(shí)間會(huì)比較長(zhǎng) -
setConnectTimeout
設(shè)置連接超時(shí)時(shí)間绪商,單位秒,默認(rèn)是10秒
從這里開(kāi)始我們就開(kāi)始我們的 CVR 開(kāi)發(fā)模式~
注 : CVR 開(kāi)發(fā)模式即為 ctrl+C ctrl+V ctrl+R 簡(jiǎn)稱(chēng) CVR 開(kāi)發(fā)模式 , 某些編譯器中 ctrl+R為運(yùn)行
相關(guān)的 PHP 的代碼文檔里都有 , 需要使用的時(shí)候直接 copy 就可以了,根據(jù)需求稍微修改一些參數(shù)即可~