安装 ossfs,该工具能让您在 Linux 系统中把 OSS Bucket 挂载到本地文件系统中
ossfs 基于s3fs 构建,具有s3fs 的全部功能。主要功能包括
支持POSIX 文件系统的大部分功能,包括文件读写,目录,链接操作,权限,uid/gid,以及扩展属性(extended attributes)
通过OSS 的multipart 功能上传大文件
MD5 校验保证数据完整性
# 下载并安装
- wget <a href="http://docs-aliyun.cn-hangzhou.oss.aliyun-inc.com/assets/attach/32196/cn_zh/1524809958556/ossfs_1.80.4_centos7.0_x86_64.rpm?spm=a2c4g.11186623.2.6.XJB3Dd&file=ossfs_1.80.4_centos7.0_x86_64.rpm" target="_blank">http://docs-aliyun.cn-hangzhou.o ... entos7.0_x86_64.rpm</a>
- mv ossfs_1.80.4_centos7.0_x86_64.rpm?spm=a2c4g.11186623.2.6.QwMtDE ossfs_1.80.4_centos7.0_x86_64.rpm
- yum localinstall ossfs_1.80.4_centos7.0_x86_64.rpm
将每个 bucket name、AccessKey和AccessKeySecret用:连接后填写到 /etc/passwd-ossfs,每行一个,并设置文件权限为 640
- img-bucket:AccessKey:AccessKeySecret
- my-bucket:AccessKey:AccessKeySecret
- chmod 640 /etc/passwd-ossfs
安装 mailcap,解决 bucket 中的文件 Content-Type 全是 application/octet-stream 的问题
- yum install mailcap
挂载 OSS Bucket
# 获取运行 php-fpm 和 nginx 的系统用户 uid 和 gid,比如 www 用户
# uid=1000(www) gid=1000(www) 组=1000(www)
- id www
# 挂载 bucket
# Endpoint:请使用内网地址,速度快且流量免费
# -o noxattr:如果你没有使用eCryptFs等需要XATTR的文件系统,可以提升性能
# -o kernel_cache:使用文件系统的 page cache
# -o allow_other:允许其他用户访问挂载文件夹
# -ouid -ogid:制定挂载目录的用户和组权限
- ossfs img-bucket /data/htdocs/www/data/attachment -ourl=Endpoint -o noxattr -o kernel_cache -o allow_other -ouid=1000 -ogid=1000
- ossfs avatar-bucket /data/htdocs/www/uc_server/data/avatar -ourl=Endpoint -o noxattr -o kernel_cache -o allow_other -ouid=1000 -ogid=1000
如何卸载 bucket
# root用户
- umount /data/htdocs/www/data/attachment
- umount /data/htdocs/www/uc_server/data/avatar
# 非root用户
- fusermount -u /data/htdocs/www/data/attachment
- fusermount -u /data/htdocs/www/uc_server/data/avatar
开机启动,以 CentOS 7.0 为例,其他系统参考 FAQ
# 根据下面的模板创建启动脚本
- vi /etc/init.d/ossfs
# 添加执行权限
- chmod a+x /etc/init.d/ossfs
# 设置开机启动
- chkconfig ossfs on
#! /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 img-bucket /data/htdocs/www/data/attachment -ourl=Endpoint -o noxattr -o kernel_cache -o allow_other -ouid=1000 -ogid=1000
ossfs avatar-bucket /data/htdocs/www/uc_server/data/avatar -ourl=Endpoint -o noxattr -o kernel_cache -o allow_other -ouid=1000 -ogid=1000