# springboot_nextjs_blog **Repository Path**: zhangdapeng520/springboot_nextjs_blog ## Basic Information - **Project Name**: springboot_nextjs_blog - **Description**: 采用SpringBoot+Next.js开发的博客系统 - **Primary Language**: Unknown - **License**: AGPL-3.0 - **Default Branch**: master - **Homepage**: None - **GVP Project**: No ## Statistics - **Stars**: 0 - **Forks**: 0 - **Created**: 2026-03-23 - **Last Updated**: 2026-03-24 ## Categories & Tags **Categories**: Uncategorized **Tags**: None ## README # springboot_nextjs_blog 这是一个基于 ThriveX 生态整理出来的本地集成仓库,用于把后端 API、管理后台和前端博客放在同一个工作区里进行开发、调试和部署。 本仓库包含三个子项目: | 目录 | 说明 | 技术栈 | | --- | --- | --- | | `blog_api` | 后端 API 服务 | Spring Boot + MySQL | | `blog_admin` | 管理后台 | React + Vite | | `blog_web` | 前端博客展示端 | Next.js | 上游项目: - ThriveX Server: https://github.com/LiuYuYang01/ThriveX-Server - ThriveX Admin: https://github.com/LiuYuYang01/ThriveX-Admin - ThriveX Blog: https://github.com/LiuYuYang01/ThriveX-Blog ## 默认账号密码 如果你使用的是仓库内自带的初始化 SQL 文件 `blog_api/ThriveX.sql`,默认管理员账号为: - 账号:`admin` - 密码:`123456` 说明: - 这个默认账号来自初始化数据 `blog_api/ThriveX.sql`。 - 密码在 SQL 中以 MD5 形式保存,值为 `e10adc3949ba59abbe56e057f20f883e`,对应明文 `123456`。 - 如果你的数据库已经初始化过,或者你后来改过密码,那么以上默认账号密码不再适用。 - 首次登录后,建议立刻去后台的“系统配置 -> 账户配置”里修改管理员账号和密码。 ## 端口约定 默认端口如下: - API:`9003` - Admin:`9100` - Web:`9001` 默认访问地址: - API:`http://127.0.0.1:9003` - Admin:`http://127.0.0.1:9100` - Web:`http://127.0.0.1:9001` ## 环境要求 建议本地环境至少满足以下条件: - Node.js `20+` - npm `10+` 或 pnpm - JDK `8`、`11` 或 `17` - Maven - MySQL `8.x` Windows 下本仓库已经提供了启动脚本,优先建议直接使用 `scripts/` 里的脚本。 ## 快速开始 ### 1. 修改前端配置 在启动前,先确认两个前端项目的 API 地址配置正确。 `blog_admin/.env` ```env VITE_PROJECT_API=http://localhost:9003/api ``` `blog_web/.env` ```env NEXT_PUBLIC_CACHING_TIME=1 NEXT_PUBLIC_PROJECT_API=http://localhost:9003/api ``` 说明: - `blog_admin/.env` 当前仓库里默认还是占位值,必须改成你实际的 API 地址。 - 这两个变量都属于前端构建时注入配置。修改后如果服务已经在运行,需要重新启动前端。 ### 2. 启动后端 API 推荐直接使用脚本: ```powershell .\scripts\run_api.ps1 ``` 这个脚本会做几件事: - 自动寻找兼容的 JDK 8/11/17 - 检查并释放 API 端口占用 - 连接 MySQL - 如果数据库为空,则自动导入 `blog_api/ThriveX.sql` - 用 Maven 打包并启动后端 - 当前脚本会以后台模式启动 API,日志默认写到 `scripts/logs/run_api.out.log` 和 `scripts/logs/run_api.err.log` `run_api.ps1` 的默认数据库参数是: - `DbHost=127.0.0.1` - `DbPort=3306` - `DbName=ThriveX` - `DbUsername=root` - `DbPassword=root` 如果你的本地数据库不是这个配置,可以这样传参: ```powershell .\scripts\run_api.ps1 -DbHost 127.0.0.1 -DbPort 3306 -DbName ThriveX -DbUsername root -DbPassword root ``` 如果你想改 API 端口,也可以这样: ```powershell .\scripts\run_api.ps1 -Port 9003 ``` ### 3. 启动管理后台 ```powershell .\scripts\run_admin.ps1 ``` 特点: - 启动前会检测端口占用 - 如果端口已被占用,会先杀掉占用进程树 - 以前台模式启动,终端会实时输出日志 ### 4. 启动前端博客 ```powershell .\scripts\run_web.ps1 ``` 特点与 `run_admin.ps1` 一致: - 启动前先清理端口占用 - 前台模式启动 - 终端实时输出日志 ## 手动启动方式 如果你不想使用 PowerShell 脚本,也可以分别手动启动。 ### API 先准备环境变量: - `PORT` - `DB_INFO` - `DB_USERNAME` - `DB_PASSWORD` - `SPRING_PROFILES_ACTIVE` 然后执行: ```powershell cd .\blog_api mvn -pl blog -am package -DskipTests java -jar .\blog\target\blog-1.0-SNAPSHOT.jar --spring.profiles.active=dev ``` 其中: - `DB_INFO` 形如 `127.0.0.1:3306/ThriveX` - `application-dev.yml` 和 `application-pro.yml` 都依赖这些环境变量 ### Admin ```powershell cd .\blog_admin npm install npm run dev -- --host 127.0.0.1 --port 9100 ``` ### Web ```powershell cd .\blog_web npm install npm run dev -- --hostname 127.0.0.1 --port 9001 ``` ## 如何修改配置 配置大体分成三类:前端构建配置、后端运行配置、后台动态配置。 ### 1. 前端构建配置 #### `blog_admin/.env` 主要配置: - `VITE_PROJECT_API` 用途: - 控制后台请求哪个 API 地址 示例: ```env VITE_PROJECT_API=http://localhost:9003/api ``` #### `blog_web/.env` 主要配置: - `NEXT_PUBLIC_PROJECT_API` - `NEXT_PUBLIC_CACHING_TIME` 用途: - 控制前台博客请求哪个 API 地址 - 控制页面缓存时间 示例: ```env NEXT_PUBLIC_CACHING_TIME=1 NEXT_PUBLIC_PROJECT_API=http://localhost:9003/api ``` 注意: - 这类 `VITE_` 和 `NEXT_PUBLIC_` 配置修改后都需要重新构建或重启对应前端服务。 ### 2. 后端运行配置 后端主要配置文件在: - `blog_api/blog/src/main/resources/application.yml` - `blog_api/blog/src/main/resources/application-dev.yml` - `blog_api/blog/src/main/resources/application-pro.yml` 你需要重点关注这些项: - 服务端口:`PORT` - 数据库连接:`DB_INFO` - 数据库用户名:`DB_USERNAME` - 数据库密码:`DB_PASSWORD` - Spring Profile:`SPRING_PROFILES_ACTIVE` - JWT 密钥:`jwt.secret-key` - 上传目录:`file.dir` 其中: - `application.yml` 里定义了通用配置,比如 JWT、Knife4j、文件上传和本地存储策略。 - `application-dev.yml` / `application-pro.yml` 里定义了服务端口和数据库来源。 - 当前 API 的本地上传目录默认是 `./upload/`。如果是生产环境,建议把它挂到持久化目录。 ### 3. 后台动态配置 很多站点信息其实不需要改代码,而是登录后台后直接修改。 后台“系统配置”页面包含这些分组: - 账户配置 - 网站配置 - 主题配置 - 个人配置 - 其他设置 通常这类内容适合在后台里改,而不是直接改源码: - 管理员账号和密码 - 网站标题、描述、SEO - 个人资料、头像、介绍 - 主题配置 - 邮件、高德地图、百度统计等业务配置 如果你使用了初始 SQL,数据库里已经带有一部分默认内容和配置表数据。 ## 部署说明 这里给出两种思路:本地部署和生产部署。 ### 本地部署 本地调试最简单的方式就是直接使用仓库提供的脚本: ```powershell .\scripts\run_api.ps1 .\scripts\run_admin.ps1 .\scripts\run_web.ps1 ``` 优点: - 不需要手动处理端口占用 - API 可自动初始化数据库 - 前端采用前台日志模式,便于排错 ### 生产部署建议 推荐把三个服务拆开部署,最好使用独立域名或子域名: - `api.example.com` -> `blog_api` - `admin.example.com` -> `blog_admin` - `www.example.com` -> `blog_web` 这样可以少处理很多路径前缀和反向代理细节。 #### API 生产部署 基本流程: ```powershell cd .\blog_api mvn -pl blog -am package -DskipTests java -jar .\blog\target\blog-1.0-SNAPSHOT.jar --spring.profiles.active=pro ``` 部署前建议准备好这些环境变量: - `PORT` - `DB_INFO` - `DB_USERNAME` - `DB_PASSWORD` - `SPRING_PROFILES_ACTIVE=pro` 同时建议你: - 使用独立 MySQL 实例 - 为上传目录做持久化 - 使用 Nginx 做反向代理 #### Admin 生产部署 `blog_admin` 是 Vite 项目,生产部署本质上是静态站点部署: ```powershell cd .\blog_admin npm install npm run build ``` 构建完成后,将 `dist/` 部署到 Nginx 或其他静态文件服务器即可。 注意: - `VITE_PROJECT_API` 必须在构建前改成生产 API 地址。 - 如果改了 `.env`,必须重新构建。 #### Web 生产部署 `blog_web` 是 Next.js 项目,建议使用 Node 进程运行: ```powershell cd .\blog_web npm install npm run build npm start ``` 注意: - `NEXT_PUBLIC_PROJECT_API` 必须在构建前改成生产 API 地址。 - 默认生产端口是 `9001`。 - 当前配置启用了 `standalone` 输出模式,适合做容器化或独立 Node 部署。 ### Docker 仓库中已提供 Dockerfile: - `blog_api/Dockerfile` - `blog_admin/dockerfile` - `blog_web/Dockerfile` 可以作为容器化部署参考,但当前仓库没有提供统一的 `docker-compose.yml` 或一键编排方案。若你要正式上线,建议你自己补一份 Compose 或 Kubernetes 配置,把下面这些内容一起收口: - MySQL - API - Admin - Web - 上传目录持久化 - 反向代理 ## 常见问题 ### 1. 为什么后台能启动但请求失败? 先检查 `blog_admin/.env` 的 `VITE_PROJECT_API` 是否还是占位值。如果没改成你自己的 API 地址,页面虽然能打开,但接口一定会失败。 ### 2. 为什么默认账号密码登录不上? 通常只有两种情况: - 你没有导入仓库里的初始 SQL - 你导入过 SQL,但后来已经修改过管理员账号或密码 ### 3. 配置改了为什么不生效? 要看你改的是哪一类配置: - 前端 `.env` 改完后,要重启或重新构建前端 - 后端环境变量改完后,要重启 API - 后台系统配置改完后,通常直接保存即可生效 ## 目录说明 ```text springboot_nextjs_blog/ ├── blog_api/ # Spring Boot 后端 ├── blog_admin/ # React + Vite 管理后台 ├── blog_web/ # Next.js 前端博客 ├── scripts/ # 本地启动脚本 └── README.md ``` ## 致谢 感谢上游作者 LiuYuYang01 以及 ThriveX 的所有贡献者。本仓库主要用于本地学习、集成和调试,相关源码、设计思路和项目能力主要来源于上游开源项目。 ## 开源协议说明 本仓库根目录保留了现有 `LICENSE` 文件。与此同时,本仓库中涉及的上游代码、资源和衍生内容,仍应遵循对应上游仓库中声明的开源协议、版权说明和使用约定。 使用本仓库时请特别注意: - 请保留原作者、原项目和上游仓库的来源说明。 - 如对上游代码进行修改、再分发或公开部署,请遵循对应上游仓库中的 `LICENSE` 和 `README`。 - 若不同仓库之间的协议要求存在差异,请以上游仓库当前公开文本为准。