关于APP热更新,如何在Liunx服务器上搭建Code Push Server

关于APP热更新,如何在Liunx服务器上搭建Code Push Server

公司的RN开发要搞热更新,所以要在服务器上搭建Code Push Server,自己以前也没搭过,所以也在网上查了很多资料,中间遇到很多问题,所以记录一下,防止以后再用。
基本上参考这个帖子上这位大哥的步骤,但是中间遇到很多问题,主要是解决这些问题。
https://hujiahua.site/?p=238

首先呢,公司项目的服务器是CentOS release 6.9在这里插入图片描述

第一步,在服务器上新建Code Push Server要用的文件夹,并从git上下载他的包安装

mkdir code-push-server && cd code-push-server

在这里插入图片描述
在这里插入图片描述
我是直接在/opt/下面新建的目录的。
然后,下载包,

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

下载完之后,在通过yarn或者npm install安装。

yarn  或者  npm install

这块呢,出现了好几个问题,服务器上没安装git要安装,通过yarn命令安装要安装yarn软件, 或者npm要安装node.js。

  1. 安装git
    这块可以参考这位大哥的帖子,linux安装git方法
    他里面更新服务器的操作,我可以不去更新,因为我的服务器版本本身就比较高。
    1.用git --version命令检查是否已经安装

    2.yum -y install git
    但是yum源中安装的git版本是1.7.1,Github等需要的Git版本最低都不能低于1.7.2 。所以这样版本太低了。

    3.安装依赖的包
    yum -y install curl-devel expat-devel gettext-devel openssl-devel zlib-devel gcc perl-ExtUtils-MakeMaker

    4.下载git源码并解压
    wget https://github.com/git/git/archive/v2.3.0.zip
    unzip v2.3.0.zip
    cd git-2.3.0
    (这块使用unzip命令可能会提示没有此命令,所以需要安装unzip软件)
    下面是安装方法:命令: yum list | grep zip/unzip #获取安装列表
    安装命令: yum install zip #提示输入时,请输入y;
    安装命令:yum install unzip #提示输入时,请输入y;

    5.编译安装:
    将其安装在“/usr/local/git”目录下。
    make prefix=/usr/local/git all
    make prefix=/usr/local/git install
    因为服务器时间不对编译的过程中报错如下图,使用ntpdate自动校正系统时间。报错“Writing perl.mak for Git make[2]: *** [perl.mak] Error 1”,请重启apache服务,service httpd restart。

    6.编译完成之后使用git --version 查看git版本,居然还是1.7.1,这是因为它默认使用了"/usr/bin"下的git。
    你可以用下面的命令查看git所在的路径:whereis git

    git: /usr/bin/git /usr/local/git /usr/share/man/man1/git.1.gz
    

    7.我们要把编译安装的git路径放到环境变量里,让它替换"/usr/bin"下的git。为此我们可以修改“/etc/profile”文件(或者/etc/bashrc文件)。(我是通过Xftp修改的profile文件)
    vim /etc/profile
    然后在文件的最后一行,添加export PATH=/usr/local/git/bin:$PATH,然后保存退出。

    8.不想重启系统,使用source命令立即生效
    使用source /etc/profile
    然后再次使用git --version查看git版本,发现输出2.3.0,表明安装成功。

  2. 安装完git后,我是通过npm安装的,所以,要安装Node.js.
    这块可以参考这位大哥的帖子,Linux系统安装Nodejs

    先去官网下载安装包,下载地址:http://nodejs.cn/download/在这里插入图片描述
    将安装包上传到指定位置(我放到:/root目录),并解压

	tar -xvf node-v10.6.0-linux-x64.tar.xz
	重命名文件夹
	mv node-v10.6.0-linux-x64 nodejs
	通过建立软连接变为全局
	ln -s /usr/local/application/nodejs/bin/npm /usr/local/bin/
	ln -s /usr/local/application/nodejs/bin/node /usr/local/bin/

最后检查是否安装成功,命令:node-v
这块我报了很多错,
libstdc++.so.6: version’GLIBCXX_3.4.20’ not found
version `GLIBC_2.14’ not found
很多个GCC编辑器版本缺失,
这块看了另外一个帖子,https://www.cnblogs.com/kumufengchun/p/10455537.html

在网上找到了高级的GCC版本替换掉就行,libstdc++.so.6.0.26
我们把上面这个文件下载下来拷贝到/usr/lib64目录下(或者直接Xftp放进服务器),
然后删除libstdc++.so.6符号连接,rm libstdc++.so.6
新建里符号连接,ln -s libstdc++.so.6.0.17 libstdc++.so.6。再次查看就没有问题了。

我们再次使用node -v 发现还会报错,version ‘GLIBC_2.14’ not found
运行:strings /lib64/libc.so.6 |grep GLIBC_ 。发现版本很低,多个版本没有,我们直接安装高级版本其他低级的就会有了。
下载:wget http://mirrors.ustc.edu.cn/gnu/libc/glibc-2.18.tar.gz
解压:tar -zxvf glibc-2.18.tar.gz
进入解压文件夹,创建文件夹build:

mkdir build
cd build

运行configure配置,make,sudo make install

../configure --prefix=/usr
make -j4
sudo make install

再次node -v,已经安装成功
在这里插入图片描述
然后,我们通过npm命令安装。

第二步,配置Code Push Server

  1. 初始化数据库
cd code-push-server
./bin/db init --dbhost localhost --dbuser root --dbpassword 'yourPWD'

这块yourPWD,是你的数据库密码,我的数据库是mysql。他的目的就是会在你的数据库中创建一个 database 名字是 codepush。
在这里插入图片描述

  1. 修改配置文件code-push-server/bin/db
cd code-push-server
vim /bin/db

我这块都是用Xftp打开文件编辑的
修改匹配的数据库密码:
在这里插入图片描述
修改配置文件code-push-server/config/config.js
修改匹配密码和你的数据库密码一致
在这里插入图片描述
修改储存目录和下载地址
在这里插入图片描述
配置jwt密钥
先去https://www.grc.com/passwords.htm这里选择
63 random alpha-numeric characters (a-z, A-Z, 0-9):的密钥,并设置在如下
在这里插入图片描述
storageDir修改成你实际的目录。事先要创建这个目录
downloadUrl需要换成服务器的IP
访问 https://www.grc.com/passwords.htm ,生成一个token

上面配置储存目录一定要正确,不然会面启动会报错的,还有下载地址记得配端口号,我这块配置完后,刚开始无法访问,最后发现,是服务器3000端口未开放,然后去阿里云后台把3000端口打开之后好了。

第三步,启动服务

进入code-push-server文件夹,运行./bin/www
测试启动成功。
重新命名www文件,使用pm2启动,这样可以保持后台运行。
重命名mv ./bin/www ./bin/yourName
启动pm2 start ./bin/yourName
然后,我们访问服务器3000端口,
在这里插入图片描述
页面弹出登陆热更新服务器就OK啦。

==================================================================================
上面这块使用到了pm2命令,如果没有安装pm2,则会提示pm2: command not found
下面说下pm2的安装,npm install pm2 -g
在这里插入图片描述
安装完后,执行pm2 list,则会提示-bash: pm2: command not found
说明,没有配制到全局,虽然安装到全局,不知道为毛,linux下不像windows下能自动创造一个环境变量去实现我们的全局。所以我们需要创建一个linux下的软连接。
创建软连接:在linux上的设置软连接相当于是windows下的配制环境变量一个道理,只是这里用了命令完成的操作。这里我们就开始为pm2创建软连接,这里首先要明确的是,我们要知道谁和谁去连接,问题来了?知道是哪个和哪个连接吗?好了,答案是:我们的linux下的全局$PATH和我们pm2的安装路径。那么我们如何知道他们的路径分别是哪里呢?
找到全局环境PATH路径:echo $PATH
可以看到我们的环境变量:/usr/local/git/bin:/usr/root/jdk1.7.0_76/bin:/root/jdk1.7.0_76/jre/bin:/usr/local/sbin:/usr/local/bin:/sbin:/bin:/usr/sbin:/usr/bin:/root/bin
这里我们用/usr/local/bin,以:隔开的路径。
找到pm2的安装路径,上图红框中的路径就是我们pm2的安装路径,
如果没找到或者没看见,可以用whereis 或find 命令去查找。
这一步很重要,ln -s /root/nodejs/lib/node_modules/pm2/bin/pm2 /usr/local/bin/
执行完之后,我们使用pm2 list再看下,出现下图则说明安装成功了,并且可以随处访问pm2。
在这里插入图片描述
a=================================================================================

第四步,客户端使用

配置 code-push login http://配置的ip:3000/
登陆默认账号密码:admin,123456
注册你的App,获得到ProductionStagingkey
注册androidcode-push app add wyApp.android android react-native
注册ioscode-push app add wyApp.ios ios react-native

RN项目配置:
重新配置android/app/build.gradle中的key
打开MainApplication.java
添加Code Push Server地址
然后new CodePush(BuildConfig.CODEPUSH_KEY, getApplicationContext(), BuildConfig.DEBUG,"https://配置的IP:3000"),

  • 1
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值