阿里云对象存储OSS,主要是用于存储静态资源文件,它提供了很多方便的操作图片的方法(缩放旋转水印等),在实现了OSS的基础上,我们也可以通过购买阿里云的CDN服务轻松的实现内容的分发 !
什么是OSS
阿里云对象存储服务(Object Storage Service,简称 OSS),是阿里云提供的海量、安全、低成本、高可靠的云存储服务。它具有与平台无关的RESTful API接口,能够提供99.99999999%的服务持久性...... 阿里云OSS详细了解可以参考这个文档 , 这里主要介绍的是使用方式 !
想要使用OSS 存储第一步,先购买阿里云的OSS存储服务,现在有特惠 0.9元 两年40G,当然如果还有更高需求的话那就自己看情况购买 !
购买之后点击 新建 Bucket 创建一个 Bucket , 这个就相当于一个示例 , 可以把它理解成一个独立的网盘 , 可以创建多个 ~
下面的管理资源包可以查看你购买的是那种类型的 OSS存储 ~
根据个人情况选择不同的产品服务 ! 购买地址
基本情况就算是介绍完毕了~ 下面就开始我们新征程 !
OSS 的作用
这个OSS 存储能够帮助我们完成很多新的需求 , 如果你是土豪你可以把它当成一个网盘来使用,如果你是个后端开发者那么恭喜你,你就相当于有了一台静态资源服务器 ! 你可以把图片以及静态页面放到这里 ! 通过OSS获取需要的资源,从而减少服务器的IO操作~,不止如此,一些视频类的网站还可以把需要保持的视频存储到这里,OSS还为我们提供了很多图片处理API,包括防盗链、水印......
这篇教程主要实现的是关于OSS前期配置,如果有其他想法的朋友可以去参考OSS的技术文档 ! 直接参照 SDK 即可操作 (我当时发昏了,看了半天乱七八糟的东西,浪费了很多时间)
安装
SDK下载
GitHub地址:GitHub
版本迭代:Releases
SDK API文档:API Doc
环境准备
- PHP 5.3+,可通过php -v命令查看当前的PHP版本。
- cURL 扩展,可通过php -m命令查看curl扩展是否已经安装好。
安装
有三种方式安装 SDK
- composer方式
- phar方式
- 源码方式
composer 方式
- 可以通过 composer 安装项目依赖 , 需要在项目的根目录运行
composer require aliyuncs/oss-sdk-php
- 或者在
composer.json
中声明对 composer require aliyuncs/oss-sdk-php 的依赖
"require": {
"aliyuncs/oss-sdk-php": "~2.0"
}
- 通过
composer install
安装依赖 , 安装完成后 , 目录结构应该像下面这样
├── app.php
├── composer.json
├── composer.lock
└── vendor
其中 app.php
使用户的应用程序 , vendor/
目录下包含了所依赖的库 , 您需要在app.php中引入依赖:
require_once __DIR__ . '/vendor/autoload.php';
注意 :
如果您的项目中已经引用过autoload.php,则加入了SDK的依赖之后,不需要再引入autoload.php了。
如果使用composer出现网络错误,可以使用composer中国区的镜像源,方法是在命令行执行:composer config -g repositories.packagist composer http://packagist.phpcomposer.com
有没有点蒙蔽 ~~
这些是官网的教程,我是用的就是这种安装方式 ~
不过我使用的是 ThinkPHP 框架,所以我的安装路径做了适当的修改 ~
当你做完上述的操作后页面上会出现这样一个文件
打开后是这样的
里面追加一条(图片里的横线)这个就OK了 , 然后 composer install
运行一下就OK~
后面也有两种安装方式 phar方式 和 源码方式
phar方式
使用phar单文件方式时,您需要在发布页面中选择相应的版本并下载打包好的phar文件。
在您的代码中引入这个文件即可:
require_once '/path/to/oss-sdk-php.phar';
源码方式
使用SDK源码时,您需要在发布页面中选择相应版本并下载打包好的zip文件。
解压后的根目录中包含一个autoload.php
文件,您需要在代码中引入这个文件:
require_once '/path/to/oss-sdk/autoload.php';
示例程序
您可以通过以下步骤运行示例程序:
解压下载到的sdk包
修改samples目录中的Config.php文件
- 修改 OSS_ACCESS_ID, 您从OSS获得的AccessKeyId。
- 修改 OSS_ACCESS_KEY, 您从OSS获得的AccessKeySecret。
- 修改 OSS_ENDPOINT, 您选定的OSS数据中心访问域名,如 http://oss-cn-hangzhou.aliyuncs.com。
- 修改 OSS_TEST_BUCKET, 您要用来运行sample使用的bucket,sample程序会在这个bucket中创建一些文件。
注意:不能用生产环境的bucket,以免污染用户数据
到samples目录中执行 php RunAll.php, 也可以单个运行某个Sample文件。
给大家展示一下config.php打开之后的样子
OSS_ACCESS_ID 和 OSS_ACCESS_KEY 所在的位置
OSS_ENDPOINT 所在位置
OK 走到这一步,我们最艰难的步骤就算是完成了,从这以后我们基本就算是畅通无阻了
上面这张图片好像没什么太大帮助......
刚刚又翻了下文档,有些概念还是要给大家介绍一下
OSS\OssClient 是SDK的客户端类,使用者可以通过OssClient提供的接口管理存储空间(Bucket)和文件(Object)等。
确定Endpoint
Endpoint是阿里云OSS服务在各个区域的地址,目前支持两种形式
Endpoint | 解释 |
---|---|
OSS区域地址 | OSS区域地址这里 |
用户自定义域名 | 用户自定义域名,且CNAME指向OSS域名 |
关于Endpoint,可以参考:点击查看。
OSS区域地址
使用OSS Bucket所在区域地址,Endpoint查询可以有下面两种方式:
- 查询Endpoint与区域对应关系详情,可以参考:点击查看。
- 您可以登录 阿里云OSS控制台,进入Bucket概览页,Bucket域名的后缀部分:如
bucket-1.oss-cn-hangzhou.aliyuncs.com
的oss-cn-hangzhou.aliyuncs.com
部分为该Bucket的外网Endpoint。
CNAME
- 您可以将自己拥有的域名通过CNAME绑定到某个存储空间(Bucket)上,然后通过自己域名访问存储空间内的文件
- 比如您要将域名
new-image.xxxxx.com
绑定到深圳区域的名称为image的存储空间上: - 您需要到您的域名
xxxxx.com
托管商那里设定一个新的域名解析,将http://new-image.xxxxx.com
解析到http://image.oss-cn-shenzhen.aliyuncs.com
,类型为CNAME
配置密钥
要接入阿里云OSS,您需要拥有一对有效的 AccessKey(包括AccessKeyId和AccessKeySecret)用来进行签名认证。可以通过如下步骤获得:
在获取到 AccessKeyId和 AccessKeySecret之后,您可以按照下面步骤进行初始化
新建OssClient
使用OSS域名新建OssClient
<?php
use OSS\OssClient;
use OSS\Core\OssException;
$accessKeyId = "<您从OSS获得的AccessKeyId>";
$accessKeySecret = "<您从OSS获得的AccessKeySecret>";
$endpoint = "<您选定的OSS数据中心访问域名,例如http://oss-cn-hangzhou.aliyuncs.com>";
try {
$ossClient = new OssClient($accessKeyId, $accessKeySecret, $endpoint);
} catch (OssException $e) {
print $e->getMessage();
}
OSS目前所有的节点列表见:OSS节点列表
使用自定义域名(CNAME)新建OssClient
<?php
use OSS\OssClient;
use OSS\Core\OssException;
$accessKeyId = "<您从OSS获得的AccessKeyId>";
$accessKeySecret = "<您从OSS获得的AccessKeySecret>";
$endpoint = "<您的绑定在某个Bucket上的自定义域名>";
try {
$ossClient = new OssClient(
$accessKeyId, $accessKeySecret, $endpoint, true /* use cname */);
} catch (OssException $e) {
print $e->getMessage();
}
其中OssClient
的构造函数中,第4个参数是含义是是否使用自定义域名,在使用CNAME
的时候需要将它置成true
。而如果使用的是OSS官方域名,则不需要填此项,或者填为false
。
配置网络参数
我们可以用ClientConfiguration设置一些网络参数:
<?php
$ossClient->setTimeout(3600 /* seconds */);
$ossClient->setConnectTimeout(10 /* seconds */);
其中:
-
setTimeout
设置请求超时时间,单位秒,默认是5184000秒, 这里建议 不要设置太小,如果上传文件很大,消耗的时间会比较长 -
setConnectTimeout
设置连接超时时间,单位秒,默认是10秒
从这里开始我们就开始我们的 CVR 开发模式~
注 : CVR 开发模式即为 ctrl+C ctrl+V ctrl+R 简称 CVR 开发模式 , 某些编译器中 ctrl+R为运行
相关的 PHP 的代码文档里都有 , 需要使用的时候直接 copy 就可以了,根据需求稍微修改一些参数即可~