# 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" #-使用阿里云镜像 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 #-构建 yapi 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 #-插件安装 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 #-初始化管理员账号在上面的 config.json 配置中 hexiaohei1024@gmail.com,初始密码是 ymfe.org,可以登录后进入个人中心修改 ``` ### 启动 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 #-配置淘宝镜像 npm config set registry https://registry.npmmirror.com #-安装windows构建工具, windows 才需要 ##-npm install --g --production windows-build-tools #-构建 yapi mkdir yapi #-进入文件夹 cd yapi #-或者下载 zip 包解压到 vendors 目录(clone 整个仓库大概 140+ M,可以通过 `git clone --depth=1 https://github.com/YMFE/yapi.git vendors` 命令减少,大概 10+ M) git clone https://github.com/YMFE/yapi.git vendors #-复制完成后请修改相关配置 cp vendors/config_example.json ./config.json cd vendors npm install --production --registry https://registry.npmmirror.com #-npm install --production --unsafe-perm=true --allow-root --registry https://registry.npmmirror.com #-安装程序会初始化数据库索引和管理员账号,管理员账号名可在 config.json 配置 npm run install-server #-启动服务器后,请访问 127.0.0.1:{config.json配置的端口},初次运行会有个编译的过程,请耐心等候 node server/app.js ``` ### YAPI OIDC 配置 可以参考:https://www.npmjs.com/package/yapi-plugin-kc-oidc?activeTab=readme - config.json 添加配置 `plugins` 节点 - [配置文件](#配置文件) - 执行编译 ```shell #-2.0 进入工作目录 cd yapi/vendors #-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 npm install --registry https://registry.npmmirror.com #-2.2 安装ykit工具 npm install -g ykit --registry https://registry.npmmirror.com #-2.3 安装yapi-plugin-kc-oidc npm install yapi-plugin-kc-oidc --registry https://registry.npmmirror.com ##-或者不用npm安装,自己去git clone代码 ##-cd node_modules && git clone --depth 1 https://gitee.com/joshu/yapi-plugin-kc-oidc.git #-2.4 开始编译 ##-cd yapi/vendors ##-linux npm run build-client ##-windows ###-set NODE_ENV=production ###-ykit pack -m ``` ## 配置文件 ```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)