/zblog

ZBLOG - 一款基于Springboot2.5、Vue2的前后端分离的开源博客框架

Primary LanguageJavaMIT LicenseMIT

博客介绍

孙涛的个人博客

基于 Springboot + Vue 开发的前后端分离博客

在线地址 | 目录结构 | 项目特点 | 运行环境 | 开发环境 | 快速开始 | 注意事项 | 更新日志 | 鸣谢

在线地址

项目链接: https://www.suntaoblog.com

后台链接: https://admin.suntaoblog.com

测试账号:test,密码:123456,可登入后台查看。

Github地址(后端): https://github.com/stazxr/zblog

Github地址(前台): https://github.com/stazxr/zblog-web-portal

Github地址(后台): https://github.com/stazxr/zblog-web-admin

您的 star 是我坚持的动力,感谢大家的支持,欢迎提交 pr 共同改进项目。

目录结构

前端项目

zblog-web-portal:前台

zblog-web-admin:后台

后端项目

zblog:后端

数据库

SQL 文件位于后端项目的 doc 目录下,需要 MYSQL5.7 版本。

base.sql(基础表):由 user、role、permission、router、interface、dict、log、file、version、server_node 及一些中间表和临时表组成

service.sql(业务表):由 article、article_category、article_tag、article_column、friend_link、website_config、visitor、talk、page、 album、message、comment 及一些中间表和临时表组成。

xxljob.sql(任务表):由 xxljob 自身的表和部分自定义的表组成。

ps:安装 MYSQL 后,请先执行 base.sql,然后在执行 service.sql。

后端目录结构及功能介绍

后端目录是按模块划分的,总体分为:util、core、base、service(业务)、log(扩展)、xxljob(扩展)、notify(扩展) 模块

zblog
├── doc                      --  简单的笔记
├── sql                      --  数据库初始化脚本(5.7)
├── zblog-base               --  ZBLOG 框架的基础功能组件
├────── component            --  三方组件封装
├────────── captcha          --  验证码封装(基于 EasyCaptcha),支持算术、中文、数字等类型
├────────── email            --  邮箱封装,支持发送普通文本邮件、HTML邮件、带图片的邮件、带附件的邮件 
├────────── file             --  文件上传组件,支持本地、阿里云、七牛云上传
├────────── id               --  全局 ID 生成器,支持单机、多机部署两种模式
├────────── router           --  路由管理器,实现系统接口扫描和加载功能
├────────── security         --  安全配置,实现基于 nimbus-jose-jwt 的授权、认证、续签方案
├────────── webssh           --  WebSocket 支持,主要用于实现 Webssh 终端
├────── controller           --  控制层,包含用户管理、角色管理、权限管理、路由管理、字典管理、操作日志、接口日志、数据监控、服务监控、版本维护、存储管理、节点管理等模块
├────── converter            --  对象转换器(基于 mapstruct),支持 Vo、Dto、Entity 之间的转换
├────── domain               --  领域对象:Bo、Dto、Entity、Enums、Vo
├────── mapper               --  数据层
├────── runner               --  执行器,用于系统启动后执行一些操作,如初始化路由,初始化验证码、初始化黑白名单等
├────── service              --  业务层
├────── util                 --  Base 组件使用的工具类和常量类,eg:GenerateIdUtils
├── zblog-core               --  ZBLOG 框架的核心组件
├────── annotation           --  自定义注解
├────── base                 --  基础类,BaseEntity、BaseDto、BaseVo、BaseMapper、BaseConverter 等
├────── cache                --  自定义系统缓存,支持 Memory 和 Redis 两种模式
├────── config               --  配置中心,缓存、线程、WebMvc、MybatisPlus、统一返回
├────── enums                --  自定义枚举,ResultCode
├────── exception            --  自定义异常,全局异常处理
├────── handler              --  处理器,实现 mybatis-plus 的字段自动填充
├────── model                --  模型对象,Result,ErrorMeta
├────── util                 --  Core 组件使用的工具类扩展
├── zblog-jexl               --  ZBLOG 框架的表达式引擎组件,依赖 org.apache.commons commons-jexl3 组件
├────── ExpressionUtils.java --  对 JEXL3 进行二次封装,核心工具类
├────── function             --  自定义函数扩展
├── zblog-log                --  ZBLOG 框架的日志组件,提供切面日志等功能,可以通过 @EnableLog 注解来开启日志功能
├────── annotation           --  日志相关注解,包含 @EnableLog(是否开启全局注解),@IgnoredLog(不记录日志),@Log(操作日志) 注解
├────── aop                  --  日志切面的实现
├────── domain               --  领域对象:Bo、Dto、Entity、Enums、Vo
├────── mapper               --  数据层
├────── service              --  业务层
├── zblog-notify             --  ZBLOG 框架的消息组件(待实现)
├── zblog-service            --  ZBLOG 框架的业务组件,主要是 ZBLOG 的业务功能(发博文、发说说、留言等)
├────── controller           --  控制层,包含文章相关模块,网站管理相关模块等
├────── converter            --  对象转换器(基于 mapstruct),支持 Vo、Dto、Entity 之间的转换
├────── domain               --  领域对象:Bo、Dto、Entity、Enums、Vo
├────── mapper               --  数据层
├────── rabbitmq             --  消息队列,内置文章定时发布功能(需安装 RabbitMQ 环境)
├────── service              --  业务层
├────── strategy             --  策略模式,内置文章搜索策略(目前只支持 Mysql)
├────── util                 --  Core 组件使用的工具类和常量类
├────── ZblogApplocation     --  项目启动类,一切都从这里开始~
├── zblog-util               --  ZBLOG 框架的工具组件,实现字符串、日期、加解密、正则、POI、IO、Assert、OSS、JSCH 等工具的的封装
├── zblog-xxljob             --  ZBLOG 框架的任务组件(基于 XXLJOB)(待实现)
└── pom.xml                  --  pom.xml,版本中心

项目特点

  • 前台参考 Hexo 设计,美观简洁,响应式体验好
  • 后台参考 ElAdmin 设计,侧边栏,历史标签,面包屑自动生成
  • 前后端分离部署,技术较新颖。
  • 基于 nimbus-jose-jwt 的授权、认证、续签方案
  • 支持动态权限修改,采用RBAC模型,前端菜单、按钮和后台权限实时更新
  • 统一返回结果、返回状态码,方便前台判断请求结果
  • 切面日志,支持统计系统的接口日志和用户的操作日志
  • 前后端统一异常拦截处理,统一输出异常,避免繁琐的判断
  • 采用 WangEditor 编辑器
  • 参考某博客平台的文章发布样式,支持定时发布、文章审核、代码高亮、上传视频和附件等特性
  • 支持发布说说、相册,随时分享趣事,记录生活的美好
  • 留言采用弹幕墙组件,更加炫酷
  • 整个项目可以做脚手架使用,service 模块除外,该模块包含整个博客的业务功能
  • 代码严格遵循阿里巴巴开发规范,模块化开发,利于开发者学习
  • 包含 jexl3、xxljob、RabbitMQ 等技术,方便开发者了解

运行环境

服务器: 阿里云2核2G 宽带1Mbps CentOS8.2

CDN: 阿里云全站加速

对象存储: 阿里云OSS

数据库: 阿里云MySQL

缓存: 阿里云Redis

开发环境

开发环境 版本
JDK 1.8
MySQL 5.7
Redis 6.1.3
RabbitMQ 3.8.0

快速开始

本地环境搭建

详见文章:本地环境搭建(待补充)

项目配置指导

详见文章:项目配置指导(待补充)

服务器部署项目

详见文章:项目部署教程-服务器篇(待补充)

容器部署项目

详见文章:项目部署教程-容器篇(待补充)

阿里云CDN加速配置指导

详见文章:阿里云CDN加速配置指导(待补充)

注意事项

  • 项目拉下来运行后,可到后台管理页面网站配置处修改博客相关信息
  • 邮箱配置,第三方授权配置需要自己申请
  • 项目默认采用本地文件上传模式,如果需要使用阿里云OSS,请自己申请,七牛云可以免费申请10G,可参考文章【七牛云OSS申请(待补充)

项目总结

不只是博客,更希望大家能通过它学习了解到更多的技能!

更新日志

鸣谢

  • 感谢 PanJiaChen 大佬提供的前端模板(后台)

  • 感谢 风丶宇 大佬提供的前端模板(前台),仓库已下线