React-Native 热更新code-push-server小白一步步手动搭建

3,947 阅读3分钟

前言

code-push首次热更新包体积从之前20mb优化至1.3mb,发现二次热更时可以继续diff jsbundle,由于需要修改数据库is_use_diff_text为1,不能在当前线上服务器进行测试,想着自己有台闲置的服务器就拿来试一下。后面会新增首次热更包体积优化文章包括自动化脚本。

准备工作安装 MySQL

添加 MySQL Yum Repository选择对应的版本进行下载

// 查看自己CentOS版本
cat /etc/redhat-release
// CentOS Linux release 7.6.1810 (Core)

// 例如CentOS 7当前在官网查看最新Yum源的下载地址为
wget https://dev.mysql.com/get/mysql80-community-release-el7-3.noarch.rpm

// 安装MySQL源
sudo rpm -Uvh platform-and-version-specific-package-name.rpm

sudo rpm -Uvh mysql80-community-release-el7-3.noarch.rpm

检查是否安装成功

yum repolist enabled | grep "mysql.*-community.*"

// 可以看到mysql相关资源
// !mysql55-community/x86_64        MySQL 5.5 Community Server                  427

选择MySQL版本

使用MySQL Yum Repository安装MySQL,默认会选择当前最新的稳定版本,例如通过上面的MySQL源进行安装的话,默安装会选择MySQL 8.0版本,如果就是想要安装该版本,可以直接跳过此步骤,如果不是,比如我这里希望安装MySQL5.7版本,就需要“切换一下版本”:

// 查看当前MySQL Yum Repository中所有MySQL版本(每个版本在不同的子仓库中)
yum repolist all | grep mysql

// 切换版本
sudo yum-config-manager --disable mysql80-community
sudo yum-config-manager --enable mysql57-community

// 检查当前启用的MySQL仓库
yum repolist enabled | grep mysql

安装、启动MySQL

// 安装
sudo yum install mysql-community-server

// 启动
sudo systemctl start mysqld.service

// 查看状态
sudo systemctl status mysqld.service

// 停止
sudo systemctl stop mysqld.service

// 重启
sudo systemctl restart mysqld.service

修改密码

初次安装mysql,root账户没有密码

// 用帐号登录mysql
mysql -uroot -p
// 改变用户数据库
mysql> use mysql
// 修改密码,记得密码要用password()函数进行加密,一定不要忘记!!!
mysql> update user set password=password('qwe123') where user='root';
// 刷新权限表
mysql> flush privileges;
// 退出mysql
mysql> quit
// 对mysql进行重启
service mysqld restart;

// 查看端口号后面会使用到
mysql> show global variables like 'port';

允许root远程访问

修改数据库会用上

mysql> GRANT ALL PRIVILEGES ON *.* TO 'root'@'%' IDENTIFIED BY 'qwe123' WITH GRANT OPTION;
mysql> FLUSH PRIVILEGES;

安装 node pm2

node 推荐使用nvm进行管理 传送门

pm2 的基本使用

// 安装
npm i -g pm2

// start命令启动对应的node server文件
pm2 start process.json

// 重新启动
pm2 restart process.json

// 停止
pm2 stop process.json

// 查看详细状态信息
pm2 show (appname|id)

// 查看所有启动的进程列表
pm2 list

// 监控每个 node 进程的 cpu 和内存使用情况
pm2 monit

// 显示所有进程的日志信息
pm2 logs

开始 code-push-server

clone 代码

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

初始化数据库

./bin/db init --dbhost “您的mysql主机” –dbport “您的mysql端口”   –dbuser “您的mysql用户” –dbpassword “您的mysql密码”

配置代码推送服务器

cd ./config/config.js
vim config.js
  • local.storageDir change to your directory,make sure have read/write permissions.
  • local.downloadUrl replace 127.0.0.1 to your machine ip.
  • common.dataDir change to your directory,make sure have read/write permissions.
  • jwt.tokenSecret get the random string from www.grc.com/passwords.h…, and replace the value INSERT_RANDOM_TOKEN_KEY.
  • db config: username,password,host,port change your own's

配置pm2

cd ./docs/process.json
vim process.json
  • script if you install code-push-server from npm use code-push-server,or use "your source code dir"/bin/www
  • CONFIG_FILE above config.js file path,use absolute path.
  • 参考如下
{
    "apps" : [
        {
            "name"      : "code-push-server",
            "max_memory_restart" : "300M",
            "script"    : "/var/www/code-push-server/bin/www",
            "instances"  : "max", //开启实例数量,max为cpu核数
            "exec_mode"  : "cluster", //集群模式,最大提升网站并发
            "env" : {
                "NODE_ENV" : "production",
                "PORT" : 3000,
                "CONFIG_FILE" : "/var/www/code-push-server/config/config.js"
            }
        }
    ]
}

启动服务

cd ./docs
pm2 start process.json

// 检查服务
curl -I http://YOUR_CODE_PUSH_SERVER_IP:3000/

合集

react-native-code-push首次增量热更优化

react-native-code-push非首次热更bundle增量

参考

code-push-server manual operation

CentOS安装MySQL详解

CentOS 如何修改mysql 用户root的密码