2025-01-03 14:45:09 +08:00
|
|
|
|
<!-- Space: qifu -->
|
|
|
|
|
<!-- Parent: 后端技术&知识&规范 -->
|
|
|
|
|
<!-- Parent: 技术方案 -->
|
|
|
|
|
<!-- Parent: 基建 -->
|
2025-02-10 09:21:02 +08:00
|
|
|
|
<!-- Parent: 03-接入指南 -->
|
2025-01-03 14:45:09 +08:00
|
|
|
|
<!-- Title: 20250103-YApi部署指南 -->
|
|
|
|
|
|
|
|
|
|
<!-- Macro: :anchor\((.*)\):
|
|
|
|
|
Template: ac:anchor
|
|
|
|
|
Anchor: ${1} -->
|
|
|
|
|
<!-- Macro: \!\[.*\]\((.+)\)\<\!\-\- width=(.*) \-\-\>
|
|
|
|
|
Template: ac:image
|
|
|
|
|
Url: ${1}
|
|
|
|
|
Width: ${2} -->
|
|
|
|
|
<!-- Macro: \<\!\-\- :toc: \-\-\>
|
|
|
|
|
Template: ac:toc
|
|
|
|
|
Printable: 'false'
|
|
|
|
|
MinLevel: 2
|
|
|
|
|
MaxLevel: 4 -->
|
|
|
|
|
<!-- Include: 杂项/声明文件.md -->
|
|
|
|
|
|
|
|
|
|
<!-- :toc: -->
|
|
|
|
|
|
|
|
|
|
# YApi 部署指南
|
|
|
|
|
|
|
|
|
|
## Docker 安装
|
|
|
|
|
|
|
|
|
|
### 项目准备
|
|
|
|
|
|
|
|
|
|
#### 拉取项目
|
|
|
|
|
|
|
|
|
|
```shell
|
|
|
|
|
mkdir yapi
|
|
|
|
|
|
|
|
|
|
cd yapi
|
|
|
|
|
|
|
|
|
|
git clone https://xxxx.xxxx.xx/yapi.git vendors
|
|
|
|
|
|
|
|
|
|
cp vendors/config_cp.json ./config.json
|
|
|
|
|
```
|
|
|
|
|
|
|
|
|
|
#### 准备配置文件 `yapi/config.json`
|
|
|
|
|
|
|
|
|
|
- [配置文件](#配置文件)
|
|
|
|
|
|
|
|
|
|
### 项目结构
|
|
|
|
|
|
|
|
|
|
```dockerfile
|
|
|
|
|
- yapi
|
|
|
|
|
--- vendors
|
|
|
|
|
----- package.json
|
|
|
|
|
----- config_cp.json
|
|
|
|
|
----- server
|
|
|
|
|
----- Dockerfile
|
|
|
|
|
--- config.json
|
|
|
|
|
```
|
|
|
|
|
|
|
|
|
|
### Dockerfile
|
|
|
|
|
|
|
|
|
|
```dockerfile
|
|
|
|
|
FROM node:12-alpine3.15
|
|
|
|
|
ENV TZ="Asia/Shanghai"
|
2025-01-03 14:53:33 +08:00
|
|
|
|
#-使用阿里云镜像
|
2025-01-03 14:45:09 +08:00
|
|
|
|
RUN sed -i 's/dl-cdn.alpinelinux.org/mirrors.aliyun.com/g' /etc/apk/repositories
|
|
|
|
|
WORKDIR /yapi/vendors
|
|
|
|
|
COPY . /yapi/vendors/
|
|
|
|
|
|
|
|
|
|
RUN mv /yapi/vendors/config_cp.json /yapi/config.json
|
|
|
|
|
|
|
|
|
|
RUN npm config set registry https://registry.npmmirror.com
|
|
|
|
|
|
2025-01-03 14:53:33 +08:00
|
|
|
|
#-构建 yapi
|
2025-01-03 14:45:09 +08:00
|
|
|
|
RUN apk add --no-cache wget python2 make g++ && cd /yapi/vendors && npm set strict-ssl false && npm install --production --registry https://registry.npmmirror.com
|
|
|
|
|
|
2025-01-03 14:53:33 +08:00
|
|
|
|
#-插件安装
|
2025-01-03 14:45:09 +08:00
|
|
|
|
RUN npm install -g ykit --registry https://registry.npmmirror.com
|
|
|
|
|
|
|
|
|
|
RUN npm install yapi-plugin-kc-oidc --registry https://registry.npmmirror.com
|
|
|
|
|
|
|
|
|
|
RUN npm rebuild node-sass --registry https://registry.npmmirror.com
|
|
|
|
|
|
|
|
|
|
RUN npm run build-client
|
|
|
|
|
|
|
|
|
|
EXPOSE 3000
|
|
|
|
|
ENTRYPOINT ["node"]
|
|
|
|
|
|
|
|
|
|
```
|
|
|
|
|
|
|
|
|
|
### 构建镜像 `yapi/vendors`
|
|
|
|
|
|
|
|
|
|
```shell
|
|
|
|
|
docker build -t qifu-base-yapi:1.0.0 .
|
|
|
|
|
```
|
|
|
|
|
|
|
|
|
|
### 启动 YApi
|
|
|
|
|
|
|
|
|
|
#### 初始化数据库(可选,这边已有,不需要再执行)
|
|
|
|
|
|
|
|
|
|
- **由于之前已经有 YApi 了,所以这一步不需要**
|
|
|
|
|
- config.json 在 `yapi` 下
|
|
|
|
|
- 指令跟着实际情况改改
|
|
|
|
|
|
|
|
|
|
```shell
|
|
|
|
|
docker run -d --rm \
|
|
|
|
|
--name yapi-init \
|
|
|
|
|
--link mongodb:mongo \
|
|
|
|
|
--net=yapi \
|
|
|
|
|
-v $PWD/config.json:/yapi/config.json \
|
|
|
|
|
qifu-base-yapi:1.0.0 \
|
|
|
|
|
server/install.js
|
2025-01-03 14:53:33 +08:00
|
|
|
|
#-初始化管理员账号在上面的 config.json 配置中 hexiaohei1024@gmail.com,初始密码是 ymfe.org,可以登录后进入个人中心修改
|
2025-01-03 14:45:09 +08:00
|
|
|
|
```
|
|
|
|
|
|
|
|
|
|
### 启动 YApi
|
|
|
|
|
|
|
|
|
|
- 指令跟着实际情况改改
|
|
|
|
|
|
|
|
|
|
```shell
|
|
|
|
|
docker run -d \
|
|
|
|
|
--name yapi \
|
|
|
|
|
--link mongodb:mongo \
|
|
|
|
|
--restart always \
|
|
|
|
|
--net=yapi \
|
|
|
|
|
-p 3000:3000 \
|
|
|
|
|
-v $PWD/config.json:/yapi/config.json \
|
|
|
|
|
qifu-base-yapi:1.0.0 \
|
|
|
|
|
server/app.js
|
|
|
|
|
```
|
|
|
|
|
|
|
|
|
|
## 宿主机安装
|
|
|
|
|
|
|
|
|
|
### Nodejs 安装 `版本12`
|
|
|
|
|
|
|
|
|
|
- 下载 Nodejs:[下载地址](https://nodejs.org/zh-cn/download)
|
|
|
|
|
- 解压
|
|
|
|
|
- 配置环境变量 `/etc/profile`
|
|
|
|
|
- 使环境变量生效 `source /etc/profile`
|
|
|
|
|
|
|
|
|
|
### Python 安装
|
|
|
|
|
|
|
|
|
|
- python 版本 2.7.18
|
|
|
|
|
- python 安装:https://blog.csdn.net/lsqtzj/article/details/114298091
|
|
|
|
|
- pip 安装:https://www.cnblogs.com/shenfeng/p/install_pip_offline.html
|
|
|
|
|
|
|
|
|
|
#### 可能遇到的问题
|
|
|
|
|
|
|
|
|
|
- 可能用得上:https://blog.csdn.net/loovelj/article/details/90274059
|
|
|
|
|
|
|
|
|
|
### YAPI 安装启动
|
|
|
|
|
|
|
|
|
|
```shell
|
2025-01-03 14:53:33 +08:00
|
|
|
|
#-配置淘宝镜像
|
2025-01-03 14:45:09 +08:00
|
|
|
|
npm config set registry https://registry.npmmirror.com
|
2025-01-03 14:53:33 +08:00
|
|
|
|
#-安装windows构建工具, windows 才需要
|
|
|
|
|
##-npm install --g --production windows-build-tools
|
2025-01-03 14:45:09 +08:00
|
|
|
|
|
2025-01-03 14:53:33 +08:00
|
|
|
|
#-构建 yapi
|
2025-01-03 14:45:09 +08:00
|
|
|
|
mkdir yapi
|
2025-01-03 14:53:33 +08:00
|
|
|
|
#-进入文件夹
|
2025-01-03 14:45:09 +08:00
|
|
|
|
cd yapi
|
2025-01-03 14:53:33 +08:00
|
|
|
|
#-或者下载 zip 包解压到 vendors 目录(clone 整个仓库大概 140+ M,可以通过 `git clone --depth=1 https://github.com/YMFE/yapi.git vendors` 命令减少,大概 10+ M)
|
2025-01-03 14:45:09 +08:00
|
|
|
|
git clone https://github.com/YMFE/yapi.git vendors
|
2025-01-03 14:53:33 +08:00
|
|
|
|
#-复制完成后请修改相关配置
|
2025-01-03 14:45:09 +08:00
|
|
|
|
cp vendors/config_example.json ./config.json
|
|
|
|
|
cd vendors
|
|
|
|
|
|
|
|
|
|
npm install --production --registry https://registry.npmmirror.com
|
2025-01-03 14:53:33 +08:00
|
|
|
|
#-npm install --production --unsafe-perm=true --allow-root --registry https://registry.npmmirror.com
|
|
|
|
|
#-安装程序会初始化数据库索引和管理员账号,管理员账号名可在 config.json 配置
|
2025-01-03 14:45:09 +08:00
|
|
|
|
npm run install-server
|
2025-01-03 14:53:33 +08:00
|
|
|
|
#-启动服务器后,请访问 127.0.0.1:{config.json配置的端口},初次运行会有个编译的过程,请耐心等候
|
2025-01-03 14:45:09 +08:00
|
|
|
|
node server/app.js
|
|
|
|
|
```
|
|
|
|
|
|
|
|
|
|
### YAPI OIDC 配置
|
|
|
|
|
|
|
|
|
|
可以参考:https://www.npmjs.com/package/yapi-plugin-kc-oidc?activeTab=readme
|
|
|
|
|
|
|
|
|
|
- config.json 添加配置 `plugins` 节点
|
|
|
|
|
|
|
|
|
|
- [配置文件](#配置文件)
|
|
|
|
|
|
|
|
|
|
- 执行编译
|
|
|
|
|
|
|
|
|
|
```shell
|
2025-01-03 14:53:33 +08:00
|
|
|
|
#-2.0 进入工作目录
|
2025-01-03 14:45:09 +08:00
|
|
|
|
cd yapi/vendors
|
|
|
|
|
|
2025-01-03 14:53:33 +08:00
|
|
|
|
#-2.1 安装所有依赖包
|
|
|
|
|
##-安装过程中可能出现node-sass报错,替换到新的版本就可解决,比如我将"node-sass": "^4.9.0" 替换成了 "node-sass": "^4.14.0"
|
|
|
|
|
##-sed -i s/'"node-sass": "^4.9.0"'/'"node-sass": "^4.14.0"'/ package.json
|
2025-01-03 14:45:09 +08:00
|
|
|
|
npm install --registry https://registry.npmmirror.com
|
|
|
|
|
|
2025-01-03 14:53:33 +08:00
|
|
|
|
#-2.2 安装ykit工具
|
2025-01-03 14:45:09 +08:00
|
|
|
|
npm install -g ykit --registry https://registry.npmmirror.com
|
|
|
|
|
|
2025-01-03 14:53:33 +08:00
|
|
|
|
#-2.3 安装yapi-plugin-kc-oidc
|
2025-01-03 14:45:09 +08:00
|
|
|
|
npm install yapi-plugin-kc-oidc --registry https://registry.npmmirror.com
|
2025-01-03 14:53:33 +08:00
|
|
|
|
##-或者不用npm安装,自己去git clone代码
|
|
|
|
|
##-cd node_modules && git clone --depth 1 https://gitee.com/joshu/yapi-plugin-kc-oidc.git
|
2025-01-03 14:45:09 +08:00
|
|
|
|
|
2025-01-03 14:53:33 +08:00
|
|
|
|
#-2.4 开始编译
|
|
|
|
|
##-cd yapi/vendors
|
|
|
|
|
##-linux
|
2025-01-03 14:45:09 +08:00
|
|
|
|
npm run build-client
|
|
|
|
|
|
2025-01-03 14:53:33 +08:00
|
|
|
|
##-windows
|
|
|
|
|
###-set NODE_ENV=production
|
|
|
|
|
###-ykit pack -m
|
2025-01-03 14:45:09 +08:00
|
|
|
|
```
|
|
|
|
|
|
|
|
|
|
## 配置文件
|
|
|
|
|
|
|
|
|
|
```json
|
|
|
|
|
{
|
|
|
|
|
"port": "3000",
|
|
|
|
|
"adminAccount": "admin@admin.com",
|
|
|
|
|
"timeout": 120000,
|
|
|
|
|
"db": {
|
|
|
|
|
"servername": "127.0.0.1",
|
|
|
|
|
"DATABASE": "yapi",
|
|
|
|
|
"port": 27017,
|
|
|
|
|
"user": "test",
|
|
|
|
|
"pass": "test"
|
|
|
|
|
},
|
|
|
|
|
"mail": {
|
|
|
|
|
"enable": true,
|
|
|
|
|
"host": "smtp.163.com",
|
|
|
|
|
"port": 465,
|
|
|
|
|
"from": "***@163.com",
|
|
|
|
|
"auth": {
|
|
|
|
|
"user": "***@163.com",
|
|
|
|
|
"pass": "*****"
|
|
|
|
|
}
|
|
|
|
|
},
|
|
|
|
|
"plugins": [
|
|
|
|
|
{
|
|
|
|
|
"name": "kc-oidc",
|
|
|
|
|
"options": {
|
|
|
|
|
"authUrl": "",
|
|
|
|
|
"tokenUrl": "",
|
|
|
|
|
"userUrl": "",
|
|
|
|
|
"callbackUrl": "${host}/api/user/login_by_token",
|
|
|
|
|
"clientId": "",
|
|
|
|
|
"clientSecret": "",
|
|
|
|
|
"scope": "openid email profile phone ",
|
|
|
|
|
"userKey": "preferred_username",
|
|
|
|
|
"emailPostfix": "@xxx.com"
|
|
|
|
|
}
|
|
|
|
|
}
|
|
|
|
|
]
|
|
|
|
|
}
|
|
|
|
|
```
|
|
|
|
|
|
|
|
|
|
- mongodb 没有开启鉴权则删除 `user` 及 `pass` 字段
|
|
|
|
|
|
|
|
|
|
## 参考
|
|
|
|
|
|
|
|
|
|
- [YAPI安装教程](https://blog.csdn.net/IT_ZRS/article/details/118642997)
|
|
|
|
|
- [踩坑可查](https://juejin.cn/post/7246596616694317114)
|