CodePush(搭建自己的推送服务)

这篇文章主要是作为我另一篇文章的搭配使用,codepush用微软的固然方便,但是总是会有需要自定义的时候,这就需要自己搭建推送服务端了,话不多少,进入正题。

参考:

code-push-server

环境:

Linux CentOS 7.5 + mysql80-community-release-el7-1.noarch.rpm + node.js 10.14.0 + code-push-server 0.5.2
由于这是在虚拟机上操作,Linux都是刚安装的,因此从零开始将步骤记录下来
Linux安装不写了,附上我用的os下载地址:http://mirrors.aliyun.com/centos/7.5.1804/isos/x86_64/CentOS-7-x86_64-Everything-1804.iso
系统跑起来后,发现连wget下载指令都跑不了,先用yum -y install wget解决一下
安装git

yum install git-core

安装vim

yum -y install vim

安装screen(方便多屏操作,这里暂时用不上)

yum install screen

然后自然是把MySQL官网的下载地址拿过来执行下载(Linux下载文件指令:"wget -P" + 存放目录 + 下载地址):

wget https://repo.mysql.com//mysql80-community-release-el7-1.noarch.rpm

rpm文件很小,下载好之后配置好yum源

rpm -ivh mysql80-community-release-el7-1.noarch.rpm

这时候看看哪些版本是可用的(通过命令vi /etc/yum.repos.d/mysql-community.repo进入编辑格式,将你需要的版本enabled改为1,其它的版本改为0,当所有版本enabled=1时,默认启动最新版本的MySQL)
这里装的是5.7版本

yum repolist all | grep mysql

然后开始安装,安装过程中会需要确认安装内容,输入y回车即可

yum install mysql-community-server

安装完成之后启动服务

service mysqld start

然后查看服务状态

service mysqld status
mysql服务已启动

MySQL初始会生成一个随机密码,这时候通过日志查看随机密码

grep "temporary password" /var/log/mysqld.log

接下来登录MySQL

mysql -u root -p

输入密码登录成功后修改一下密码

ALTER USER 'root'@'localhost' IDENTIFIED BY 'Test.1234';

然后下载node.js、解压、删除压缩包

cd /
wget https://nodejs.org/dist/v10.14.0/node-v10.14.0-linux-x64.tar.xz
tar -xvf node-v10.14.0-linux-x64.tar.xz -C /
rm -rf node-v10.14.0-linux-x64.tar.xz
下载编译好的文件

建立软连接,建立完查看版本号试试是否成功

ln -s /node-v10.14.0-linux-x64/bin/npm /usr/local/bin/
ln -s /node-v10.14.0-linux-x64/bin/node /usr/local/bin/
node -v
查看node版本

code-push搭建

安装PM2

npm i -g pm2
ln -s /node-v10.14.0-linux-x64/lib/node_modules/pm2/bin/pm2 /usr/local/bin

这里有两种方法(两种方法后面会有一点不一样):

1、直接安装code-push-server,修改配置文件

npm install code-push-server -g
cd /node-v10.14.0-linux-x64/lib/node_modules/code-push-server/config
vim config.js

2、将code-push代码下载到本地,修改配置文件

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

配置文件修改说明:

修改数据库配置

初始化数据库之前,需要修改一下配置文件config.js,首先把数据库配置修改一下(其实这里只修改了密码),然后需要修改local.storageDir、local.downloadUrl、common.dataDir、jwt.tokenSecret几个值分别说明一下:
1、local.storageDir:修改为自己的路径,确保有读/写权限(图中路径是提前创建好的文件夹)
2、local.downloadUrl:文件下载地址 CodePush Server 地址 + '/download' download对应app.js里面的地址(这里只修改了IP地址)
3、jwt.tokenSecret:登录jwt签名密钥,从https://www.grc.com/passwords.htm获取随机字符串,并替换值INSERT_RANDOM_TOKEN_KEY
4、common.dataDir:修改为自己的路径,确保有读/写权限(图中路径是提前创建好的文件夹)

修改config.js配置

初始化code-push-server的MySQL数据库

cd ../
./bin/db init --dbhost "127.0.0.1" --dbport "3306"  --dbuser "root" --dbpassword "Test.1234"

创建process.json配置文件

vim process.json

代码如下(其中script是code-push-server的代码路径,CONFIG_FILE则使用刚才修改的config.js配置文件):

{
    "apps" : [
        {
            "name"      : "code-push-server",
            "max_memory_restart" : "300M",
            "script"    : "bin/www",
//如果是使用方法二,也就是从github直接下载源码安装的话,script使用安装路径下的bin/www
            "instances"  : "max", //开启实例数量,max为cpu核数
            "exec_mode"  : "cluster", //集群模式,最大提升网站并发
            "env" : {
                "NODE_ENV" : "production",
                "PORT" : 3000,
                "CONFIG_FILE" : "/node-v10.14.0-linux-x64/lib/node_modules/code-push-server/config/config.js"
//如果是使用方法二,也就是从github直接下载源码安装的话,CONFIG_FILE使用安装路径下的config/config.js
            }
        }
    ]
}

添加cors库(解决跨域访问)

npm install cors

编辑app.js,引用cors库

vim app.js

增加以下代码引用cors

var cors = require('cors')
app.use(cors()); 

列一下pm2几个命令:

pm2 start process.json // 开启
pm2 restart process.json //重启
pm2 stop process.json // 停止
// pm2查看日志
pm2 ls
pm2 show code-push-server
tail -f "output file path"
启动code-push-server

再用命令验证一下页面

curl -I http://192.168.216.128:3000/
验证页面

注意:

按照步骤走到这里会发现打不开页面,因为虚拟机中的Linux系统并没有开发端口,需要开放端口

firewall-cmd --zone=public --add-port=3000/tcp --permanent
firewall-cmd --reload
firewall-cmd --list-port
Linux开放端口

效果图:

默认账号admin,密码123456


登录页面

登录token

更新code-push-server

// 方法一:通过npm直接安装code-push-server
npm install -g code-push-server@latest
cd /node-v10.14.0-linux-x64/lib/node_modules/code-push-server
./bin/db upgrade --dbhost "127.0.0.1" --dbport "3306"  --dbuser "root" --dbpassword "Test.1234"
// 更新数据库
pm2 restart code-push-server # restart service

// 方法二:从github直接下载源码安装code-push-server

cd /path/to/code-push-server

git pull --rebase origin master

./bin/db upgrade --dbhost "127.0.0.1" --dbport "3306"  --dbuser "root" --dbpassword "Test.1234"

// 更新数据库
pm2 restart code-push-server # restart service

App端

Ionic具体可参考原生安卓集成Ionic3+CodePush,react native资料稍微多一点就网上自己找吧

code-push-server搭建完成运行起来了,客户端这里通过code-push-cli去管理code-push-server。

code-push login http://192.168.216.128:3000

// 修改管理员密码 示例:
curl -X PATCH -H "Authorization: Bearer mytoken" -H "Accept: application/json" -H "Content-Type:application/json" -d '{"oldPassword":"123456","newPassword":"654321"}' http://192.168.216.128:3000/users/password

App端配置config.js


    
    


    
    

通过Web管理code-push-server

不想用code-push-cli可以使用web管理code-push-server。
修改code-push-server的配置,在config.js中的common中加入web的地址:

"codePushWebUrl":"http://192.168.216.128:3001"

把code-push-web源码下载到本地,安装后修改配置(正式线与测试线的地址)

cd /
git clone https://github.com/lisong/code-push-web.git
cd code-push-web
npm install
vim ./src/config.js
code-push-web配置

运行:

// 测试直接运行即可
npm start

// 正式发布先build打包
npm run build --release
cd build
npm install
node server.js

code-push常用命令

code-push login http://192.168.216.128:3000
code-push logout 注销
code-push access-key ls 列出登录的token
code-push access-key rm  删除某个 access-key
code-push app add 在账号里面添加一个新的app
code-push app remove 或者 rm 在账号里移除一个app
code-push app rename 重命名一个存在app
code-push app list 或则 ls 列出账号下面的所有app
code-push app transfer 把app的所有权转移到另外一个账号
code-push deployment add     部署一个环境
code-push deployment rm     删除部署
code-push deployment ls     列出应用的部署
code-push deployment ls  -k   查询部署环境的key
code-push deployment history    查看部署的历史版本信息
code-push deployment rename        重命名一个部署

支持的储存模式

local (default) // 默认本地
qiniu (qiniu) // 七牛云存储
s3 (aws) // 亚马逊云存储
oss (aliyun) // 阿里云存储
tencentcloud // 腾讯云存储

你可能感兴趣的:(CodePush(搭建自己的推送服务))