服务器中使用阿里云OSS

最近了解到阿里云OSS这个云储存服务,发现其上传下载速度很快很稳定,而且储存相对更加安全,如果把服务器上网站等的一些扩展文件存储在OSS上可以给服务器减轻不少负担而且访问速度快。虽然OSS操作难度较大,但还是决定部署一下,毕竟可以带来不少的好处。此文以记录下阿里云OSS在服务器中的使用。

在阿里云购买对象储存OSS(初次使用买了入门体验储存包:40G,9元/年)后,在阿里云的对象储存管理后台可以进行管理,刚使用诈一看挺复杂,不知所措,经过一段学习摸索后才了解到大致的管理流程。

一、创建bucket和accesskey

如果整个OSS储存空间是个仓库,那么其中的概念bucket大致可以比喻为仓库的一个隔间,那么accesskey可以比喻为一把整个仓库或某个隔间的钥匙吧。

创建bucket和accesskey的过程有引导,挺简单

注意:创建完用户的key的时候记得立马保存好key的ID和密钥(只有一次保存机会)

设置用户的权限

创建完子用户的key后要赋予相应的权限才可以用来访问OSS储存空间。在用户右侧点击添加权限 可以在系统权限策略中选择预设的权限,但都比较粗糙,对于OSS只有完全管理(可以全权管理全部bucket)和只读(对所有bucket只读)两种。

如果已经符合你的要求那就直接用,如果需要更精确的授权可以自定义,比如设置某个用户只能管理某个bucket,那就需要自定义权限。

(可选)自定义权限

自定义操作在权限策略管理中,点击新建后这里选择脚本配置模式,然后写代码规则。

阿里云官方帮助文档中有详细介绍:权限策略基本元素。这里给出我总结的一般可用的规则(这里的规则都是针对某个具体的bucket,因此定义完后策略仅适用于个别用户):

①设置只能管理某个bucket(把其中的yourbucket换成你的bucket名称)

{
    "Version": "1",
    "Statement": [
        {
            "Effect": "Allow",
            "Action": [
                "oss:ListBuckets",
                "oss:GetBucketStat",
                "oss:GetBucketInfo",
                "oss:GetBucketAcl"
            ],
            "Resource": "acs:oss:*:*:*"
        },
        {
            "Effect": "Allow",
            "Action": [
                "oss:Get*",
                "oss:Put*",
                "oss:List*",
                "oss:DeleteObject"
            ],
            "Resource": [
                "acs:oss:*:*:yourbucket",
                "acs:oss:*:*:yourbucket/*"
            ]
        }
    ]
}

②设置只能管理某个bucket,但不能删除任何内容(可读可上传)。将上面代码中的"oss:DeleteObject"一行(还有上面的逗号)删除即可。

二、挂载OSS到服务器

到目前为止,OSS阿里云端已经配置好了,接下来需要将OSS挂载到服务器上才能在服务器使用上OSS。挂载需要使用ossfs这个工具,可以在GitHub阿里云下载,相应的也有安装教程。因为具体细节因人而异,笔者这里写下自己安装配置过程(CentOS 7.0+)。(此外,如果安装有宝塔面板的话可以直接在面板软件商店中安装)

(一)安装ossfs

1.下载安装包后上传到服务器,执行安装命令

sudo yum localinstall [your_ossfs_package]

2.写入bucket和accesskey信息到文件passwd-ossfs

vi /etc/passwd-ossfs
chmod 640 /etc/passwd-ossfs

其中写入 passwd-ossfs 的信息格式为

bucket1:access_key_id1:access_key_secret1
bucket2:access_key_id2:access_key_secret2

3.挂载bucket到指定目录

ossfs [bucket-name] [your-dir] -ourl=http://[EndPoint]

其中EndPoint(地域节点)可以在阿里云管理后台看到,建议使用内网的那个

另外,这样挂载的目录所有者是当前用户(一般是root),如果要能让其它用户能访问这个目录可以在末尾加卡-o allow_other(不会影响里面文件权限,不用担心);如果目标目录不是空目录还需要加-o nonempty(注意首次挂载都会清空文件夹)。其它问题可见常见问题

(二)设置开机自动挂载

安装ossfs并挂载好OSS后,如果服务器重启了,那么就又需要手动挂载,因此设置开机后自动挂载很有必要。办法是通过脚本自启动:

1.在/etc/init.d/目录下创建文件ossfs

touch /etc/init.d/ossfs

2.写入自启动命令(参照模板文件

vi /etc/init.d/ossfs
chmod a+x /etc/init.d/ossfs

注意:因为指定目录一般总是非空的,所以启动命令末尾最好再加上-o nonempty

3.设置开机自启

chkconfig ossfs on

测试看看,如果不行自行调节,可以参照帮助文档

其他命令

  • 取消挂载某个bucket(直接取消挂载对应的目录即可):fusermount -u [your-dir]

最后

阿里云OSS挂载到服务器上后可以配合许多其它软件使用,比如服务器上搭建的私人网盘,个人图库,也可以用来备份网站数据。


参考文章

发表评论

电子邮件地址不会被公开。 必填项已用*标注