阿里OSS+CDN ossutil工具,改进前端部署方案

背景

行业目前最流行的是前后端分离,vue.js项目是标配。近期业务反馈,打开速度越来越慢,看宽带快使用200M,必须将前端独立部署出去。

传统部署

传统服务器部署,Ngnix 部署
缺点也比较明显:

1、服务器IP暴露,不安全,要解决入口和出口IP和服务器IP不同

2、容易单点故障

3、采用负载均衡和统一出口,可以解决服务器IP和单点故障,带来新的问题,部署复杂,关键是浪费Money

先前采用过七牛云存储,有个优点是同一个Bucket下面的目录可以绑定不同的域名,缺点是在使用过程中,CDN缓存经常失效

OSS部署

由于阿里云的强大表现,目前我们在使用的OSS存储已超过20TB,其稳定性和性能得到了我们认可,一些老牌又拍云、七牛云(阿里也投资)云存储逐渐被在项目中被抛弃。

OSS提供的工具非常多,研究了 ossutil 发现非常适合写脚本发布。

#配置ossuntil
#config 非交互性生成配置
#-e Bucket所在地域的域名信息
#-i accessKeyID
#-k accessKeySecret
#-c 配置文件地址
./ossuntil config -e XX -i XX -k XX  -L CH -c XX

#上传目录到oss,有重名
#-c 配置文件
#-r 源目标目录
#oss:Bucket
#-u 只有当目标文件不存在,或源文件的最后修改时间晚于目标文件时,ossutil才会执行上传操
./ossuntil -c XX cp -r XX oss://Bucket/XX -f

有了这个基础脚本,配合Jenkins和gitlab,就可以自动发布了。-_-

使用过程中几点注意点:
1、OSS设置 静态页面的“默认首页”和“404页面”

2、CDN缓存可以设置.html文件类型不缓存,防止index.html不刷新

3、绑定自定义域名可以解析到首页,默认自带的域名不可以

4、跨越设置

总结:
OSS+CDN 应该成为前端部署最方便快捷的方案,省去了运维的工作,节省了服务器开支,部署异常方便,强烈推荐。

有一点不方便的是,OSS不能按照目录绑定域名,因为OSS存储是key-value方式,没有目录概念,所以是不支持。