Skip to content

About

No description, website, or topics provided.

Resources

Stars

0 stars

Watchers

0 watching

Forks

Latest commit

 

History

9 Commits

Folders and files

NameName
Last commit message
Last commit date
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 

Repository files navigation

缘么婚恋交友系统

功能

  • 一:嘉宾模块:嘉宾推荐、嘉宾打招呼,历史回看,我喜欢的等
  • 二:动态模块:动态发布、评论、点赞、举报、话题等
  • 三:认证模块:实名认证、学历认证、工作认证
  • 四:聊天模块:好友、聊天、礼物赠送等im功能
  • 五:配置模块:各种配置
  • 六:用户模块:登陆、注册、会员等
  • 七:花瓣模块:花瓣充值、解锁嘉宾等
  • 八:漂流瓶:捡一个,捞一个,漂流瓶会话等
  • 九:签到任务:每日签到、新手任务、日常任务、奖励发放等
  • 十:线下活动:活动发布、活动报名、活动退款等
  • 十一:账户提现:用户账户、账户提现、花瓣兑换等
  • 十二:app网关:接口数据加解密等
  • 十三:其他等

项目结构

项目采用分模块开发方式

  • linfeng-love-app 移动端API模块(H5+uni-app端的API)
  • linfeng-love-common 公共模块
  • linfeng-love-gateway 网关模块(硬件资源充足的情况可以单独拎出来部署在互联网区)
  • linfeng-love-parent 父模块(管理maven依赖)
  • linfeng-love-push 消息推送模块(mq消息消费者,websocket消息推送,用户量大考虑拆成子系统部署,本系统是集成在app应用下)
  • linfeng-love-push-client 消息推送客户端(提供消息推送Api,mq消息生产者)
  • linfeng-love-service 服务模块(dao层数据处理以及缓存数据处理)
  • linfeng-love-sys 后端管理API模块
  • linfeng-love-transport 第三方服务模块

技术选型

  • 1 后端使用技术

    • 1.1 SpringBoot2
    • 1.2 mybatis、MyBatis-Plus
    • 1.3 SpringSecurity
    • 1.4 RabbitMQ
    • 1.5 Netty
    • 1.6 WebSocket
    • 1.7 Mysql
    • 1.9 Redis
    • 1.10 JWT
    • 1.11 Druid
    • 1.12 Slf4j
    • 1.14 Fastjson
    • 1.14 Quartz
    • 1.15 swagger
    • 1.16 WxJava
    • 1.17 Lombok
    • 1.18 Hutool
    • 1.19 dozer
    • 1.20 aes
    • 1.21 minio
  • 前端使用技术

    • 2.1 Vue3 全家桶
    • 2.2 Element-ui
    • 2.3 uni-app

Docker运行后端

当前仓库已经补齐 linfeng-love-app 的 Docker 运行配置,docker compose 会同时拉起以下服务:

  • MySQL 8
  • Redis 7
  • RabbitMQ 3(含管理台)
  • MinIO
  • linfeng-love-app(uniapp/H5接口)
  • linfeng-love-sys(后台管理接口)

在 linfeng-love-backend 目录执行:

docker compose up --build -d

首次启动时会自动导入根目录下的 sql/linfeng-love-all.sql。

补充婚介/人工牵线服务套餐和权益种子数据:

mysql --default-character-set=utf8mb4 -u你的账号 -p 你的数据库名 < sql/seed-matchmaker-service.sql

补充单身用户会员套餐和权益种子数据:

mysql --default-character-set=utf8mb4 -u你的账号 -p 你的数据库名 < sql/seed-member-service.sql

默认访问端口:

  • App API: http://localhost:8080
  • Netty: http://localhost:8081
  • Sys API: http://localhost:8082
  • Swagger: http://localhost:8080/doc.html
  • Sys Swagger: http://localhost:8082/doc.html
  • Druid: http://localhost:8080/druid
  • Sys Druid: http://localhost:8082/druid
  • RabbitMQ管理台: http://localhost:15672
  • MinIO控制台: http://localhost:9001

停止服务:

docker compose down

如需重置数据库和中间件数据,可删除根目录 data 目录后重新启动。

Docker开发模式

如果你希望在容器里开发后端,并在修改 Java、XML、YAML、pom.xml 后自动重启 linfeng-love-app,使用开发模式:

docker compose -f docker-compose.yml -f docker-compose.dev.yml up --build

开发模式说明:

  • 仍然复用 MySQL、Redis、RabbitMQ、MinIO
  • app 服务会改成 Maven 开发容器
  • 后端源码会挂载进容器
  • 检测到源码或配置变更后,会自动重启 Spring Boot 进程
  • Maven 依赖缓存会持久化到根目录 data/m2

如果只想重建开发容器:

docker compose -f docker-compose.yml -f docker-compose.dev.yml up --build app

常用单服务启动命令:

docker compose up -d sys
docker compose up -d app
docker compose up -d app sys
docker compose -f docker-compose.yml -f docker-compose.dev.yml up

本地运行后端

本地运行 Java 服务时,需要先准备好:

  • JDK 8
  • Maven
  • MySQL
  • Redis
  • RabbitMQ

默认 dev 配置:

  • App API: http://localhost:8080
  • Netty: http://localhost:8081
  • Sys API: http://localhost:8082
  • App Swagger: http://localhost:8080/doc.html
  • Sys Swagger: http://localhost:8082/doc.html
  • MySQL: localhost:3306
  • Redis: localhost:6379
  • RabbitMQ: 127.0.0.1:5672

在 linfeng-love-backend 目录启动 App API:

mvn clean install -DskipTests
mvn -f linfeng-love-app/pom.xml spring-boot:run

另开一个终端启动 Sys 后台接口:

mvn -f linfeng-love-sys/pom.xml spring-boot:run

如果已经执行过 mvn clean install -DskipTests,后续只需要执行对应模块的 spring-boot:run 命令即可。不要在根目录直接执行 mvn spring-boot:run,也不要用 -am spring-boot:run,否则 Maven 可能会尝试启动父模块并报 Unable to find a suitable main class。

如果只想用 Docker 启动中间件,本地启动 Java 服务:

docker compose up -d mysql redis rabbitmq minio minio-init

注意:Docker Compose 中 MySQL 暴露端口是 3308,Redis 暴露端口是 6378,而 application-dev.yml 默认连接 3306 和 6379。如果使用 Docker 中间件,需要同步修改 linfeng-love-app/src/main/resources/application-dev.yml 和 linfeng-love-sys/src/main/resources/application-dev.yml 的端口配置。

服务器镜像部署

生产镜像部署使用两个后端镜像:

  • linfeng-love-app:App/小程序/H5 API,暴露 8080,Netty 暴露 8081
  • linfeng-love-sys:后台管理 API,暴露 8082

新增文件:

Dockerfile.app
Dockerfile.sys
docker-compose.prod.yml
.env.prod.example
.github/workflows/deploy-image.yml

服务器首次准备目录:

mkdir -p /opt/linfeng-love-backend
cd /opt/linfeng-love-backend

把 .env.prod.example 内容复制为服务器上的 .env,并修改数据库、Redis、RabbitMQ、MinIO 密码:

cp .env.prod.example .env

GitHub 仓库需要配置 Actions Secrets:

SERVER_HOST      服务器 IP
SERVER_USER      SSH 用户名
SERVER_SSH_KEY   SSH 私钥
SERVER_PORT      SSH 端口,默认 22
GHCR_TOKEN       可选;如果 GHCR 镜像是私有的,填一个有 packages:read 权限的 token

推送到 main 分支后,GitHub Actions 会自动:

  1. 构建 linfeng-love-app 镜像
  2. 构建 linfeng-love-sys 镜像
  3. 推送到 GHCR
  4. 上传 docker-compose.prod.yml 和 sql 目录到服务器
  5. 在服务器执行拉取镜像并重启服务

服务器手动启动或重启:

cd /opt/linfeng-love-backend
docker compose -f docker-compose.prod.yml pull app sys
docker compose -f docker-compose.prod.yml up -d

查看服务状态:

docker compose -f docker-compose.prod.yml ps
docker compose -f docker-compose.prod.yml logs -f app
docker compose -f docker-compose.prod.yml logs -f sys

生产端口:

  • App API: http://服务器IP:8080
  • Netty: 服务器IP:8081
  • Sys API: http://服务器IP:8082
  • RabbitMQ 管理台: http://服务器IP:15672
  • MinIO 控制台: http://服务器IP:9001

注意:MySQL 只会在首次创建数据目录时自动执行 sql 目录里的初始化脚本。如果数据库已经初始化过,后续新增 SQL 需要手动执行,或者后续接入 Flyway/Liquibase 做自动迁移。

About

No description, website, or topics provided.

Resources

Stars

0 stars

Watchers

0 watching

Forks

Releases

Packages

Contributors

Languages