2022搭建私有CodePush库
前提条件:已安装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
.downloadUrl
将127.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
启动成功效果如下图所示
检查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则使用redisrolloutClientUniqueIdCache
配置为true则使用redistryLoginTimes
配置为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
创建iOS项目key
code-push app add MyRNiOS ios react-native
转载自:https://juejin.cn/post/7072284583034617870