===============================================

2018/6/5_第2次修改                       ccb_warlock

更新说明:

2018/6/5:在4.2中增加LDAP、注册的配置信息;

增加了"六、升级YApi"的内容;

===============================================

YApi是去哪儿移动架构组开源的API管理系统,之前使用码云上开源的CrapApi,但是由于原作者很久没有更新维护且听公司开发人员说YApi功能更为强大,故进行部署。

官方文档:https://yapi.ymfe.org/documents/index.html


一、准备工作

1.1 环境

操作系统:centos7(CentOS-7-x86_64-Minimal-1708)

环境要求:

  • nodejs(7.6+)
  • mongodb(2.6+)

二、部署nodejs

部署nodejs尽可能选择偶数版本,因为偶数版本官方有较长的维护时间,故这次选择8.x。

# 获取资源

curl -sL https://rpm.nodesource.com/setup_8.x | bash -

# 安装

yum install -y nodejs

# 查看node版本

node -v

# 查看npm版本

npm -v


三、部署mongodb

mongodb奇数版(如3.5)是开发版本,故选择安装v3.4。

3.1 添加yum源

# 修改文件mongodb-3.4.repo

vim /etc/yum.repos.d/mongodb-3.4.repo

添加下面的内容,wq保存。

[mongodb-org-3.4]
name=MongoDB Repository
baseurl=https://repo.mongodb.org/yum/redhat/$releasever/mongodb-org/3.4/x86_64/
gpgcheck= 0
enabled=1

3.2 安装

yum install -y mongodb-org

3.3 禁用selinux

官方教程有提到selinux对mongodb会产生负面影响,故选择禁用。

# 修改config文件

vim /etc/selinux/config

将SELINUX=enforcing改为SELINUX=disabled,wq保存。

# 重启OS

reboot

 3.4 关闭防火墙

由于需要做数据迁移,所以直接省事将防火墙直接关了。

# 关闭,并取消开机启动

systemctl stop firewalld
systemctl disable firewalld

 3.5 启动

systemctl start mongod

 四、部署YApi

 4.1 安装

npm install -g yapi-cli --registry https://registry.npm.taobao.org
yapi server

根据提示,浏览器访问 http://部署YApi服务器的IP:9090。

填写完信息后,点击“开始部署”。(大概等待1分钟)

# 退出当前状态

CTRL + C

 4.2 修改配置

这里我们不急着根据提示进行启动,有些参数我们可以通过修改配置达到。

# 修改config.json

vim /root/my-yapi/config.json

修改下面的内容(邮箱可以不用163的),wq保存。

{
"port": "80",
"adminAccount": "yizitadmin@yizit.cn",
"db": {
"servername": "127.0.0.1",
"DATABASE": "yapi",
"port": "27017"
},
"mail": {
"enable": true,
"host": "smtp.163.com",
"port": 465,
"from": "可用于发送邮件的163邮箱",
"auth": {
"user": "163邮箱",
"pass": "163邮箱对应的密码或授权码"
}
},
"ldapLogin": {
"enable": true,
"server": "ldap://你的LDAP服务器IP:389",
"baseDn": "CN=Admin,CN=Users,DC=test,DC=com",
"bindPassword": "123456",
"searchDn": "OU=UserContainer,DC=test,DC=com",
"searchStandard": "mail"
},
"closeRegister":true
}

PS.

1. LDAP配置项(ldapLogin)

  • enable 表示是否配置 LDAP 登录,true(支持 LDAP登录 )/false(不支持LDAP登录);
  • server LDAP 服务器地址,前面需要加上 ldap:// 前缀,也可以是 ldaps:// 表示是通过 SSL 连接;
  • baseDn LDAP 服务器的登录用户名,必须是从根结点到用户节点的全路径;
  • bindPassword 登录该 LDAP 服务器的密码;
  • searchDn 查询用户数据的路径,类似数据库中的一张表的地址,注意这里也必须是全路径;
  • searchStandard 查询条件,这里是 mail 表示查询用户信息是通过邮箱信息来查询的。注意,该字段信息与LDAP数据库存储数据的字段相对应,如果如果存储用户邮箱信息的字段是 email, 这里就需要修改成 email.

2. 注册配置项(closeRegister)

  • 值为true,表示禁止用户注册
  • 值为false(缺损),表示允许注册

 4.3 启动

# 切换到部署目录下

cd /root/my-yapi

# 启动服务

node vendors/server/app.js

由于修改了配置,所以直接访问 http://部署YApi服务器的IP/login。

(ps:没有进行4.2修改配置的话是访问http://部署YApi服务器的IP:3000/login)

# 配置了LDAP服务的登录页面

# 没有配 LDAP服务的登录页面

# 由于配置了禁止注册,故tab页有也不能注册


 五、部署Supervisor

Supervisor是守护进程服务,在没有守护进程之前存在一些问题:

  1. 应用程序运行在当前终端发起的子shell中,hangup信号中断后会导致应用退出,我们不可能在长期使用的环境中用一个终端去做长连接。
  2. 当服务器重启后,还是需要人工连上服务器启动服务。
  3. 进程出现意外终止,等人为发现再连上去开启,这样的反应显然已经慢了。

 5.1 安装

yum install python-setuptools -y
easy_install supervisor

 5.2 修改配置

# 创建目录/etc/supervisor

mkdir /etc/supervisor

# 创建supervisord.conf模板文件

echo_supervisord_conf > /etc/supervisor/supervisord.conf

# 修改文件supervisord.conf

vim /etc/supervisor/supervisord.conf

增加下面的内容,wq保存。

[include]
files = conf.d/*.conf

(如果服务已启动,修改配置文件可用“supervisorctl reload”命令来使其生效)

# 创建目录/etc/supervisor/conf.d/

mkdir -p /etc/supervisor/conf.d/

# 修改文件YApi.conf

vim /etc/supervisor/conf.d/YApiGhost.conf

增加下面的内容,wq保存。

[program: YApiGhost]
command=node vendors/server/app.js ; 运行程序的命令
directory=/root/my-yapi ; 命令执行的目录
autorestart=true ; 程序意外退出是否自动重启
stderr_logfile=/var/log/YApiGhost.err.log ; 错误日志文件
stdout_logfile=/var/log/YApiGhost.out.log ; 输出日志文件
environment=ASPNETCORE_ENVIRONMENT=Production ; 进程环境变量
user=root ; 进程执行的用户身份
stopsignal=INT

 5.3 启动

# 根据supervisord.conf启动守护进程

supervisord -c /etc/supervisor/supervisord.conf

# 查看进程

ps -ef | grep YApiGhost

如果存在YApiGhost 进程则代表运行成功。

 5.4 设置为开机启动

# 修改文件supervisord.service

vim /usr/lib/systemd/system/supervisord.service

添加下面的内容,wq保存。

[Unit]
Description=Supervisor daemon [Service]
Type=forking
ExecStart=/usr/bin/supervisord -c /etc/supervisor/supervisord.conf
ExecStop=/usr/bin/supervisorctl shutdown
ExecReload=/usr/bin/supervisorctl reload
KillMode=process
Restart=on-failure
RestartSec=42s [Install]
WantedBy=multi-user.target

# 开机启动

systemctl enable supervisord

 六、升级YApi

YApi的升级非常容易,且不会影响用户的数据,只会更新vendors目录。

# 进入服务目录

cd /root/my-yapi

# 查看版本列表

yapi ls

# 更新到最新版本

yapi update

# yapi也支持升级到指定的版本

yapi update -v {Version}

 参考资料:

1.https://github.com/YMFE/yapi

2.https://www.cnblogs.com/acewhl/p/6638486.html

3.https://github.com/nodesource/distributions#rpm

4.https://www.cnblogs.com/acewhl/p/6638486.html

5.https://docs.mongodb.com/manual/tutorial/install-mongodb-on-red-hat/

6.https://yapi.ymfe.org/devops/index.html

centos7 部署YApi的更多相关文章

  1. Linux服务部署Yapi项目(安装Node Mongdb Git Nginx等)

    Linux服务部署Yapi 一,介绍与需求 1,我的安装环境:CentOS7+Node10.13.0+MongoDB4.0.10. 2,首先安装wget,用于下载node等其他工具 yum insta ...

  2. [原]CentOS7部署osm2pgsql

    转载请注明原作者(think8848)和出处(http://think8848.cnblogs.com) 部署Postgresql和部署PostGis请参考前两篇文章 本文主要参考GitHub上osm ...

  3. centos7 部署ssserver

    centos7 部署shadowsocks服务端 为什么要选centos7? 以后centos7 肯定是主流,在不重要的环境还是尽量使用新系统吧 centos7 的坑 默认可能会有firewall 或 ...

  4. CentOS部署yapi

    转载自 https://www.linuxidc.com/Linux/2018-01/150513.htm 在mongoDB添加yum源时,源路径有修改,原文中的路径404不可用 一.准备工作 1.1 ...

  5. (转)Centos下,Docker部署Yapi接口管理平台

    接口测试的工具很多,公司引进了接口管理平台Yapi,自己尝试直接搭建,从安装Nodejs到配置MongoDB数据库,再到安装yapi的时候,遇到浏览器打开本地服务器Ip地址后,没有显示部署内容...没 ...

  6. 部署 YApi 接口管理服务

    安装 Node curl -sL https://rpm.nodesource.com/setup_8.x | bash - yum install -y nodejs 安装 MongoDB vi / ...

  7. Docker构建YApi镜像, Docker安装YApi, Docker部署YApi

    概述 YApi 是高效.易用.功能强大的 api 管理平台,旨在为开发.产品.测试人员提供更优雅的接口管理服务.可以帮助开发者轻松创建.发布.维护 API,YApi 还为用户提供了优秀的交互体验,开发 ...

  8. Centos下,Docker部署Yapi接口管理平台(详细得令人发指)

    接口测试的工具很多,公司引进了接口管理平台Yapi,自己尝试直接搭建,从安装Nodejs到配置MongoDB数据库,再到安装yapi的时候,遇到浏览器打开本地服务器Ip地址后,没有显示部署内容...没 ...

  9. centos7 部署 docker compose

    =============================================== 2019/4/10_第1次修改                       ccb_warlock == ...

随机推荐

  1. [leetcode]33. Search in Rotated Sorted Array旋转过有序数组里找目标值

    Suppose an array sorted in ascending order is rotated at some pivot unknown to you beforehand. (i.e. ...

  2. BigDecimal用法总结

    BigDecimal用法总结 BigDecimal常用于金额的计算,下面总结下这次项目中BigDecimal的用法. 1.加减乘除 2.设置精度 3.取反 加减乘除分别调用函数 [java] view ...

  3. 分布式Snowflake雪花算法

    前言 项目中主键ID生成方式比较多,但是哪种方式更能提高的我们的工作效率.项目质量.代码实用性以及健壮性呢,下面作了一下比较,目前雪花算法的优点还是很明显的. 优缺点比较 UUID(缺点:太长.没法排 ...

  4. vue js校验金钱、数字

    // 校验保留两位小数金额 export function isMoney(money) { var reg = /(^[1-9]([0-9]+)?(\.[0-9]{1,2})?$)|(^(0){1} ...

  5. 三 分析easyswoole源码(启动服务&TableManager,略提及Cache工具的原理)

    前文连接,讲了es是如何启动swoole服务的. 里面有一个工具类TableManager.这个类为了处理进程间数据共享.是对swoole_table的一层封装swoole_table一个基于共享内存 ...

  6. 微信H5开发

    1,line-height  不垂直居中 解决方法:用padding写高度 2,手指滑动事件    touchmove 3,页面滚动事件:touchmove 4,要写不同手机适配的基数font-siz ...

  7. python小结 1

    1.变量 记录状态 类型:数字,字符串,元组,列表,字典 可变不可变(内存地址不变的情况下,值能不能改变): 不可变:字符串,数字,元组 可变:列表,字典 访问顺序: 直接访问:数字 有序:字符串,列 ...

  8. JAVA中内部类(匿名内部类)访问的局部变量为什么要用final修饰?

    本文主要记录:在JAVA中,(局部)内部类访问某个局部变量,为什么这个局部变量一定需要用final 关键字修饰? 首先,什么是局部变量?这里的局部是:在方法里面定义的变量. 因此,内部类能够访问某局部 ...

  9. 第一个VS2015 Xaramin Android项目(续)

    上文说到已经第一个 App已经可以运行,但是并不能调试! 经过细心发现,我察觉到VS刚开始进入了调试模式,但是一闪而过.也就是说调试失败了,此时需要等待一段时间才能打开此App,如果立即打开App 会 ...

  10. JS基础-数组的常用方法-冒泡排序

    1.数组  1.关联数组    以数字作为元素下标的数组,就是索引数组.    以字符串作为元素下标的数组,就是关联数组.  2.js的关联数组    ex:在php中       $array=[& ...