React Native 热更新-搭建本地code-push-server

1.安装mysql (自行安装)

2.下载 code-push-server 仓库

git clone https://github.com/lisong/code-push-server.git

cd code-push-server && npm install

code-push-server推荐使用npm安装。

npm install code-push-server@latest -g

npm的方式需要安装pm2(PM2 是一个带有负载均衡功能的 Node 应用进程管理器。)

npm i -g pm2

3.修改 code-push-server config文件

源码位置:

 npm config.js文件路径:

/usr/local/lib/node_modules/code-push-server/config/config.js

windows默认为用户文件夹下

 C:\Users\UserName\AppData\Roaming\npm\node_modules\code-push-server\config\config.js

 3.1 修改db中的数据库信息, 如下:

// Config for database, only support mysql.
  db: {
    username: process.env.RDS_USERNAME || "root",
    password: process.env.RDS_PASSWORD || "root",
    database: process.env.DATA_BASE || "codepush",
    host: process.env.RDS_HOST || "127.0.0.1",
    port: process.env.RDS_PORT || 3308,
    dialect: "mysql",
    logging: false,
    operatorsAliases: false,
  },

 

3.2 修改local对象的下载地址为本机(或服务器的ip地址)和StorageDir
// Config for local storage when storageType value is "local".
  local: {
    // Binary files storage dir, Do not use tmpdir and it's public download dir.
    storageDir: process.env.STORAGE_DIR || "D:/Publish/codePushStorage",//修改这里
    // Binary files download host address which Code Push Server listen to. the files storage in storageDir.
    downloadUrl: process.env.LOCAL_DOWNLOAD_URL || "http://222.111.1.77:3000/download",//修改这里
    // public static download spacename.
    public: '/download'
  },
 
3.3 修改jwt对象下的tokenSecret

打开 https://www.grc.com/passwords.htm, 复制其生成的随机字符串作为秘钥即可。

jwt: {
    // Recommended: 63 random alpha-numeric characters
    // Generate using: https://www.grc.com/passwords.htm
    tokenSecret: process.env.TOKEN_SECRET ||'dCJoA5FXuLN0VhsILzPsFqApYqHo4xWD1jjupTd1KQl8GiEaaLI8sJ0CTh5POrG'
  },
3.4  修改dataDir

根据local对象下的storageDir路径, 创建相应的文件夹。
创建common对象下的dataDir文件夹

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 || "X:/codePushStorage",//修改这里
    // storageType which is your binary package files store. options value is ("local" | "qiniu" | "s3"| "oss" || "tencentcloud")
    storageType: process.env.STORAGE_TYPE || "local", //修改这里
// 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, },
4.初始化数据库信息
源码的方式:
./bin/db init --dbhost "your mysql host" --dbport "your mysql port"  --dbuser "your mysql user" --dbpassword "your mysql password"

npm的方式

code-push-server-db init --dbhost "your mysql host" --dbport "your mysql port"  --dbuser "your mysql user" --dbpassword "your mysql password"

5.启动服务

源码的方式:
npm start

npm的方式:这种方式没有pm2稳定

code-push-server

配置 pm2

保存文件 process.json到自己的文件夹如:X:\filePath\process.json

下面配置项必须修改:

  • script  npm安装值位 code-push-server,源码使用"源码目录"/bin/www
  • CONFIG_FILE  上面的config.js 路径,使用绝对路径.

START SERVICE

$ pm2 start X:\filePath\process.json

RESTART SERVICE

$ pm2 restart X:\filePath\process.json

STOP SERVICE

$ pm2 stop X:\filePath\process.json

CHECK SERVICE IS OK

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

return httpCode 200 OK

查看 pm2 logs

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

 

修改端口号

在 /bin/www 文件 修改下面 默认为 3000 修改为 3890

/**

Get port from environment and store in Express.
*/
var port = normalizePort(process.env.PORT || '3890');
log.debug('port ' + port);

 

UPGRADE 升级

from npm package

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

 

from source code

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

 

 

 

posted @ 2020-12-04 14:29  晓燚缺  阅读(322)  评论(0编辑  收藏  举报