众所周知,将静态资源使用单独的域名进行请求可以加快页面的渲染速度,提升用户体验,在微服务部署的时候大部分使用全量升级的方式,如果js,css,images等静态资源单独部署的话,这一部分的源码就需要单独升级,这块我们使用的是阿里的oss的产品,他支持api接口上传,http协议访问等,但区别于通过ssh的方式进行文件的传递或备份,在jenkins打包上传的时候,这部分的升级工作往往需要单独上传到OSS服务器上,这就会大大收到网络速度的限制,以及代码的一致性问题发生的概率也会大增,那有没有一种办法可以在全量升级的时候同时把这部分资源也一并升级呢?
linux系统有一个类似于windows的文件夹共享的功能就是磁盘挂载,那能不能把远程的oss服务中的bucket通过什么方式挂载到本地的磁盘,这样操作本地磁盘就相当于操作了OSS服务器?ossfs就是解决这一问题的首选。
ossfs 基于s3fs 构建,具有s3fs 的全部功能。其中包括:
支持POSIX 文件系统的大部分功能,包括文件读写、目录、链接操作、权限、uid/gid、以及扩展属性(extended attributes)。
通过OSS 的multipart 功能上传大文件。
MD5 校验保证数据完整性。
首选需要新建配置文件,用于存放访问oss必须的关键信息。注意权限的要求
touchu /etc/passwd-ossfschmod 640 /etc/passwd-ossfs
配置文件内容如下,如果有多个bucket可以添加多条记录。
echo my-bucket:my-access-key-id:my-access-key-secret > /etc/passwd-ossfs
例:
echo jenkins-kxb-test:pXIozIy:KH94pO1FvhddW07 >> /etc/passwd-ossfs
echo wap:pXIocq14Zs:KH94pOJWUhddW07 > /etc/passwd-ossfs
就可以用如下命令进行挂载了。
ossfs my-bucket my-mount-point -ourl=my-oss-endpoint -o allow_other
例:
ossfs jenkins-kxb-test /alidata/OSSdata/test -ourl=http://oss-cn-hangzhou-internal.aliyuncs.com -o allow_other
ossfs wap /alidata/OSSdata/wap -ourl=http://oss-cn-hangzhou-internal.aliyuncs.com -o allow_other
注:毕竟是网络间的远程挂载,为提升文件的访问效率,oss的enterpoint最好用内网地址
这样,通过对文件目录/alidata/OSSdata/test、/alidata/OSSdata/wap的操作就可以 实现对OSS对应的bucket的操作了。
- 上一篇: 《哲学·科学·常识》
- 下一篇: 教你一个反恶意解析的招儿
评论