精选

QI-API 接口开放平台Docker容器编排方式一键部署上线(新) ,及普通上传部署✨

大家好我是柒木!距离上次分享差不多有一年时间了,不得不感慨时间过的真快。陆陆续续也有很多球友通过QI-API接口开放平台加过我,期间有过好些同学问我有没有docker的方式部署这个项目,但是因为种种原因搁置了,这次呢不负几位编程导航同学,带来新版的QI-API 接口开放平台部署上线教程,带大家完完整整的部署一遍。也有许多同学问我有没有项目的笔记什么的,但是这个有些不好意思,我当时没有备份笔记,惭愧惭愧。

顺便给开发了一个高端大气上档次可以交互的官网首页https://api.qimuu.icu/

image.png

网站导航

服务器配置

一台2核4G及以上配置服务器。(2g2h有些吃力)

推荐火山引擎的服务器新人第一次购买可以花费很低的价格购买配置高一些的机器。但是不是续费同价有点可惜,并且域名备案有些严格,其他还是很好的。

新人特惠-云服务器60元/年-火山引擎199一年的4核8g服务器太香了

Docker-Compos容器编排一键部署

前端请使用下方普通方式部署

1. 拉取后端qi-api代码

文件目录结构:

image-20241230195800001

2. 修改配置文件,修改配置部分已标记todo标签。无需特殊情况只需关注两个配置文件(已配置好不修改也可以直接运行)

1. backend配置文件

image-20241230195952155

2.gateway网关配置文件

image-20241230200102128

3. 本地maven构建jar包(跳过测试)

image-20241230200610985

4. 本地运行测试

1. 运行docker-compose.env.yml文件启动mysql、redis、nacos环境依赖
image-20241230201112595
yaml
复制代码
version: '3' services: mysql: image: mysql:8 # 使用的镜像 container_name: qi-api-mysql # 启动的实例名称 environment: MYSQL_ROOT_PASSWORD: 1234 # root 用户mysql初始密码 可以修改复杂一些 TZ: Asia/Shanghai ports: - "3306:3306" # 端口映射 todo修改 volumes: - ./.mysql-data:/var/lib/mysql # 将数据目录挂载到本地目录以进行持久化 - ./sql/docker.sql:/docker-entrypoint-initdb.d/init.sql # 启动脚本 restart: always # 崩溃后自动重启 networks: - mynetwork # 指定网络 redis: image: redis:7 container_name: qi-api-redis restart: always # 崩溃后自动重启 ports: - "6379:6379" networks: - mynetwork volumes: - ./.redis-data:/data # 持久化 nacos: image: nacos/nacos-server:v2.1.2 hostname: nacos container_name: qi-api-nacos ports: - "8848:8848" volumes: - ./.nacos-data:/home/nacos/data restart: always # 崩溃后自动重启 networks: - mynetwork environment: - MODE=standalone # 单节点模式启动 - PREFER_HOST_MODE=hostname # 支持 hostname - TZ=Asia/Shanghai # 控制时区 networks: mynetwork:
2. 启动项目
image-20241230201308549
3. 测试是否可用

前端可以在本地先自行启动。启动成功后访问前端地址测试

或者直接访问接口文档地址测试:http://localhost:7529/api/doc.html#/default/interface-info-controller/invokeInterfaceUsingPOST

有返回结果就说明部署成功了!!!!!

json
复制代码
{ "id": "1705237104270712833", "requestParams": [ { "id": "1735560992196", "fieldName": "name", "value": "hello word" } ] }
image-20241230201803114
5.服务器部署上线
1.使用idea自带的部署工具上传项目到服务器

可以自行配置 参考:IDEA使用deployment上传jar到服务器并自动启动 - 刘冬冬的博客 - 博客园

image-20241230202142249
2. 执行maven-clean清除jar包(让项目干净一些)

上传前删除本地测试的mysql、redis、nacos文件目录数据

image-20241231001058875 image-20241230202609663
3. 上传成功后,使用ssh工具连接服务器,进入上传的文件目录
image-20241230203805700
4.安装maven包管理器(自行安装)
bash
复制代码
yum install maven -y

安装成功后执行打包

bash
复制代码
mvn package -DskipTests
5. 启动mysql、redis、nacos环境依赖
  1. 执行启动环境命令,会自动拉取并运行项目依赖的环境
shell
复制代码
docker compose -f docker-compose.env.yml up -d
image-20241230210216126

下载过慢可以在国内 Docker 服务状态 & 镜像加速监控获取加速镜像源

如下启动成功 image-20241230211834479

  1. 启动后端服务
shell
复制代码
docker compose -f docker-compose.service.yml up -d
image-20241230212009605

如下启动成功

image-20241230212418797

普通方式部署

前期准备

  • 安装宝塔面板(为了更可观的表达使用可视化的方式部署)
  • 一个域名(可选)分配子域名。本次教程使用apidocgatewayinterface4个子域名
  • 安装jdk、mysql、redis、nacos、nginx、docker到服务器

运行环境要求

  • jdk版本>=8
  • node.js>=16
  • mysql>=5.73
  • nacos 本项目使用2.1.2版本 (单机模式启动)
  • redis 7
  • nginx 1.2.4

1. Qi-API后端部署(master分支)

目录结构:

image-20241230131928547

1. 首先执行sql目录下的ddl.sql创建数据库,如果部署上线请把数据库中interface_info表插入语句中url前缀替换为自己的网关地址

示例:

原本:

sql
复制代码
insert into qi_api.interface_info(`id`, `name`, `url`, `userId`, `method`, `requestParams`, `reduceScore`, `requestExample`,`requestHeader`, `responseHeader`, `description`, `status`, `totalInvokes`, `avatarUrl`,`returnFormat`, `responseParams`, `createTime`, `updateTime`, `isDelete`) values (1705234447153963010, '随机毒鸡汤', 'http://localhost:8090/api/poisonousChickenSoup', 1698354419367571457, 'GET',NULL, 1, 'http://localhost:8090/api/poisonousChickenSoup', NULL, NULL, '随机毒鸡汤', 1, 0, '', 'JSON','[{\"id\":\"1695051685885\",\"fieldName\":\"code\",\"type\":\"int\",\"desc\":\"响应码\"},{\"id\":\"1695052930602\",\"fieldName\":\"data.text\",\"type\":\"string\",\"desc\":\"随机毒鸡汤\"},{\"id\":\"1695052955781\",\"fieldName\":\"message\",\"type\":\"string\",\"desc\":\"响应描述\"}]','2023-09-22 22:55:48', '2023-09-23 11:52:06', 0)

修改后:

sql
复制代码
insert into qi_api.interface_info(`id`, `name`, `url`, `userId`, `method`, `requestParams`, `reduceScore`, `requestExample`,`requestHeader`, `responseHeader`, `description`, `status`, `totalInvokes`, `avatarUrl`,`returnFormat`, `responseParams`, `createTime`, `updateTime`, `isDelete`) values (1705234447153963010, '随机毒鸡汤', '自己的网关地址/api/poisonousChickenSoup', 1698354419367571457, 'GET',NULL, 1, 'http://localhost:8090/api/poisonousChickenSoup', NULL, NULL, '随机毒鸡汤', 1, 0, '', 'JSON','[{\"id\":\"1695051685885\",\"fieldName\":\"code\",\"type\":\"int\",\"desc\":\"响应码\"},{\"id\":\"1695052930602\",\"fieldName\":\"data.text\",\"type\":\"string\",\"desc\":\"随机毒鸡汤\"},{\"id\":\"1695052955781\",\"fieldName\":\"message\",\"type\":\"string\",\"desc\":\"响应描述\"}]','2023-09-22 22:55:48', '2023-09-23 11:52:06', 0)

2. 进入qi-api-backend目录。修改项目配置信息为自己的,可区分环境配置

image-20241230132606768
yaml
复制代码
spring: profiles: active: dev application: name: qi-api-backend # todo 修改为自己的数据库配置 datasource: driver-class-name: com.mysql.cj.jdbc.Driver url: jdbc:mysql://localhost:3306/qi_api username: root password: 1234 mvc: path match: matching-strategy: ANT_PATH_MATCHER # session 失效时间(分钟) session: timeout: 86400 store-type: redis # redis 配置 redis: port: 6379 host: localhost database: 0 # 邮箱配置 todo 修改为自己的邮箱发送配置 password为邮箱授权码 mail: host: smtp.qq.com username: 2483482026@qq.com password: xswxxxxie emailFrom: 2483482026@qq.com properties: mail: smtp: ssl: enable: true server: port: 7529 address: 0.0.0.0 servlet: context-path: /api session: cookie: # 一周 max-age: 604800 mybatis-plus: configuration: map-underscore-to-camel-case: false log-impl: org.apache.ibatis.logging.stdout.StdOutImpl global-config: db-config: logic-delete-field: isDelete # 全局逻辑删除的实体字段名(since 3.3.0,配置后可以忽略不配置步骤2) logic-delete-value: 1 # 逻辑已删除值(默认为 1) logic-not-delete-value: 0 # 逻辑未删除值(默认为 0) # Qi-API-SDK 配置,自行搭建的修改为自己的网关host需修改 qi: api: client: # 本地测试网关地址 host: http://localhost:8090/api # todo 腾讯云cos文件上传配置 cos: client: accessKey: AKIDc3391f27vTmpbE secretKey: VmHZ8JK region: apzhou bucket: typor-1305950889 cos-host: https://xxxx.icu # 微信支付配置 todo wx: pay: appId: wx2xxxe8dc mchId: 16xx068 apiV3Key: bfxxxf389934 privateKeyPath: classpath:/pem/apiclient_key.pem privateCertPath: classpath:/pem/apiclient_cert.pem #本地测试用内网穿透,这个内网穿透地址,修改为自己的。上线修改为后端的接口地址即可 notifyUrl: https://beloved-massive-sheepdog.ngrok-free.app/api/order/notify/order # 支付宝支付配置 todo alipay: appId: 201xxx41568 sellerId: 208xxx687 #是否沙箱环境 sandbox: false #本地测试用内网穿透,这个内网穿透地址,修改为自己的。上线修改为后端的接口地址即可 notifyUrl: https://beloved-massive-sheepdog.ngrok-free.app/api/order/notify/order #支付成功后跳转地址,上线修改为上线任意地址 returnUrl: http://localhost:8000/account/center private-key: MIIEvQIBADANB... ali-pay-public-key: MIIBIjANBg... dubbo: application: enable-file-cache: false name: dubbo-springboot-demo-provider protocol: name: dubbo port: -1 registry: id: nacos-registry # todo 线上修改为服务器内网地址,参考nacos启动后的链接 address: nacos://localhost:8848

3. qi-api-gatway服务和qi-api-inteface服务同上修改各自配置

4. 修改完所有配置文件后执行maven打包构建、跳过测试

image-20241230135056972

可以先安装通用包到本地再执行上面构建

image-20241230135145632

5.上传打包好的jar包到服务器

建议一个文件夹放一个jar包

image-20241230135336812

6.点击宝塔侧边栏网站添加java项目

首先分配各个服务要使用的端口 (可以使用当前教程端口分配)

  • backend分配7529端口

  • gateway分配8986端口

  • interface分配8082端口

启动顺序:backend/interface服务 ——> gateway服务

  1. 添加backend项目

    指定端口和配置文件环境

    bash
    复制代码
    /www/server/java/jdk1.8.0_371/bin/java -jar -Xmx1024M -Xms256M /www/wwwroot/qi-api-backend/qi-api-backend-0.0.1.jar --server.port=7529 --spring.profiles.active=prod
image-20241230140135941
  1. 网关和接口服务同上

  2. 配置反向代理

    • gateway项目反向代理
    image-20241230140845020

    配置ssl 可以在线申请或者在域名解析服务商处下载

    image-20241230140950498
    • interface服务同上

2. qi-api-frontend前端部署

1. 安装依赖

bash
复制代码
yarn or npm install

2. 修改请求域名为自己的

在RequestConfig.ts文件中修改如下地方

tsx
复制代码
baseURL: process.env.NODE_ENV === 'production' ? "https://api.qimuu.icu/" : 'http://localhost:7529/',
image-20241223195319517

3. 执行构建部署

bash
复制代码
yarn build or npm run build

4. 上传dist目录中构建的前端文件到服务器

image-20241223195930202

5. 添加站点

image-20241223200108105

6. 修改项目nginx配置文件

  • 解决刷新404

    nginx
    复制代码
    try_files $uri $uri/ /index.html;
  • 配置后端反向代理

    nginx
    复制代码
    location ^~ /api/ { proxy_pass http://127.0.0.1:7529; add_header 'Access-Control-Allow-Origin' '$http_origin'; if ($request_method = 'OPTIONS') { add_header 'Access-Control-Allow-Origin' '$http_origin'; add_header 'Access-Control-Allow-Headers' 'DNT,Keep-Alive,User-Agen, X-Requestes-With,If-Modified-Since,Cache-Control,Content-Type,Range'; return 204; } }

7. 配置SSL

大家可以下载域名的ssl,也可以使用宝塔的一键申请证书。这里为了方便直接在线申请

image-20241223201706506 image-20241223201745682

8.访问测试。登录成功就代表你搭建成功啦!!!!!

image-20241230233443136

3. 接口在线文档项目

1. 安装依赖

bash
复制代码
npm install

2. 进入项目,找到package.json文件,执行build命令构建文档文件。

image-20241223182711592

3. 执行成功后进入docs\.vuepress\dist目录,将里面内容全部上传到服务器

示例:

image-20241223185049103

4. 进入宝塔面板->网站->添加php站点。

image-20241223190825677

5. 配置ssl

大家可以下载域名的ssl,也可以使用宝塔的一键申请证书。这里为了方便直接在线申请

image-20241223191301849 image-20241223191321579

6. 访问测试Qi-API 开发者文档

image-20241223191441346

7. 恭喜这样就部署成功了!!

0个评论
点击登录,快来和大家讨论吧~
表情
图片
暂无评论
柒木
下载 APP