RAP2接口管理工具环境配置

使用nginx代理将前端后端完全分离的想法是C/S框架的影响,那么我真正觉得这种设计思路非常好的原因就是RAP2,这个东西是一个接口管理工具,我们在公司服务器上面搭建了一个之后任何使用这种设计方式软件或系统都必须通过RAP2完善接口设计之后再实际进行编码,它的存在使得后端开发,测试,前端编写都有一个可以参考的模板,而且非常专业不仅仅方便同时可以配置简单的默认返回用于在前端开发,级别是在后端还没有开始写的情况之下,RAP2中的API都可以做到接口的基础返回,所以它还可以这样使用。

RAP2是淘宝的RAP升级版由原班人马打造也就是阿里内部使用的接口管理工具,它有一个线上版,前端基于OSS静态服务器,后端基于nodejs分离是为了分离部署,效率很高,但是node的执行效率差了一点。

配置rap2有两种方法第一是使用docker来进行配置,这个就很简单了,但是我在centos 7.4搭建yum库中的docker之后出了问题,服务器数据有问题,这个东西应该是拿下来就可以用的,不知道为什么,所以我走的是hard way,从基础环境开始一步一步配置。

部署

首先rap2是完整前后分离的所以部署便分为前端部署与后端部署。

前端为:rap2-dolores https://github.com/thx/rap2-dolores.git 。

后端为rap2-delos https://github.com/thx/rap2-delos.git 。

我的流程是从后端开始配置

后端 rap2-delos

后端的核心服务是redis提供的,在配置的过程之中分为两种方式,开发模式与发布模式,这个没有什么说开发模式就是所谓的debug配置,会保存所有的缓存文件、临时文件,没有什么必要我们仅仅是使用它而已所以就按照发布模式开配置就可以了。服务器的环境要求为:

  • Node.js 8.9.4+
  • MySQL 5.7+
  • Redis 4.0+

本来按照github上面那个官方说明我们的安装配置应该就是几分钟的事情很简单但是麻烦的东西是nodejs 8.9。这个东西可以说把这个几分钟就可以搞定的东西我活活搞了近一下午。原因是centos的库是非常古老的开源社区虽然免费万岁但是也意味着维护这些东西是没有任何商业价值的,换言之没有对应金钱收入没有谁会非常积极保存更新,结果就是nodejs在centos最新的版本都只有5.6这就意味着官方库的node版本不能满足我们的要求,但是你只有用过centos你就会知道其实很多东西版本都是很旧的我们一般都手动编译安装。我就是这么想的,这个杰宝很简单吗拉个源码configure一下、make一下、make install一下就完了。但是最严重的问题这个时候才出现centos的库其实已经老到过分的地步了,make指令大家都知道就是gcc的编译指令本质上C/C++的编译器,还好我知道编译原理,不然问题都分析不出来。我去官网拉了一个node的8.9.4版本之后make一些就懵逼了,gcc版本太老(错误是: WARNING: C++ Compiler too old, need g++ 4.9.4 or clang++ 3.4.2 (CXX=g++))。这就意味这不是简单配置一个静态库就可以了而是整个编译器都不行了。我是搞windows开发的在windows上面这个就意味着你的MSVC版本不对,不要搞错了不是VC++版本不对而是MSVC版本不对,基本上代表你要从新装一个VS,而且在linux里面不是安装而是编译一个VS,对事情就是这么严重。在centos 7上面yum提供的gcc是4.8.5的而安装编译nodejs8.7.4至少需要的版本是gcc 4.9.4,这就没有什么办法了只能手动编译gcc新版了。

上面就是我安装的心路历程,我最后安装的gcc版本是gcc 5.5.0,这个版本是stackoverflow一个外国佬说的,他说他这样搞可以了那我就直接选这个版本安装的。

所以服务器的真正要求是:

  • Node.js 8.9.4+
  • MySQL 5.7+
  • Redis 4.0+
  • GCC 5.5+

编译安装GCC

第一步是下载: https://ftp.gnu.org/gnu/gcc/ 这个是官方的下载地址,选好版本就可以直接开始了,我选的是5.5.0

cd /usr/local/src
wget https://ftp.gnu.org/gnu/gcc/gcc-5.4.0/gcc-5.4.0.tar.bz2
tar -jxvf gcc-5.4.0.tar.bz2

第二部下载依赖项:在解压后的目录里面去

./contrib/download_prerequisites

第三部就是编译安装:没有cmake这些东西所以还是要创建一个编译目录然后进去make就可以了,make完了就安装make install。

make起码要等一个小时,我在编译的时候把虚拟机cpu加到8核了,make -j8开8个线程编译都还是用了1小时。。。。。。。

编译安装其他环境

在安装之前有一个问题,由于GCC这个东西是系统非常重要的工具你install之后还是有问题,有核心库仅仅在gcc目录而不是系统依赖项,所以我们要将对应的运行库放到系统系统运行库的位置

找到所有的C++标准库

find / -name "libstdc++.so*" 

把最新的libstdc++.so.6.0.21复制到/usr/lib64,第一个路径就是上面找到的库的路径

cp /usr/local/src/gcc-5.4.0/gcc-build-5.4.0/stage1-x86_64-unknown-linux-gnu/libstdc++-v3/src/.libs/libstdc++.so.6.0.21 /usr/lib64

删除老版本那个JB软连接

cd /usr/lib64
rm -rf libstdc++.so.6
ln -s libstdc++.so.6.0.21 libstdc++.so.6

现在就可以安装node,其实node还是一点都不事多很简单常规安装就可以了没有一点配置 简单来说就是下载、解压、进目录 ./configure ,make ,make install就可以了。

然后mysql就不用说什么直接下源码编译5.7这个版本,centos 7 依旧没有。Reids也是没有4.0,centos迟早药丸还是一样的直接编译安装就可以了。

配置rap2-delos

这个就简单了,更具git上面的指示直接来就可以了。

启动redis-server

redis-server

后台执行可以使用nohup或pm2,这里推荐使用pm2,下面命令会安装pm2,并通过pm2来启动redis缓存服务

npm install -g pm2
npm run start:redis

先创建创建数据库

mysql -e 'CREATE DATABASE IF NOT EXISTS RAP2_DELOS_APP DEFAULT CHARSET utf8 COLLATE utf8_general_ci'

初始化

npm install

安装 && TypeScript编译

npm install -g typescript
npm run build

初始化数据库表

npm run create-db

执行mocha测试用例和js代码规范检查

npm run check

启动开发模式修改/config/config.prod.js中的服务器配置,配置对应的数据库连接

npm start

然后就ok了,直接访问redis访问出来那个端口就可以了,记着把防火墙端口开开。

前端 rap2-delos

前端没有任何难度直接编译就是了用npm,需要配置一下地址/src/config/config.prod.js,修改后端服务器的地址

npm run build

开启nodeserver监听80端口

serve -s ./build -p 80

可以直接访问了

RAP2接口管理工具环境配置》有4条留言