likes
comments
collection
share

2022搭建私有CodePush库

作者站长头像
站长
· 阅读数 11

前提条件:已安装npm

安装code-push-cli

安装

本地部署的话不能安装最新版本,应该制定版本为2.1.9,否则code-push login IP:Host的时候自动打开的页面为Not found(404),bugfix链接参考,安装命令如下

npm install code-push-cli@2.1.9 -g

修改 admin 密码举例

$ curl -X PATCH -H "Authorization: Bearer mytoken" -H "Accept: application/json" -H "Content-Type:application/json" -d '{"oldPassword":"123456","newPassword":"654321"}' http://YOU_SERVICE_IP:3000/users/password

本地部署code-push-server

安装 PM2

PM2简介

PM2是node进程管理工具,可以利用它来简化很多node应用管理的繁琐任务,如性能监控、自动重启、负载均衡等,而且使用非常简单。

下面就对PM2进行入门性的介绍,基本涵盖了PM2的常用的功能和配置。

$ sudo npm i -g pm2

安装 MYSQL

参考链接

注意. mysql8.x 默认的 认证 caching_sha2_pasword 在node-mysql2中不被支持 参见 issue这会导致node连接数据库失败

解决方法

#修改默认的root用户的认证方式
ALTER USER 'root'@'localhost' IDENTIFIED WITH mysql_native_password BY 'YourRootPassword';
-- or
#新建一个用户并设置他的认证方式为mysql_native_password
CREATE USER 'foo'@'%' IDENTIFIED WITH mysql_native_password BY 'bar';

使用源码安装 code-push-server (实践)

本次实践使用此方法,因为比较方便找到配置文件

$ git clone https://github.com/lisong/code-push-server.git
$ cd code-push-server
$ npm install

使用npm全局安装code-push-server

$ npm install code-push-server@latest -g

初始化数据库

源码方式安装参考

$ ./bin/db init --dbhost "mysql安装的ip" --dbport "mysql安装的端口默认3306"  --dbuser "用户名" --dbpassword "密码"

全局安装参考

$ code-push-server-db init --dbhost "mysql安装的ip" --dbport "mysql安装的端口默认3306"  --dbuser "用户名" --dbpassword "密码"

成功后输出: success

修改code-push-server相关配置

找到项目目录下config目录中的config文件并作出如下修改:

  • local.storageDir 创建一个storageDir目录并确保这个目录可读写,进入目录输入pwd,复制出路径粘贴到这里
  • local.downloadUrl127.0.0.1 改成你使用的机器的ip.
  • common.dataDir 创建一个dataDir目录并确保这个目录可读写,进入目录输入pwd,复制出路径粘贴到这里
  • jwt.tokenSecret 打开网址获取密钥 https://www.grc.com/passwords.htm, 并替换 INSERT_RANDOM_TOKEN_KEY.
  • db 设置: username,password,host,port 改成自己配置的mysql

为pm2做配置

找到项目目录下docs目录中的process.json文件并作出如下修改:

  • script 如果是全局安装则设置成 code-push-server,如果是源码安装则使用源码中的路径 "项目路径/bin/www
  • CONFIG_FILE 使用config.js 文件的绝对路径

启动code-push-server服务

在docs文件夹下执行命令

$ pm2 start process.json

重启code-push-server服务

$ pm2 restart process.json

关闭code-push-server服务

$ pm2 stop process.json

启动成功效果如下图所示 2022搭建私有CodePush库

检查code-push-server服务正常运行

YOUR_CODE_PUSH_SERVER_IP为code-push-server服务对应的ip地址

$ curl -I http://YOUR_CODE_PUSH_SERVER_IP:3000/

返回结果如下

return httpCode 200 OK

HTTP/1.1 200 OK
X-DNS-Prefetch-Control: off
X-Frame-Options: SAMEORIGIN
Strict-Transport-Security: max-age=15552000; includeSubDomains
X-Download-Options: noopen
X-Content-Type-Options: nosniff
X-XSS-Protection: 1; mode=block
Content-Type: text/html; charset=utf-8
Content-Length: 592
ETag: W/"250-IiCMcM1ZUFSswSYCU0KeFYFEMO8"
Date: Sat, 25 Aug 2018 15:45:46 GMT
Connection: keep-alive

使用 redis 提升并发和安全性

在config.js文件中配置redis

  • updateCheckCache 配置为true则使用redis
  • rolloutClientUniqueIdCache 配置为true则使用redis
  • tryLoginTimes 配置为true则使用redis

升级

npm全局安装方式

$ npm install -g code-push-server@latest
$ code-push-server-db upgrade --dbhost "your mysql host" --dbport "your mysql port"  --dbuser "your mysql user" --dbpassword "your mysql password" # upgrade codepush database
$ pm2 restart code-push-server # restart service

源码安装方式

$ cd /path/to/code-push-server
$ git pull --rebase origin master
$ ./bin/db upgrade --dbhost "your mysql host" --dbport "your mysql port"  --dbuser "your mysql user" --dbpassword "your mysql password"
# upgrade codepush database
$ pm2 restart code-push-server # restart service

查看 pm2 log

$ pm2 ls
$ pm2 show code-push-server
$ tail -f "output file path"

code-push-server支持的存储方式

  • local (default)
  • qiniu (qiniu)
  • s3 (aws)
  • oss (aliyun)
  • tencentcloud

默认监听 Host/Port 0.0.0.0/3000

可以在 process.json进行配置, env: PORT,HOST

配置 react-native 项目

参考文章# React-Native热更新之微软CodePush中的相关配置

因为降低了code-push-cli的版本,所以有些命令会略有不同

创建Android项目key

code-push app add MyRNAndroid android react-native

2022搭建私有CodePush库

创建iOS项目key

code-push app add MyRNiOS ios react-native

2022搭建私有CodePush库

参考:github.com/lisong/code…