前言
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增量