Api 文档管理系统 RAP2 环境搭建
RAP2 是采用前后端分离的形式,因此搭建完整的 RAP2 需要 服务端:rap2-delos,客户端:rap2-dolores 同时部署
部署 RAP2 需要亲具有 Node+Linux+MySQL 的运维知识,如果亲对此不是很了解,建议用 http://rap2.taobao.org 线上版本就可以
由于 客户端:rap2-dolores 是建立在 服务端:rap2-delos 基础上,因此先搭建服务端应用
- 截至到 2018-08-01 delos 并没有发布 Tag 版本,应该还处于功能开发前期阶段吧。本教程是在 CentOS 机器上实战部署
- 然而安装部署并不是顺利,因此记录踩过的坑(别问我为啥不用 Docker,因为我司分配的机器无法满足 Docker 的最低内核版本),安装环境介绍:Redis,delos,dolores 均在一台服务器,MySQL 使用已存在的服务
安装基本工具
- Git
- Node 8.9.4+
- Redis 4.0+
- MySQL 5.7+
以上基本工具请根据自身需要,下载对应系统安装包,请自行解决安装配置等问题,这里不做过多说明
Redis 安装可参考 Linux 常用应用安装;
Redis 最好用非安全模式启动
服务端 delos 环境搭建
构建项目
构建项目前,请确认 Node,Redis,MySQL 服务均能正常使用
1 |
git clone https://github.com/thx/rap2-delos.git |
环境配置
创建数据库
Mac or Linux
1
mysql -e 'CREATE DATABASE IF NOT EXISTS RAP2_DELOS_APP DEFAULT CHARSET utf8 COLLATE utf8_general_ci';
Windows 环境
进入 mysql 命令后执行
1
CREATE DATABASE IF NOT EXISTS RAP2_DELOS_APP DEFAULT CHARSET utf8 COLLATE utf8_general_ci;
配置文件
目录:rap2-delos/src/config
文件:config.dev.ts
; 其中 dev,表示开发环境,其他同理
修改:config.dev.ts
文件中db
对象中username
,password
参数与本地或者开发环境的数据库信息匹配
import { IConfigOptions } from "../types";
let config: IConfigOptions = {
version: '2.3',
serve: {
port: 8888 //你自己设置的端口,我是设置的8888
}, keys: ['some secret hurr'],
session: {
key: 'rap2:sess'
},
db: {
dialect: 'mysql',
host: 'localhost', //mysql服务器的ip,这里我是用的本地的mysql
port: 3306,
username: 'root', //mysql用户名
password: 'root', //mysql密码
database: 'RAP2_DELOS_APP', //rap2的后台数据库名
pool: {
max: 5,
min: 0,
idle: 10000
},
logging: false
},
redis:{
host: 'localhost',
port: 6379
}
}
export default config
启动项目
安装项目依赖包
项目根目录下执行
1 |
# 安装项目所需依赖 |
安装 TypeScript 编译包
1 |
npm install typescript -g |
如果下载缓慢,请使用淘宝 npm 镜像
初始化数据库(必须要执行的,生成数据库初始化数据)
项目根目录下执行 (该过程比较慢,耐心等待初始化完成)
1 |
npm run create-db |
编译启动项目(可执行,也可以不执行,知识做代码检查)
执行 mocha 测试用例和 js 代码规范检查
1 |
npm run check |
开发模式
启动开发模式的服务器 监视并在发生代码变更时自动重启 (第一次运行比较慢,请耐心等待)1
npm run dev
生产模式
启动生产模式服务器1
npm start
看到浏览器中如下提示,表示服务端 delos 已经部署成功
RAP2 后端服务已启动,请从前端服务 (rap2-dolores) 访问。 RAP2 back-end server is started, please visit via front-end service (rap2-dolores).
或者在程序控制台出现如下 Log,表示服务端 delos 已经部署成功
常见问题
部署问题
Windows 下执行
npm run build
,提示'rm' 不是内部或外部命令,也不是可运行的程序或批处理文件
原因:
rm
是 Linux 下命令,
解决方法:Windows 系统可使用git bash
打开该项目,执行该命令执行
npm run create-db
命令,提示Unable to connect to the database:{ SequelizeAccessDeniedError: Access denied for user 'root'@'localhost' (using password:NO)}
原因:未修改
rap2-delos/src/config
目录下数据库配置文件,或者是与文件中的数据库信息与之连接的数据库信息不匹配
解决方法:修改config.dev.ts
文件数据库配置信息如果修改正确无误后,执行
npm run create-db
依旧出错,那么查看该项目中是否已经存在dist
目录,如果有,请按照如上修改对应的数据库配置信息- 执行
npm run dev
命令,提示Error: listen EADDRINUSE :::8080
原因:8080 端口被占用
解决方法:杀掉占用 8080 端口的应用 - 执行
npm install
命令,提示hiredis
编译无法通过
原因:无权限操作rap2-delos/node_modules/hiredis
路径
解决方法:sudo npm install
如果提示
sudo: npm: command not found
,请参考 stackoverflow-npm,stackoverflow-node 执行
npm run dev
可以正常启动,npm start
命令无法正常启动服务
原因:请使用pm2 logs
查看日志具体定位
示例:由于 Redis 的安全模式,不能正常使用1
2
3
4
5
6
7ReplyError: Ready check failed: DENIED Redis is running in protected mode because protected mode is enabled, no bind address was specified, no authentication password is requested to clients. In this mode connections are only accepted from the loopback interface. If you want to connect from external computers to Redis you may adopt one of the following solutions: 1) Just disable protected mode sending the command 'CONFIG SET protected-mode no' from the loopback interface by connecting to Redis from the same host the server is running, however MAKE SURE Redis is not publicly accessible from internet if you do so. Use CONFIG REWRITE to make this change permanent.
2) Alternatively you can just disable the protected mode by editing the Redis configuration file, and setting the protected mode option to 'no', and then restarting the server.
3) If you started the server manually just for testing, restart it with the '--protected-mode no' option.
4) Setup a bind address or an authentication password.
NOTE: You only need to do one of the above things in order for the server to start accepting connections from the outside.解决方法: 使用
--protected-mode no
方式启动- 执行npm run create-db时,ts编译出错,提示ctx上下问出错,那么在项目根目录中找到tsconfig.js,修改noImplicitAny的值为false即可(注意:默认是true,npm run create-db时就会报错)
- redis 清除缓存
运行redis-cli 执行flushall命令清空缓存
- 8、如果出现 is not allowed to connect to this mysql server的解决办法
use mysql;
select host from user where user='root';
update user set host = '%' where user ='root'
客户端 dolores 环境搭建
构建项目
获取源代码
1 |
git clone https://github.com/thx/rap2-dolores.git |
环境配置
配置文件
目录:rap2-dolores/src/config
文件:config.dev.ts
; 其中 dev,表示开发环境,其他同理
修改:config.dev.ts
文件,serve
地址是 服务端 rap2-delos
部署成功后的地址,默认:'http://localhost:8080'
在苹果系统下:sudo npm install 在install node-sass时存在权限问题,需要执行:sudo npm install --unsafe-perm=true --allow-root 才可以进行安装
启动项目
安装项目依赖包
项目根目录下执行
1 |
npm install |
如果下载缓慢,请使用淘宝 npm 镜像
编译启动项目
开发模式
自动监视改变后重新编译1
npm run dev
备注:测试用例
1
npm run test
生产模式
编译 React 生产包1
npm run build
用 serve 命令或 nginx 服务器路由到编译产出的 build 文件夹作为静态服务器即可
1
serve -s ./build -p 80
看到浏览器中出现登录页面,表示部署成功
常见问题
部署问题
执行
npm run dev
,提示1
2
3return process.dlopen(module,path._makeLong(filename))
...
...node_modules\node-sass\vendor\win32-x64-57\binding.node is not a valid Win32 application...原因:项目依赖包
node-sass
没有安装完全
解决方法:npm install node-sass
项目运行起来,但一直停留在加载动画那里
浏览器控制台输出:
GET http://127.0.0.1:8080/account/info ==>> Failed to load http://127.0.0.1:8080/account/info
原因:未修改
rap2-delos/src/config
目录下服务端连接地址, 或者修改结果与 rap2-dolores实际提供服务地址不匹配
解决方法:修改config.dev.ts
文件 serve 配置信息如果 Windows 系统修改正确无误后,依旧出错,那么查看 hosts(路径:C:\Windows\System32\drivers\etc) 中 127.0.0.1 的 IP 前是否有
#
,如果有请取消注释
其他
MySQL 运行问题
- 错误一
原因:MySQL 集成命令没有加入系统的环境变量
解决方法:将安装的 MySQL Service 路径加入系统变量 - 错误二
原因:没有数据库链接权限
解决方法:先登录用 root 数据库,密码具体看自己数据库当时设置的密码
如何获取更新
目前请选择master
分支源码,后续其他分支请看相应分支说明文档。在开发环境中 git pull 来获取最新的源码更新,每一期更新都会有对应的 update.md 请关注并按照上面的指示进行升级工作。
附录
Api 文档管理系统 RAP2 环境搭建的更多相关文章
- 开源的api文档管理系统
api文档 php 在项目中,需要协同开发,所以会写许多API文档给其他同事,以前都是写一个简单的TXT文本或Word文档,口口相传,这种方式比较老土了,所以,需要有个api管理系统专门来管理这些ap ...
- 一. IntelliJ IDEA详细配置文档之初始环境搭建
前言 对于用惯了eclipse的同学来说, 突然切换为idea不是一件那么容易的事情, 所以我会发布一系列只讲解idea使用技巧的文章, 请大家多多关注. 本系列文章的配置参考网上某教程的讲解, 本 ...
- ServiceFabric极简文档-2 部署环境搭建-配置文件
类型:ClusterConfig.Unsecure.MultiMachine 说明:至少3台机子 { "name": "SampleCluster", &quo ...
- 微服务·API文档
阅文时长 | 3.92分钟 字数统计 | 2754.05字符 主要内容 | 1.什么是API文档 2.API文档的使用 3.声明与参考资料 『微服务·API文档』 编写人 | SCscHero 编写时 ...
- 【转载】Java Restful API 文档生成工具 smart-doc
谁说生成api文档就必须要定义注解? 谁说生成接口请求和返回示例必须要在线? 用代码去探路,不断尝试更多文档交付的可能性. 如果代码有生命,为什么不换种方式和它对话! 一.背景 没有背景.就自己做自己 ...
- Laravel(PHP)使用Swagger生成API文档不完全指南 - 基本概念和环境搭建 - 简书
在PHPer中,很多人听说过Swagger,部分人知道Swagger是用来做API文档的,然而只有少数人真正知道怎么正确使用Swagger,因为PHP界和Swagger相关的资料实在是太少了.所以鄙人 ...
- Core Java 学习笔记——1.术语/环境配置/Eclipse汉化字体快捷键/API文档
今天起开始学习Java,学习用书为Core Java.之前有过C的经验.准备把自己学习这一本书时的各种想法,不易理解的,重要的都记录下来.希望以后回顾起来能温故知新吧.也希望自己能够坚持把自己学习这本 ...
- 快速搭建Seeddms文档管理系统
Seddms文档管理系统是开源的 环境: Redhat6.5 lamp 01.LAMP的安装 安装请看:http://www.cnblogs.com/xiaochina/p/6442337.html ...
- 基于.NetCore3.1搭建项目系列 —— 使用Swagger做Api文档 (上篇)
前言 为什么在开发中,接口文档越来越成为前后端开发人员沟通的枢纽呢? 随着业务的发张,项目越来越多,而对于支撑整个项目架构体系而言,我们对系统业务的水平拆分,垂直分层,让业务系统更加清晰,从而产生一系 ...
随机推荐
- DataTables warning : Requested unknown parameter '0' from the data source for row 0错误
在做datatables的项目,从后台取得数据后,返回给datatables界面时会报下面的错误: DataTables warning : Requested unknown parameter ' ...
- windbg排查大内存
现在都是用windbg preview,安装比较麻烦了,还要配置环境变量, 并且每次分析前要先执行 !analyze - v !eeheap -gc !DumpHeap -min 500 000002 ...
- Java 初学UDP传输
不谈理论,先举简单例子. 发送端代码: public class UDPDemo { public static void main(String[] args) throws Exception { ...
- C++ STL库的总结以及实现原理
STL的容器可以分为以下几个大类:一:序列容器, 有vector, list, deque, string. 二 : 关联容器, 有set, multiset, map, mulmap has ...
- [SqlServer]SQL Server创建约束图解
SQLServer 中有五种约束, Primary Key 约束. Foreign Key 约束. Unique 约束. Default 约束和 Check 约束,今天使用SQL Server2008 ...
- C++矩阵加速经典题目:Warcraft III 守望者的烦恼 [vijos 1067]
Warcraft III 守望者的烦恼 背景 守望者-warden,长期在暗夜精灵的的首都艾萨琳内担任视察监狱的任务,监狱是成长条行的,守望者warden拥有一个技能名叫"闪烁", ...
- REdis命令处理流程处理分析
分析版本:REdis-5.0.4. REdis命令处理流程可分解成三个独立的流程(不包括复制和持久化): 1) 接受连接请求流程: 2) 接收请求数据和处理请求流程,在这个过程并不会发送处理结果给Cl ...
- 2019浙大校赛--J--Extended Twin Composite Number(毒瘤水题)
毒瘤出题人,坑了我们好久,从基本的素数筛选,到埃氏筛法,到随机数快速素数判定,到费马小定理,好好的水题做成了数论题. 结果答案是 2*n=n+3*n,特判1,2. 以下为毒瘤题目: 题目大意: 输入一 ...
- 【转载】row cache lock
转自:http://blog.itpub.net/26736162/viewspace-2139754/ 定位的办法: --查询row cache lock等待 select event,p1 ...
- Redux和React
export app class Compo1 extends Component{ } Compo1.propType = { a:PropTypes.string, fn:PropTypes.fu ...