摘要: 本文转载自 阿里云CodePipeline客户“小草”的个人博客,Step By Step的呈现了从0配置一个nodejs 静态网站发布到OSS,并通过CDN回源加速的过程。
本文转载自 阿里云CodePipeline客户“小草”的个人博客,原文地址:
http://www.forkjoin.org/2017/08-21-CodePipeline-ossweb/
现在流行前后端彻底分离,前端生成webpack 打包的静态文件。可以通过 CodePipeline构建后发布到oss 进行发布前端。下面进行详细讲解
第一步 申请开通 CodePipeline
CodePipeline 地址
第二步 创建CodePipeline任务
1. 创建一个nodejs任务
2. 详细设置
如下图,配置好git仓库和账号,以及分支
配置项目构建命令,比如我的项目修改成
3. 部署方式 选择不需要部署
第三步 准备oss
1. 新建 Bucket 选择标准存储,权限配置成公共读
下面测试都默认 bucket 名字为 test-weiapp-web
2. 配置访问控制 RAM
配置ram账号权限给构建使用,一定要配置好ram 权限。理由如下
防止误删除了其他 bucket 的文件等
ossutil 工具太危险!!!
安全
3. 创建策略
在访问控制界面选择 > 策略管理 > 新建授权策略 > 选择空白模板 > 输入策略 > 创建成果
策略配置参考如下:
Resource的详细格式是 acs:oss:{region}:{bucket_owner}:{bucket_name}/{object_name}
注意: bucket_name 是oss-cn-beijing,而且不是cn-beijing
访问控制参考 授权策略的图形界面生成器
4. 创建子账号并授权
在访问控制界面选择 > 用户管理 > 新建用户 > 输入用户名 > 勾选生成AccessKey > 确定 > 下载Ak 配置文件
在访问控制界面选择 > 用户管理 > 找到刚刚创建的用户 > 点击授权 > 找到上面创建的授权策略 > 添加 > 确定
第四步 修改项目
修改下面shell 内的 OSS_KEY_ID、OSS_KEY_SECRET、OSS_END_POINT和OSS_DISTPATH并加入到自己项目的合适位置
删除文件部分的shell 可以不要,具体请参考自己项目的结构。因为我的项目生成大量hash文件名的文件,如果不删除,oss 内无用文件将会越来越多。但是这样的删除过程会增加部署时间,且在一定时间内网站不可以访问;所以我建议修改项目结构,加入版本,把这些变化文件加入到一个带版本号的子文件夹,这样每次只删除第n个版本前的文件。
第五步修改 CodePipeline配置
如果不需要测试可以删除测试部分
添加构建步骤"执行shell"
点击立即执行开始一次构建
添加执行第四部的sh,注意相对路径是项目根路径,在我的项目内是 publish/upload.sh
第六步 修改oss 配置
对象存储 > 域名管理 > 绑定用于域名 > 输入域名 > 开启cdn ->自动添加cname
如果域名不在当前阿里云账号下或者不在阿里云,那么亲手动添加 cname。
点击确定后多等几分钟。开启cdn 扥过程比较慢。需要提前打开cdn功能
当域名添加完毕后
对象存储 > 域名管理 > 找到刚刚添加的域名 > 开启CDN 缓存自动刷新
第七步 router 导航的问题
如果项目使用react-router 利用history api 进行导航,那么怎么解决导航的问题?
1. 修改oss 利用404页面
对象存储 > 基础设置 > 静态页面 > 默认首页和默认 404 页都修改成 index.html
但是这种办法有一个问题,除了首页外的其他页面请求的状态码都是 404。在某些网络情况下404 会被劫持!所以这个办法实际上不完美!
2. 利用 镜像回源
利用"镜像回源"把请求重新定向回首页
对象存储 > 基础设置 > 镜像回源 > 创建规则 > 重定向
第八部 cdn 配置
CDN > 域名管理 > 找到刚刚添加的域名 > 性能优化 > 开启智能压缩
原文链接:https://yq.aliyun.com/articles/173622
有疑问加站长微信联系(非本文作者)