React Native之搭建code-push-server&七牛云

前言

该文章并不涉及到code-push-server服务的搭建过程,官方使用docker创建很简单,一直使用的服务器存储,但是无奈本人的服务器1M的网速太慢了,热更新时小几M的bundle文件依旧下载的很慢,所以想将存储迁移到七牛云,加快热更新的过程。
由于本人对七牛云并不是很熟悉,所以将此次的过程详细的记录下来。

服务器: 腾讯云linux

服务协议: https

注意:

1.迁移后,由于热更新最终的下载地址变为新的下载地址,所以以前的热更新虽然还会检测到热更新(因为code-push-server的服务还在,只是下载地址变了),但是会下载失败。

2.新在域名地址在个人服务器上面不用指向实际的服务,最终都会转向七牛的服务器,作用仅仅只是提供一个可用的域名

过程

1.创建一个对象存储

image

2.绑定域名

 七牛融合 CDN 测试域名(以 clouddn.com/qiniucdn.com/qiniudn.com/qnssl.com/qbox.me 结尾),每个域名每日限总流量 10GB,每个测试域名自创建起 30 个自然日后系统会自动回收,仅供测试使用并且不支持 Https 访问,详情查看 七牛测试域名使用规范 。点击域名可查看剩余回收时间。

创建的对象存储会默认有一个测试域名,该域名有30天的有效期并且不支持https,所以需要绑定要自己的域名上面

如果证书已经在七牛云上面,2.1~2.3过程可以跳过

2.1 申请证书

由于前面购买服务器的时候已经申请过域名了,在这里申请子域名的证书是免费的,直接点击'免费申请证书'后,填写响应信息,等待几个小时(挺快的,不用等待一天)
![](


image

2.2 转换证书

申请通过后,点击下载,下载证书到本地

image

导出tomcat下面的jks和txt两个文件,打开https://myssl.com/cert_convert.html,由于七牛云需要传PEM格式的正式,所以需要在该网站进行下转换

image

2.3 导入证书到七牛云

打开七牛云的[SSL证书服务]-[证书管理],点击上传自有证书

image

步骤2.2下载的文件解压后,会三个文件
上面的证书备注名就是证书的名称,可以直接填入文件名,内容和私钥按照下面的截图,将文件里面的文本内容全部拷贝进去,这样自有证书就添加成功了。


image

2.4 绑定域名

回到云存储的页面,点击[绑定域名],进入如下界面

image

填写加速域名,注意,该域名最好新创建一个,不要跟热更新服务的域名一样

然后下面通信协议选择https,证书会自动选择你签名添加的自定义名称即可

3 设置CNAME

步骤2完成后,这里会有一个新的域名,但是状态是等待CNAME

image

点击最右侧的CNAME图标,上面会有教程和你的CNAME地址,复制该地址

此时,需要进入到自己的服务器,进入[域名管理]-[我的域名],点击解析,进入到

image

添加一条记录,譬如你的文件服务的地址是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包

image

然后app端检查的下载地址也变了

image

你可能感兴趣的:(React Native之搭建code-push-server&七牛云)