code-push私有部署
本文最后更新于:2023年8月15日 下午
code-push私有部署
由于code-push服务器是在国外,微软这货又不开源服务器代码,国内有些用户更新的时候卡到生活不能自理
万能的git上有个大神搭建了code-push的私服:
https://github.com/lisong/code-push-server/
一开始我在windows上搭建好了,不过真的很麻烦,很多命令windows是不支持的,而且还要开ngrok域名,最好还是在linux上弄吧
按照文档安装还是比较顺利的
1、安装新版的node
linux上的node版本可能是老的,我们去官网https://nodejs.org/en/download/下载linux二进制的对应版本
wget https://nodejs.org/dist/v6.11.3/node-v6.11.3-linux-x64.tar.xz
解压命令
xz -d **** xz文件先解压成tar文件
tar -xvf **** 解压tar文件
然后把node的主文件夹加到环境变量里
echo $PATH
vim ~/.bashrc
在文件末尾加这句:export PATH=/usr/local/node/bin:$PATH
source ~/.bashrc #刷新环境变量
网上有人说只需建立快捷方式在/usr/local/bin文件夹即可,
ln -s /usr/local/node/bin/node /usr/local/bin
因为这个文件夹在path中,亲测可行,但是后面安装nrm,code-push等等全部要快捷方式一遍
TIPS:后面安装cnpm和nrm时需要设置node文件夹的权限,不是很懂这个1,2,4的权限,大力出奇迹 sudo chmod 777 node
2、按照readme文档安装code-push-server
1 |
|
3、配置
vim config/config.js
配置数据库的连接参数
配置热更新压缩包存储方式,common中storageType,默认local,支持七牛云,亚马逊s3,阿里云oss,local
配置local存储的文件夹和下载地址(文件夹需要手动新建 )
common的dataDir好像是增量更新用的,cordova目前还不支持,RN的热更新支持
sudo chmod 777 codepushworkspace
4、插件安装
我这里只能说说cordova的相关内容,等啥时候玩RN再来补充(像我这么懒得,这句话还是当没看见好了)
插件地址:https://github.com/Microsoft/cordova-plugin-code-push
原始的是这样子的:
1 |
|
使用自己服务器的是这样子的:
1 |
|
5、命令行提交版本
基本上和code-push的命令一直,也有不一样的地方
1、登录
1 |
|
2、app的名字
code-push app add ioetest #正常命令
code-push-server的app名字必须包含android或者ios字段(不知道为什么这么玩)
后面还要加上平台和cordova
例如:code-push app add ioeandroid android cordova
code-push app add ioeios ios cordova
6、其他问题
1、用户和密码问题
安装好的code-push-server里面只有一个用户 admin 123456
如果希望新增或者更换用户的话可以使用web版本操作,我没装这个,因为用处不是很大,也有bug,后台返回了更新包的信息,页面却没有显示
由于跨域,web无法正常使用,需要更改server版本的app.js,app.all那里的环境判断注释掉就行了
所以这个web也就操作用户信息还比较有用
也可以直接用命令行改密码:
1 |
|
2、端口和启动问题
默认的server端口是3000,也可以改,在bin/www里面
不过一般我们使用pm2来管理,文件在docs/process.json,只需执行pm2 start process.json即可
里面的命令实际上我并不懂
“instances”:”max”好像是根据cpu核心数量来启动相应多个实例
这里面可以直接改端口号
env里面的config指的是config/config.js
最好是用全路径,这样就可以在根目录建快捷方式了
ln -s /etc/node/lib/node_modules/code-push-server/docs/process.json /process.json
release的时候会报无法解析response的错,但是是成功的,等待code-push-server更新吧
TIPS:pm2 stop是挂起程序,pm2 delete是kill程序
模拟请求
http://ip:port/updateCheck?gldeploymentKey=mbmYKM8kQkAYkhJMQEe358XgfuY74ksvOXqog&appVersion=3.6.26
一段时间遇到一个新问题:
之前搭建的私服停了,然后竟然logout出不来,删除access-key也不行,只能卸载了
目录:/usr/local/lib/node_modules 全名叫code-push-cli
我太天真了,卸载完重装依旧不行
我去lisong大神的code-push-server那里提了个issuse,回复说用户目录下有个隐藏文件
.code-push.config用来保存登录信息的,删除之,done!!!
结论:和wkwebview插件冲突
一年之后我又回来了,捣鼓了好久还是没找到和wkwebview冲突的解决办法,查看了我之前提的issue,竟然有人回答解决了,在code-push-server根目录下app.js中增加了一些http头就好了
x-codepush-plugin-name,x-codepush-plugin-version,x-codepush-sdk-version
我懒得再配置nginx转发了,就注释掉了env的环境判断
学到一个小知识 :pm2查看错误日志 pm2 log servername