快速上手
相关源文件
本页面内容基于以下源文件生成:
南生论坛(Nan's BBS)是一个基于 SpringBoot + Vue 框架实现的前后端分离社区系统,采用大厂微服务架构设计,仿掘金风格,支持多端适配。该项目分为用户系统(南生论坛)和管理系统(南生运营)两部分,提供文章、问答、话题、积分系统、私信等完整社区功能(README.md:1-40)。
后端技术栈包括 SpringBoot、Dubbo RPC、Zookeeper 注册中心、RocketMQ 消息队列、Redis 缓存、MySQL 数据库、MongoDB 大数据存储、WebSocket 实时交互、Shiro 权限管理以及七牛云对象存储等(README.md:41-57)。
项目简介与演示
演示环境
开源版演示地址:https://open.nansin.top(普通用户可自行注册;管理员账号:`椿/123456`)
商业版演示地址:https://bbs.nansin.top(普通用户:`椿/123456`;管理员:`测试管理员/123456`)([README.md:29-38](https://github.com/maliangnansheng/bbs-springboot/blob/master/README.md#L29-L38))
相关资源
- 开源版部署教程:【后端】安装部署教程、【前端】安装部署教程
- 视频教程:https://www.bilibili.com/video/BV1ThYQzfEvR
- 前端项目(Vue2版本):bbs-vue-ui
- 前端项目(Vue3版本):bbs-vue3-ui
环境准备与依赖
基础环境要求
| 组件 | 版本要求 | 说明 |
|---|---|---|
| JDK | 17+ | Spring Boot 3.x 需要 |
| Maven | 3.6+ | 项目构建工具 |
| MySQL | 5.7+ / 8.x | 主数据库 |
| Redis | 5.x+ | 缓存服务 |
| MongoDB | 4.x+ | 大数据存储(文章阅读数等) |
| Zookeeper | 3.6+ | Dubbo 注册中心 |
Maven 父工程配置
项目基于 Spring Boot 3.5.11 版本构建,采用多模块结构(pom.xml:1-80):
xml1<parent> 2 <groupId>org.springframework.boot</groupId> 3 <artifactId>spring-boot-starter-parent</artifactId> 4 <version>3.5.11</version> 5</parent> 6 7<modules> 8 <module>bbs-rest</module> 9 <module>bbs-common</module> 10 <module>bbs-user</module> 11 <module>bbs-article</module> 12</modules>
项目统一版本为 3.0.0-SNAPSHOT,通过 ${revision} 属性管理(pom.xml:24-27)。
核心依赖版本
| 依赖 | 版本 | 用途 |
|---|---|---|
| dubbo-spring-boot-starter | 3.3.2 | RPC 框架 |
| mybatis-spring-boot-starter | 3.0.4 | 持久层框架 |
| druid-spring-boot-starter | 1.2.24 | 数据库连接池 |
| mysql-connector-j | 9.6.0 | MySQL 驱动 |
| redisson | 3.42.0 | Redis 客户端 |
| shiro-spring | 3.0.0-alpha-1 | 权限管理 |
| knife4j-openapi3-jakarta-spring-boot-starter | 4.5.0 | API 文档 |
完整依赖版本定义参见(pom.xml:81-120)。
核心配置说明
REST 服务配置
REST 层作为 API 网关,监听端口 7010,上下文路径为 /api(bbs-rest/src/main/resources/application.yml:1-35):
yaml1server: 2 port: 7010 3 servlet: 4 context-path: /api 5 6spring: 7 application: 8 name: ns-bbs-rest 9 data: 10 redis: 11 host: 139.9.78.65 12 port: 6222 13 timeout: 60000 14 15dubbo: 16 application: 17 name: ns-bbs-rest 18 registry: 19 address: zookeeper://139.9.78.65:2181 20 timeout: 60000 21 protocol: 22 name: dubbo 23 port: 22001
业务服务配置
Article 服务监听端口 7011,使用 Druid 连接池管理 MySQL 连接(bbs-article/bbs-article-service/src/main/resources/application.yml:1-45):
yaml1server: 2 port: 7011 3 4spring: 5 datasource: 6 url: jdbc:mysql://127.0.0.1:3306/open_bbs?characterEncoding=UTF-8&useSSL=false&serverTimezone=Asia/Shanghai 7 username: root 8 password: 777888 # 需要改成你自己的 9 druid: 10 initial-size: 5 11 min-idle: 5 12 max-active: 20 13 data: 14 mongodb: 15 uri: mongodb://127.0.0.1:27017/open_bbs
User 服务监听端口 7013,配置与 Article 服务类似(bbs-user/bbs-user-service/src/main/resources/application.yml:1-40)。
配置项汇总
| 服务 | 端口 | Dubbo 端口 | 说明 |
|---|---|---|---|
| bbs-rest | 7010 | 22001 | API 网关 |
| bbs-article | 7011 | 22002 | 文章服务 |
| bbs-user | 7013 | 22003 | 用户服务 |
安装步骤
克隆项目
bash1git clone https://github.com/maliangnansheng/bbs-springboot.git 2cd bbs-springboot
修改配置文件
- 修改数据库配置:编辑
bbs-article/bbs-article-service/src/main/resources/application.yml和bbs-user/bbs-user-service/src/main/resources/application.yml,将 MySQL 用户名和密码改为本地配置(bbs-article/bbs-article-service/src/main/resources/application.yml:15-18):
yaml1username: root 2password: 你的密码
-
修改 Redis 配置:将 Redis 地址改为本地服务地址(建议/常见做法,未在仓库证据中出现)。
-
修改 Zookeeper 配置:将 Dubbo 注册中心地址改为本地 Zookeeper 地址(建议/常见做法,未在仓库证据中出现)。
构建项目
bash1mvn clean install -DskipTests
最短可运行路径
服务启动顺序
由于项目采用 Dubbo 微服务架构,需要按以下顺序启动服务:
正在加载图表渲染器...
启动命令
-
启动基础设施服务(MySQL、Redis、MongoDB、Zookeeper)
-
启动 User 服务:
bash1cd bbs-user/bbs-user-service 2mvn spring-boot:run
- 启动 Article 服务:
bash1cd bbs-article/bbs-article-service 2mvn spring-boot:run
- 启动 REST 网关服务:
bash1cd bbs-rest 2mvn spring-boot:run
运行验证
健康检查
服务启动后,可通过以下方式验证:
-
API 文档访问:Swagger/Knife4j 文档地址(需要确认具体路径,配置中
swagger.show: true表示已启用)(bbs-rest/src/main/resources/application.yml:58-60) -
端口检查:
bash1# 检查 REST 服务端口 2curl http://localhost:7010/api 3 4# 检查各服务是否正常监听 5netstat -tlnp | grep -E "7010|7011|7013"
- Dubbo 服务检查:通过 Zookeeper 客户端查看服务注册情况(建议/常见做法,未在仓库证据中出现)
预期输出
成功启动后,控制台应显示类似以下日志(需要确认,具体日志格式未在源文件中提供):
Started NsBbsRestApplication in X.XXX secondsDubbo Service Server started
完整验证流程
详细部署教程参见官方文档:【后端】安装部署教程(README.md:35)
视频教程:https://www.bilibili.com/video/BV1ThYQzfEvR([README.md:37](https://github.com/maliangnansheng/bbs-springboot/blob/master/README.md#L37))
常见问题与排错
问题 1:数据库连接失败
现象:启动时报错 Could not create connection to database server
原因:MySQL 配置不正确或数据库未创建
解决方案:
- 确认 MySQL 服务已启动
- 创建数据库
open_bbs:
sql1CREATE DATABASE open_bbs CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci;
- 检查
application.yml中的数据库连接配置(bbs-article/bbs-article-service/src/main/resources/application.yml:12-18)
问题 2:Dubbo 服务注册失败
现象:启动时报错 Failed to register dubbo service
原因:Zookeeper 未启动或地址配置错误
解决方案:
- 确认 Zookeeper 服务已启动
- 检查 Dubbo 注册中心配置(bbs-rest/src/main/resources/application.yml:33-35):
yaml1dubbo: 2 registry: 3 address: zookeeper://127.0.0.1:2181
问题 3:Redis 连接超时
现象:启动时报错 Unable to connect to Redis
原因:Redis 服务未启动或配置错误
解决方案:
- 确认 Redis 服务已启动
- 检查 Redis 配置(bbs-rest/src/main/resources/application.yml:18-28):
yaml1spring: 2 data: 3 redis: 4 host: 127.0.0.1 5 port: 6379 6 timeout: 60000
问题 4:端口冲突
现象:启动时报错 Port 7010 already in use
原因:端口被其他进程占用
解决方案:
- 查找并终止占用端口的进程:
bash1# Linux/Mac 2lsof -i :7010 3kill -9 <PID> 4 5# Windows 6netstat -ano | findstr :7010 7taskkill /PID <PID> /F
- 或修改
application.yml中的端口号(bbs-rest/src/main/resources/application.yml:1-4)
问题 5:循环依赖错误
现象:Spring Boot 2.6+ 版本报错 The dependencies of some of the beans in the application context form a cycle
原因:Spring Boot 2.6 默认禁止循环依赖
解决方案:配置中已添加允许循环依赖的设置(bbs-article/bbs-article-service/src/main/resources/application.yml:7-9):
yaml1spring: 2 main: 3 allow-circular-references: true
下一步建议
前端项目部署
后端服务启动成功后,需要部署前端项目才能完整体验:
- Vue2 版本:bbs-vue-ui
- Vue3 版本:bbs-vue3-ui
前端部署教程:【前端】安装部署教程(README.md:35)
深入学习资源
完整教程列表参见(README.md:39)。
商用授权
本项目基于 AGPL 3.0 协议开源,个人学习使用不限制,公司使用或商用需要获取授权(README.md:10-13)。
