阿里云对象存储( Object Storage Service,简称 OSS ),是阿里云对外提供的海量,安全,低成本,高可靠的云存储服务。
OSSFS 能让您在 Linux、Mac OS X 系统中把 Aliyun OSS Bucket 挂载到本地文件系统中,您能够便捷的通过本地文件系统操作 OSS 上的对象,实现数据的共享。
注:OSSFS 并不限制一定要阿里云的机器才可以使用。
本教程基于如下产品:
- 系统:Centos 7.3
- 服务:阿里云 OSS
- VPS:阿里云 ECS
- 项目:「OSSFS」
创建 Bucke
新建一个 Bucke,「OSS 控制台」。
- 命名随意。
- 阿里云的用户请选择与 ECS 相同的地域,其他服务商的用户随意。
- 储存类型此处以标准储存为例。
- 读写权限:非公共访问请选择 私有,用于公共访问请选择 公共读。
- 非阿里云 ECS 或 ECS 和 OSS 不同地域使用请记录下 EndPoint 的地址「节点地址」。
访问权限控制
因为默认账户的 Access Key & ID 含有账户全部的控制权限(不推荐使用),所以创建一个只有 OSS 控制权限的 Access Key & ID。
打开 「访问控制 RAM 控制台」,添加用户名(可随意),按下图给予权限,待验证后将会显示 Access Key & ID,请注意保存,因为只显示一次。
信息整理
上方操作完后得到的信息如下:
- Bucke Name:cc-saintw-www
- Bucke 节点地址:http://oss-cn-shenzhen-internal.aliyuncs.com
- Access ID :LTAI3izkgVuD0zGV
- Access Key :99Fx3CJ69CXsxSVF6xaZErkTIsdfjm
注: 1. 节点地址:ECS 与 OSS Bucke 同地域时请使用内网地址,ECS 与 OSS Bucket 不同地域或非阿里云机器请使用外网地址。「访问地址查询」 2. 因为我的是阿里云的机器,所以这里用的是内网访问地址。 3. 特别注意,访问域名是带 http:// 或 https:// 的。
配置并启动 OSSFS
打开「此页面」选择最新版对应的安装包下载。
鉴于国内环境,建议手动下载后再上传至 VPS。
安装命令:
$ sudo yum localinstall 文件名
# 实际执行:
$ sudo yum localinstall ossfs_1.80.2_centos7.0_x86_64.rpm
设置 Bucket Name、Access Key 和 Access ID 的信息,将其存放在 「/etc/passwd-ossfs」 文件中, 并将权限设置为 640。
$ echo Bucket_Name:Access_ID:Access_Key > /etc/passwd-ossfs
$ chmod 640 /etc/passwd-ossfs
# 实际执行:
$ echo cc-saintw-www:LTAI3izkgVuD0zGV:99Fx3CJ69CXsxSVF6xaZErkTIsdfjm > /etc/passwd-ossfs
$ chmod 640 /etc/passwd-ossfs
创建目录:
# 根据你的实际情况替换路径:
$ mkdir /www/wwwroot/www.saintw.cc/wp-content/uploads
查看用户的 UID 和 GID:
# 以获取 www 用户的 UID / GID 为例:
$ id www
挂载权限:
权限设置是以 777-设置的数值 来计算的。
例如要挂载权限为 755,则应该填写 022 ( 777-755=022 )。
启动挂载:
$ ossfs Bucket_Name 挂载目录 -ourl=节点地址 -ouid=用户_uid -ogid=用户_gid -oumask=挂载权限 -o allow_other
# 实际执行
$ ossfs cc-saintw-www /www/wwwroot/www.saintw.cc/wp-content/uploads -ourl=http://oss-cn-shenzhen-internal.aliyuncs.com -ouid=1000 -ogid=1000 -oumask=022 -o allow_other
如配置无误,那么此时 OSS 中的 Bucket 已经挂载到您指定的目录下了。
注:挂载前请确保该目录下没有文件。
自启脚本挂载
在 「/etc/init.d/」 目录下建立文件 ossfs,模版如下:
#! /bin/bash
#
# ossfs Automount Aliyun OSS Bucket in the specified direcotry.
#
# chkconfig: 2345 90 10
# description: Activates/Deactivates ossfs configured to start at boot time.
ossfs Bucket_Name 挂载目录 -ourl=节点地址 -ouid=用户_uid -ogid=用户_gid -oumask=挂载权限 -o allow_other
按照我们的实际信息,应将以下命令加入 「/etc/init.d/ossfs」 中:
#! /bin/bash
#
# ossfs Automount Aliyun OSS Bucket in the specified direcotry.
#
# chkconfig: 2345 90 10
# description: Activates/Deactivates ossfs configured to start at boot time.
ossfs cc-saintw-www /www/wwwroot/www.saintw.cc/wp-content/uploads -ourl=http://oss-cn-shenzhen-internal.aliyuncs.com -ouid=1000 -ogid=1000 -oumask=022 -o allow_other
执行命令,添加执行权限:
$ chmod a+x /etc/init.d/ossfs
如果脚本文件内容无误,那么 VPS 重启后 OSS 中的 Bucket 将会自动挂载到您指定的目录下。
把 OSSFS 启动脚本作为其他服务,开机自动启动。
$ chkconfig ossfs on
常见问题
如有配置问题,请卸载挂载后修改配置:
卸载命令:
umount 挂载路径
# 实际执行
umount /www/wwwroot/www.saintw.cc/wp-content/uploads
- 文中操作中挂载目录对 root 以及设定的用户有权限。
- 挂载后目录内容使用的是统一的权限,比如教程中的 755。
ossfs: MOUNTPOINT directory /www/wwwroot/www.saintw.cc/wp-content/uploads is not empty. if you are sure this is safe, can use the 'nonempty' mount option.
以上提示说明挂载目录不为空。
ossfs: unable to access MOUNTPOINT /tmp/odat: No such file or directory.
以上提示说明您未创建该目录。
其他问题请参阅项目 WIKI。