centos7 部署YApi

===============================================html

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

 

 更新说明:python

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

                  增长了"6、升级YApi"的内容;git

===============================================github

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

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

  


1、准备工做数据库

1.1 环境npm

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

环境要求:

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

  


2、部署nodejs

部署nodejs尽量选择偶数版本,由于偶数版本官方有较长的维护时间,故此次选择8.x。

 

# 获取资源

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

 

# 安装

yum install -y nodejs

 

# 查看node版本

node -v

 

# 查看npm版本

npm -v

  


3、部署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

 


 4、部署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页有也不能注册

 

 


 5、部署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

 


 6、升级YApi

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

 # 进入服务目录

cd /root/my-yapi

 

# 查看版本列表

yapi ls

 

# 更新到最新版本

yapi update

 

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

yapi update -v {Version}

  


 参考资料:

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

 2.http://www.javashuo.com/article/p-ebadlidn-w.html

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

 4.http://www.javashuo.com/article/p-ebadlidn-w.html

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

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