1. 安装 node.js
安装node.js,选择版本node-v12.16.1-x64.msi
一直点击下一步就好,路径默认C盘就好,不需要做修改。
2. 安装MongDB
下载mongodb-win32-x86_64-2012plus-4.2.3-signed.msi,安装
选择complete完整的安装模式:
注意将MongoDB作为服务安装,同时要记录下数据库data的安装目录和日志的安装目录
MongoDB安装路径
C:\Program Files\MongoDB\Server\4.2\data
MongoDB日志存储路径
C:\Program Files\MongoDB\Server\4.2\log\
安装完成后的MongoDB需要进行进一步配置,需要配置db文件夹和log文件夹,分别用来存储数据文件和日志文件。这两个文件夹你可以使用以管理员权限运行的cmd命令行窗口进行创建,也可以直接到指定目录下鼠标右键进行创建。
我在这里就使用命令行的方式进行创建了:
首先使用管理员模式运行cmd窗口,然后用cd \ 命令回到根目录,在根目录下建立data文件夹,并在data文件夹内建立db和log文件夹
还需要再配置一个后缀为.cfg的文件(其实就是配置文件config的缩写),那么在该文件中写入以下路径即可:
systemLog:
destination: file
path: c:\data\log\mongod.log
storage:
dbPath: c:\data\db
将刚刚的配置文件复制到MongoDB的安装目录里,放在4.2的目录下,提示需要管理员权限,点击继续即可:
C:\Program Files\MongoDB\Server\4.2\
进入MongoDB的bin目录,并把bin目录的路径复制下来:
C:\Program Files\MongoDB\Server\4.2\bin
打开刚刚的cmd命令行窗口,切换到这个bin目录路径下
然后在当前路径下敲击以下命令,回车运行,看到MongoDB的服务启动并有相应的端口号和路径即可,然后Ctrl + c强制停止一下:
mongod --dbpath C:\data\db
强制停止之后,需要再输入以下命令来重新执行配置文件:
mongod.exe --config “C:\Program Files\MongoDB\Server\4.2\mongod.cfg” --install
简单测试一下MongoDB,输入mongo:
至此,MongoDB数据库安装完成,此时未添加环境变量,将bin目录加入环境变量即可任意目录进入mongodb。
3. 命令行部署Yapi
本文根据官网命令行部署Yapi,采用可视化部署会报node.js的错误,所以不推荐使用可视化部署。可视化部署报错如下:
(node: 21108)UnhandledPromiseRejectionWarning: Error: read_ECONNRESET
at TCP. onStreamRead (internal/stream_base_commons.js:205:27)
(node: 21108)UnhandledPromiseRejectionWarning: Unhandled promise rejection.
下面开始命令行部署:
mkdir yapi
cd yapi
git clone https://github.com/YMFE/yapi.git vendors //或者下载 zip 包解压到 vendors 目录(clone 整个仓库大概 140+ M,可以通过 `git clone --depth=1 https://github.com/YMFE/yapi.git vendors` 命令减少,大概 10+ M)
cp vendors/config_example.json ./config.json //复制完成后请修改相关配置
注意按官网教程复制config_example.json到上一层目录改名为config.json后,需要将账号密码全部删除,否则会报以下错误:
error: MongoNetworkError: Authentication failed., mongdb Authentication failed log: mongodb load success...
(node: 19048) UnhandledPromiseRejectionWarning: Error: cannot read property 'collection' of undefined
at D:\yapi\yapi-master\server\install.js:151:13
此处如果想增加数据库权限认证,config.json中添加账号密码请看第4节。
然后执行
cd vendors
npm install --production --registry https://registry.npm.taobao.org
npm run install-server //安装程序会初始化数据库索引和管理员账号,管理员账号名可在 config.json 配置
node server/app.js //启动服务器后,请访问 127.0.0.1:{config.json配置的端口},初次运行会有个编译的过程,请耐心等候
4. MongDB添加账号密码认证
MongDB的账号密码认证,首先需要建立管理员账号密码,然后建立一个普通用户读写Yapi的数据库
# 进入
mongo
# 查看数据库
show dbs
# 创建管理员账号
db.createUser({ user: "useradmin", pwd: "adminpassword", roles: [{ role: "userAdminAnyDatabase", db: "admin" }] })
# 验证第3步用户添加是否成功,db.auth()方法理解为用户的验证功能
db.auth("useradmin", "adminpassword") 如果返回1,则表示成功。
# 退出系统
exit
# 安装目录下修改MongDB配置
sudo vi /opt/MongDB/mongdbServer/bin/mongod.conf
# 结尾添加两行,注意缩进,缩进参照配置文件其他配置。缩进错误可能第6步重启不成功。
security:
authorization: enabled
# 重启mongodb
sudo service mongod restart
# 进入mongodb,用第3步的管理员账户登录,用该账户创建其他数据库管理员账号
use admin
db.auth("useradmin", "adminpassword")
# 选择创建数据库最高权限账号或者读写账户管理yapi数据库
# 新建你需要管理的mongodb 数据的账号密码。
# roles:dbOwner代表数据库所有者角色,拥有最高该数据库最高权限。比如新建索引等
db.createUser({ user: "yapi", pwd: "yapi", roles: [{ role: "dbOwner", db: "yapi" }] })
# 新建数据库读写账户
db.createUser({ user: "yapi1", pwd: "yapi1", roles: [{ role: "readWrite", db: "yapi" }] })
mongod.conf配置文件:
config.json配置文件:
5. 访问网站
http://127.0.0.1:3000/ 使用账号 密码登录即可
6. 后台永久运行
如果是内网部署需要修改npmrc配置文件
# 查看配置文件位置,结果的userconfig即为npmrc位置,默认为/root/.npmrc
npm config list
安装forever实现后台运行
# 安装forever
npm install forever -g
# 添加forever到环境变量
ln -s /opt/node/node-v12.22.12-linux-x64/lib/node_modules/forever/bin/forever /usr/local/bin/forever
# server目录下启动应用
forever start app.js
# 关闭应用
forever stop app.js
# 重启所有应用
forever restartall
7. 常见问题
报错address already in use 0.0.0.0:3000
查找端口号对应的PID文章来源:https://uudwc.com/A/zkMR3
lsof -i:3000
杀掉进程文章来源地址https://uudwc.com/A/zkMR3
kill -9 【PID】