centos7 部署YApi
===============================================
2018/6/5_第2次修改 ccb_warlock
更新说明:
2018/6/5:
1.在4.2中增加LDAP、注册的配置信息;
2.增加了"六、升级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
# 进入服务目录
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