# React Native + 热更新(Code Push
) 部署文档
# 1.解决什么问题:
1)web
端与原生端打包解偶,web
端打包可以不依赖原生一起打包。
2)web
端与原生部分联调问题,不需要再将 bundle
包传输给原生运行,在原生已支持对应功能 api
的情况下 web
端可自行下载安装安装包,将调试代码打包以热更新的方式推到 app
上,并在 Android Studio
或 Xcode
的上查看调试日志。
# 2.服务器部署
创建并连接ECS
实例
# 一、部署Node.js
环境
使用 git
将源码克隆到本地的~/.nvm
目录下,并检查最新版本。
下载 Node.js
安装包。
wget https://nodejs.org/dist/v6.9.5/node-v14.0.0-linux-x64.tar.xz
# 解压
tar xvf node-v6.9.5-linux-x64.tar.xz
创建软链接,您就可以在任意目录下直接使用node
和npm
命令。
ln -s /root/node-v6.9.5-linux-x64/bin/node /usr/local/bin/node
ln -s /root/node-v6.9.5-linux-x64/bin/npm /usr/local/bin/npm
# 查看node、npm
版本。
node -v
npm -v
如果需要将该软件安装到其他目录(例如:/opt/node/
)下,请进行如下操作:
mkdir -p /opt/node/
mv /root/node-v6.9.5-linux-x64/* /opt/node/
rm -f /usr/local/bin/node
rm -f /usr/local/bin/npm
ln -s /opt/node/bin/node /usr/local/bin/node
ln -s /opt/node/bin/npm /usr/local/bin/npm
# 安装mysql
wget https://dev.mysql.com/get/Downloads/MySQL-5.7/mysql-5.7.24-linux-glibc2.12-x86_64.tar.gz
下载完
tar xzvf mysql-5.7.24-linux-glibc2.12-x86_64.tar.gz
移至/usr/local/
mv mysql-5.7.24-linux-glibc2.12-x86_64 /usr/local/
# 改名
cd /usr/local/
mv mysql-5.7.24-linux-glibc2.12-x86_64 mysql
# 在/usr/local/mysql
目录下创建data
目录
mkdir /usr/local/mysql/data
# 更改mysql
目录下所有的目录及文件夹所属的用户组和用户,以及权限
chown -R mysql:用户名 /usr/local/mysql
chmod -R 755 /usr/local/mysql
# 安装链接库文件
sudo apt-get install libaio-dev
You need to be root to perform this command 怎么解决:
切换到root
用户
su
回车输入密码
刚安装完,没有设置root
用户密码:sudo passwd
,然后会让你输入当前用户密码,输入完后再输入root
用户密码就可以了
编译安装并初始化mysql
,务必记住初始化输出日志末尾的密码(数据库管理员临时密码)
root@localhost: 7Pa,9hIokNRe
cd /usr/local/mysql/bin
./mysqld --initialize --user=mysql --datadir=/usr/local/mysql/data --basedir=/usr/local/mysql
输入vi /etc/my.cnf
,编辑配置文件my.cnf
,添加配置如下:
[mysqld]
datadir=/usr/local/mysql/data
port=3306
sql_mode=NO_ENGINE_SUBSTITUTION,STRICT_TRANS_TABLES
symbolic-links=0
max_connections=600
innodb_file_per_table=1
lower_case_table_names=1
# 启动mysql
服务器
/usr/local/mysql/support-files/mysql.server start
如果出现如下提示信息
Starting MySQL... ERROR! The server quit without updating PID file
解决办法:
# 查询服务
ps -ef|grep mysql | grep -v grep
ps -ef|grep mysqld | grep -v grep
# 结束进程
kill -9 PID
# 启动服务
/usr/local/mysql/support-files/mysql.server start
# 添加软连接,并重启mysql
服务
ln -s /usr/local/mysql/support-files/mysql.server /etc/init.d/mysql
ln -s /usr/local/mysql/bin/mysql /usr/bin/mysql
service mysql restart
# 登录 mysql,修改密码(密码为步骤 5 生成的临时密码)
mysql -u root -p
Enter password:
mysql>set password for root@localhost = password('yourpass');
# 开放远程连接
mysql>use mysql;
msyql>update user set user.Host='%' where user.User='root';
mysql>flush privileges;
# 设置开机自动启动
- 1、将服务文件拷贝到
init.d
下,并重命名为mysql
[root@localhost /]# cp /usr/local/mysql/support-files/mysql.server /etc/init.d/mysqld
- 2、赋予可执行权限
[root@localhost /]# chmod +x /etc/init.d/mysqld
- 3、添加服务
[root@localhost /]# sysv-rc-conf mysqld on
- 4、显示服务列表
[root@localhost /]# sysv-rc-conf --list
# 部署 code-push
git clone http://172.16.6.11:8050/zhangyaohuang/work-hot-update.git
cd work-hot-update
# 修改 code-push-server 仓库配置
vim config/config.js
# 配置数据库
// Config for database, only support mysql.
db: {
username: process.env.RDS_USERNAME || "root",
password: process.env.RDS_PASSWORD || "123456",
database: process.env.DATA_BASE || "codepush",
host: process.env.RDS_HOST || "127.0.0.1",
port: process.env.RDS_PORT || 3306,
dialect: "mysql",
logging: false,
operatorsAliases: false,
},
# 修改 local
对象的下载地址为本机(或服务器的 ip
地址)
local: {
// Binary files storage dir, Do not use tmpdir and it's public download dir.
storageDir: process.env.STORAGE_DIR || "/home/ubuntu/codepush/storage",
// Binary files download host address which Code Push Server listen to. the files storage in storageDir.
downloadUrl: process.env.LOCAL_DOWNLOAD_URL || "http://172.16.6.190:3000",
// public static download spacename.
public: ''
},
common: {
//......//
dataDir: '/home/ubuntu/codepush/data',
//......//
},
# 初始化数据库信息
./bin/db init --dbhost localhost --dbuser root --dbpassword 数据库密码
# 安装依赖
npm install
# 安装完成启动服务
npm run dev