一,环境搭建
1.nodeJS环境搭建
说明:
nodejs源码包获取路径:Index of /dist/
在此我选择的版本为:node-v14.15.0-linux-x64 (最初选择为node-v20.11.1-linux-x64,看网上有介绍node版本太高会导致服务无法运行,后来改了node-v12.20.0-linux-x64,这个版本在运行pm2时会报版本不匹配的错误)
安装node
将node压缩包拷贝至服务器 /opt/nodejs文件目录下
解压缩文件
sudo tar -zxvf node-v14.15.0-linux-x64 ./
在/usr/bin下创建软连接(方便直接调用 node 和npm)
sudo ln -s /opt/nodejs/node-v14.15.0-linux-x64/bin/node /usr/bin/node
sudo ln -s /opt/nodejs/node-v14.15.0-linux-x64/bin/npm /usr/bin/npm
通过查看版本信息确认node是否安装成功
2.安装MongoDB
说明:
MongoDB使用的版本为:mongodb-org-server-4.0.28-1.el8.x86_64.rpm,采用的rpm包的安装方式
安装MongoDB
yum install -y mongodb-org-server-4.0.28-1.el8.x86_64.rpm
执行命令查看MongoDB版本信息,看是否安装成功
查看配置文件信息
sudo vim /etc/mongod.conf
MongoDB配置文件说明
port=27017 #端口 dbpath= /usr/mongodb/db #数据库存文件存放目录 logpath= /usr/mongodb/log/mongodb.log #日志文件存放路径 logappend=true #使用追加的方式写日志 fork=true #以守护进程的方式运行,创建服务器进程 maxConns=100 #最大同时连接数 noauth=true #不启用验证 journal=true #每次写入会记录一条操作日志(通过journal可以重新构造出写入的数据)。 #即使宕机,启动时wiredtiger会先将数据恢复到最近一次的checkpoint点,然后重放后续的journal日志来恢复。 storageEngine=wiredTiger #存储引擎有mmapv1、wiretiger、mongorocks bind_ip = 0.0.0.0 #这样就可外部访问了,例如从win10中去连虚拟机中的MongoDB
启动MongoDB
mongod -f /etc/mongod.conf
添加超级管理员
注:若要访问MongoDB数据库此处还需再安装一个MongoDB shell工具---mongosh;下载路径:MongoDB Shell Download | MongoDB ;安装成功mongosh,创建软连接
sudo ln -s /opt/mongodb/mongosh-2.1.5-linux-x64/bin/mongosh /usr/bin/mongosh
a.进入MongoDB数据库
mongosh //进入MongoDB数据库
b.选择admin数据库
use admin
c.添加admin超级管理员
db.createUser({user:'admin', pwd:'okuy89YY', roles:[{role:'root', db:'admin'}]})
//该命令就是给admin数据库添加了admin的用户(注:mongo为每一个数据库都提供了一套用户权限)
d.关闭数据库
db.shutdownServer()
e.重新启动MongoDB
mongod -f /etc/mongod.conf
f.为yapi添加数据库和用户
//进入MongoDB
mongosh
//选择数据库
use yapi
//创建用户,记牢用户名和密码,在yapi配置中会用到
db.createUser({user:'yapi', pwd:'8855hYU', roles:[{role:'readWrite', db:'yapi'}]})
二,Yapi部署(源码)
github下载yapi安装包(可参考路径 https://github.com/YMFE/yapi.git)
将yapi源码包拷贝至/opt/yapi/vendors/路径下
cp vendors/config_example.json ./config.json
//将vendors目录下的config_example.json文件拷贝至 vendors同级目录,并改名为config.json 因代码执行时会调用config.json的相对路径
npm安装源码依赖包
npm install --production --registry https://registry.npm.taobao.org
//通过淘宝的源来下载yapi源码所依赖的库包,如果服务器无法联网该命令无法执行
如果没有执行npm install 直接运行yapi会报如下错误
Error: internal/modules/cjs/loader.js:905
throw err;
^
Error: Cannot find module 'fs-extra'
Require stack:
- C:\Users\Think\my-yapi\vendors\server\install.js
at Function.Module._resolveFilename (internal/modules/cjs/loader.js:902:15)
at Function.Module._load (internal/modules/cjs/loader.js:746:27)
at Module.require (internal/modules/cjs/loader.js:974:19)
at require (internal/modules/cjs/helpers.js:93:18)
at Object.<anonymous> (C:\Users\Think\my-yapi\vendors\server\install.js:1:12)
"fs-extra"错误解决办法:将yapi源码拷贝至可联网并且有VUE(node)环境的个人电脑,在源码目录下执行npm install 更新库包
更新完库包后,在源码目录下回多出来一个node_modules文件夹(下载的依赖库包400M左右),将所有源码重新打包,放至服务器/opt/yapi/vendors/路径下
配置vendors同级目录下的config.json文件
{
"port": "3000", //可自定义端口号
"adminAccount": "admin@admin.com", //yapi登录是管理员邮箱,默认密码ymfe.org该邮箱需要自己再重新定义一个,因MongoDB中已存在admin这个用户。
"timeout":120000, //超时设置
"db": {
"servername": "127.0.0.1", //MongoDB服务器所在的IP地址
"DATABASE": "yapi", //连接的数据库
"port": 27017, //数据库端口
"user": "yapi", //数据库用户名
"pass": "12333.", //数据库密码
"authSource": ""
},
"mail": {
"enable": true,
"host": "smtp.163.com",
"port": 465,
"from": "***@163.com",
"auth": {
"user": "***@163.com",
"pass": "*****"
}
}
}
初始化数据库索引和管理员账户
npm run install-server
如果报错如下,说明cai@gmail.com用户名已经存在,重新修改配置档中的adminAccount
启动yapi
node server/app.js
yapi完整的目录结构如下:
|-- config.json |-- init.lock |-- log `-- vendors |-- CHANGELOG.md |-- LICENSE |-- README.md |-- client |-- common |-- config_example.json |-- doc |-- exts |-- nodemon.json |-- npm-debug.log |-- package.json |-- plugin.json |-- server |-- static |-- test |-- webpack.alias.js |-- yapi-base-flow.jpg |-- ydocfile.js `-- ykit.config.js
安装pm2管理node 启动yapi
npm install pm2 -g
pm2啓動yapi
pm2 start /opt/yapi/vendors/server/app.json
pm2 启动可实现后台运行,推荐使用pm2启动