前言
该文章并不涉及到code-push-server服务的搭建过程,官方使用docker创建很简单,一直使用的服务器存储,但是无奈本人的服务器1M的网速太慢了,热更新时小几M的bundle文件依旧下载的很慢,所以想将存储迁移到七牛云,加快热更新的过程。
由于本人对七牛云并不是很熟悉,所以将此次的过程详细的记录下来。
服务器:
腾讯云linux
服务协议:
https
注意:
1.迁移后,由于热更新最终的下载地址变为新的下载地址,所以以前的热更新虽然还会检测到热更新(因为code-push-server的服务还在,只是下载地址变了),但是会下载失败。
2.新在域名地址在个人服务器上面不用指向实际的服务,最终都会转向七牛的服务器,作用仅仅只是提供一个可用的域名
过程
1.创建一个对象存储
2.绑定域名
七牛融合 CDN 测试域名(以 clouddn.com/qiniucdn.com/qiniudn.com/qnssl.com/qbox.me 结尾),每个域名每日限总流量 10GB,每个测试域名自创建起 30 个自然日后系统会自动回收,仅供测试使用并且不支持 Https 访问,详情查看 七牛测试域名使用规范 。点击域名可查看剩余回收时间。
创建的对象存储会默认有一个测试域名,该域名有30天的有效期并且不支持https,所以需要绑定要自己的域名上面
如果证书已经在七牛云上面,2.1~2.3过程可以跳过
2.1 申请证书
由于前面购买服务器的时候已经申请过域名了,在这里申请子域名的证书是免费的,直接点击'免费申请证书'后,填写响应信息,等待几个小时(挺快的,不用等待一天)
![](
2.2 转换证书
申请通过后,点击下载,下载证书到本地
导出tomcat下面的jks和txt两个文件,打开https://myssl.com/cert_convert.html,由于七牛云需要传PEM格式的正式,所以需要在该网站进行下转换
2.3 导入证书到七牛云
打开七牛云的[SSL证书服务]-[证书管理],点击上传自有证书
步骤2.2下载的文件解压后,会三个文件
上面的证书备注名就是证书的名称,可以直接填入文件名,内容和私钥按照下面的截图,将文件里面的文本内容<font color='red'>全部</font>拷贝进去,这样自有证书就添加成功了。
2.4 绑定域名
回到云存储的页面,点击[绑定域名],进入如下界面
填写加速域名,注意,该域名最好新创建一个,不要跟热更新服务的域名一样
然后下面通信协议选择https,证书会自动选择你签名添加的自定义名称即可
3 设置CNAME
步骤2完成后,这里会有一个新的域名,但是状态是等待CNAME
点击最右侧的CNAME图标,上面会有教程和你的CNAME地址,复制该地址
此时,需要进入到自己的服务器,进入[域名管理]-[我的域名],点击解析
,进入到
添加一条记录,譬如你的文件服务的地址是cdn.xxx.com
添加一条
|主机记录|记录类型|线路类型|记录值|
|--|--|--|--|--|
|cdn|CNAME|默认|复制的CNAME值|
等待几分钟后生效,生效后七牛云上面的状态就变成成功
了
4 更改下载地址和存储类型
进入到热更新的服务器,找到config.js
配置文件
填写qiniu
节点的信息:
accessKey和secretKey可以在七牛云,我的[个人中心]-[秘钥管理]中找到
bucketName就是你创建的云存储名称
downloadUrl为你的域名地址,譬如
https://cdn.xxx.com
并将common.storageType
的值改为qiniu
// Config for qiniu (http://www.qiniu.com/) cloud storage when storageType value is "qiniu".
qiniu: {
accessKey: "",
secretKey: "",
bucketName: "",
downloadUrl: "" // Binary files download host address.
},
common: {
/*
* tryLoginTimes is control login error times to avoid force attack.
* if value is 0, no limit for login auth, it may not safe for account. when it's a number, it means you can
* try that times today. but it need config redis server.
*/
tryLoginTimes: 0,
// CodePush Web(https://github.com/lisong/code-push-web) login address.
//codePushWebUrl: "http://127.0.0.1:3001/login",
// create patch updates's number. default value is 3
diffNums: 3,
// data dir for caclulate diff files. it's optimization.
dataDir: process.env.DATA_DIR || os.tmpdir(),
// storageType which is your binary package files store. options value is ("local" | "qiniu" | "s3"| "oss" || "tencentcloud")
storageType: "qiniu",
// options value is (true | false), when it's true, it will cache updateCheck results in redis.
updateCheckCache: false,
// options value is (true | false), when it's true, it will cache rollout results in redis
rolloutClientUniqueIdCache: false,
},
结果
重启服务,后面再发布新的热更新后,在云存储的[内容管理]里面,可以直接看到上传的bundle包
然后app端检查的下载地址也变了