基于OSSFS挂载阿里云OSS至帝国CMS附件目录的教程
使用背景
一直在使用阿里云oss,主要是把某些静态资源文件上传到oss(如js,图片等),结合阿里云CDN做缓存,增加页面访问速度。
这时需要增加上传oss的动作,之前一直使用ossutil来上传。
ossutil工具有一些弊端,比如上传文件时,他会挨个对比上传的每一个文件和oss中已有的文件,遇到文件名相同的,它会对比文件的修改时间,如果这个同名文件的修改时间在oss上的文件修改时间之后,则上传,否则不上传。
当要需要同步的文件越来越多时,这个对比会耗时很长。比如有10万个文件,实际上里面只有几个文件是新增的,这10万个文件全部会对比一次,导致文件的同步时间相当慢。
由于前端编译生成文件时,如果文件有改动时则会生成新的文件名(在原来的文件名上增加版本号),也就是说文件名相同的肯定都是旧文件不需要上传到oss的,根本没必要对比修改时间,可是ossutil没有“文件名相同则忽略上传”的功能。
使用ossfs则可以将oss直接挂载到本地目录,操作oss就像操作本地目录一样,那么我们可以用拷贝命令来忽略文件名相同的文件了,可以大量减少同步oss的时间。
cp -rn ~/build/static-file ~/oss-file
# -n 表示不要覆盖已存在的文件
# -r 表示递归拷贝
# ~/build/static-file 为前端编译生成的文件目录
# ~/oss-file 为oss的挂载目录
使用说明
1、以下载CentOS 7.0 (x64)版本为例:
wget http://gosspublic.alicdn.com/ossfs/ossfs_1.80.6_centos7.0_x86_64.rpm
2、安装
CentOS6.5及以上系统版本的安装命令:
yum install ossfs_1.80.6_centos7.0_x86_64.rpm
3、配置密码文件
指定bucket的名字,osskeyId和ossKeySecret;及配置passwd-ossfs文件的读写权限
echo my-bucket:my-access-key-id:my-access-key-secret > /home/deploy/.ossfs-pwd
chmod 640 /etc/passwd-ossfs
4、挂载
ossfs [bucket名字] [本地目录] <参数…>
将OSS bucket 挂载到Linux服务器的指定目录(my-bucket表示bucket名称, my-mount-point表示服务器的挂载目录,my-oss-endpoint表示oss的地域节点)。
ossfs my-bucket my-mount-point -ourl=my-oss-endpoint
例如: ossfs bucket-name /home/ossfs -o url=http://oss-cn-beijing-internal.aliyuncs.com -o nonempty -o allow_other
参数说明:参数以“-o”开头,后面接“参数名=参数值”
url:指定oss的endpoint,如果你是用的阿里云的ECS,可以使用内网url,这样在上传和复制文件时比较快,而且内网不计流量费用。
passwd_file:指定密码文件
allow_other:表示将挂载的目录的所有权限都放开给所有的用户和组(即777权限),没有该参数则是700权限,只有执行这个挂载命令的当前用户才有操作权限该目录。
mp_umask:配合allow_other一起使用,allow_other默认给定777权限,mp_umask则可以取消某些权限,比如-omp_umask=072,则实际权限是705(即777-072=705),(Linux权限说明:4-可读r ,2-可写w ,1-可执行x ) 。
5、卸载挂载点命令
umount /home/ossfs # root user
fusermount -u /home/ossfs # non-root user
6、配置开机启动
vim /etc/init.d/ossfs
#输入如下内容:
#! /bin/bash
# chkconfig: 2345 10 90
# description: ossfs service
# 防止两边服务器时间不一致错误,CentOS8 ntpdate已被chrony替代
ntpdate ntp1.aliyun.com
ossfs bucket-name /home/ossfs -o url=http://oss-cn-beijing-internal.aliyuncs.com -o nonempty -o allow_other
ntp安装:yum install -y ntp
ntp常用服务器:
cn.pool.ntp.org 中国开源免费NTP服务器
ntp1.aliyun.com 阿里云NTP服务器
ntp2.aliyun.com 阿里云NTP服务器
time1.aliyun.com 阿里云NTP服务器
time2.aliyun.com 阿里云NTP服务器
chmod a+x /etc/init.d/ossfs #为ossfs添加执行权限
chkconfig ossfs on #把ossfs加入开机启动