章鱼博客
章鱼博客,一个基于微服务架构的前后端分离博客系统
站点
【项目地址】:http://zhangyublog.cn/
【项目管理端】:http://81.70.251.237:9527/
项目特点
- 实现前后端分离,通过 Json 进行数据交互,前端再也不用关注后端技术
- 页面交互使用 Vue2.x,极大的提高了开发效率。
- 引入RabbitMQ 和Kafka消息队列,用于邮件发送、更新 Redis 和 ES
- 引入ElasticSearch 作为全文检索服务
- 引入Minio对象存储,同时支持本地文件存储
- 引入 RBAC 权限管理设计,灵活的权限控制,按钮级别的细粒度权限控制,支持网关统一鉴权
- 采用自定义参数校验注解,轻松实现后端参数校验
- 采用 AOP + 自定义注解 + Redis 实现限制IP接口访问次数
- 采用 Nacos 作为服务发现和配置中心,轻松完成项目的配置的维护
- 采用 Sentinel 流量控制框架,通过配置再也不怕网站被爆破
- 支持Markdown 编辑器
- 采用 ElasticStack【ElasticSearch + Beats + Kibana + Logstash】搭建章鱼博客日志收集
- 采用 Docker Compose 完成容器编排,Portainer 实现容器可视化,支持一键部署线上环境
项目地址
项目目录
- blog_admin: 提供admin端API接口服务;
- blog_web:提供web端API接口服务;
- blog_picture: 图片服务,用于图片上传和下载;
- blog_mse:消息服务,用于更新ElasticSearch、邮件发送
- blog_gateway:网关服务
- blog_search:搜索服务,ElasticSearch和Solr作为全文检索工具,默认使用SQL搜索
- blog_commons:公共模块,主要用于存放Entity实体类、Feign远程调用接口、以及公共config配置
- blog_utils: 是常用工具类;
- blog_service: 是存放 VO、Service,Dao层的
- blog_entry: 是一些Base基类
- vue_admin:VUE的后台管理页面
- vue_web:VUE的门户网站
运行配置
章鱼博客使用了一些监控的 SpringCloud 组件,但是并不一定都需要部署,必须启动的服务包含
nacos
,nginx
,rabbitmq
,mysql
, redis
,blog-admin
,blog-gateway
,blog-mse
,blog-picture
, blog-web
, blog-searc
, blog-oauth
系统架构图
技术选型
后端技术
前端技术
技术 | 说明 | 官网 |
---|---|---|
Vue.js | 前端框架 | https://vuejs.org/ |
Vue-router | 路由框架 | https://router.vuejs.org/ |
Vuex | 全局状态管理框架 | https://vuex.vuejs.org/ |
Element | 前端ui框架 | https://element.eleme.io |
Axios | 前端HTTP框架 | https://github.com/axios/axios |
Echarts | 图表框架 | www.echartsjs.com |
Vditor | Markdown编辑器 | https://github.com/Vanessa219/vditor |
vue-cropper | 图片裁剪组件 | https://github.com/xyxiao001/vue-cropper |
vue-image-crop-upload | vue图片剪裁上传组件 | https://github.com/dai-siki/vue-image-crop-upload |
vue-emoji-comment | Vue Emoji表情评论组件 | https://github.com/pppercyWang/vue-emoji-comment |
SortableJS | 功能强大的JavaScript 拖拽库 | http://www.sortablejs.com/ |
vue-side-catalog | 目录导航栏 | https://github.com/yaowei9363/vue-side-catalog |
showdown | 用Javascript编写的Markdown 到Html转换器 | https://github.com/showdownjs/showdown |
turndown | 用JavaScript编写的HTML到Markdown转换器 | https://github.com/domchristie/turndown |
环境搭建
开发工具
工具 | 说明 | 官网 |
---|---|---|
IDEA | Java开发IDE | https://www.jetbrains.com/idea/download |
WebStorm | 前端开发IDE | https://www.jetbrains.com/webstorm/ |
RedisDesktop | Redis可视化工具 | https://redisdesktop.com/download |
SwitchHosts | 本地Host管理 | https://oldj.github.io/SwitchHosts/ |
X-shell | Linux远程连接工具 | https://xshell.en.softonic.com/ |
X-ftp | Linux文件传输工具 | https://www.netsarang.com/zh/all-downloads/ |
SQLyog | 数据库连接工具 | https://sqlyog.en.softonic.com/ |
开发环境
工具 | 版本号 | 下载 |
---|---|---|
JDK | 1.8 | https://www.oracle.com/technetwork/java/javase/downloads/jdk8-downloads-2133151.html |
Maven | 3.3.0+ | http://maven.apache.org/ |
Elasticsearch | 6.3.0 | https://www.elastic.co/downloads |
Solr | 7.0 | http://lucene.apache.org/solr/ |
MySQL | 5.6 | https://www.mysql.com/ |
Erlang | 20.3 | https://www.erlang.org/ |
RabbitMQ | 3.7.4 | http://www.rabbitmq.com/download.html |
Nginx | 1.10 | http://nginx.org/en/download.html |
Redis | 3.3.0 | https://redis.io/download |
Zipkin | 2.12.5 | https://search.maven.org/remote\_content?g=io.zipkin.java&a=zipkin-server&v=LATEST&c=exec |
Nacos | 1.3.2 | https://github.com/alibaba/nacos/releases |
Sentinel | 1.7.2 | https://github.com/alibaba/Sentinel/releases |
致谢
章鱼博客参考了很多开源项目的解决方案
- 感谢杨青小姐姐的博客模板:http://www.yangqq.com/
- 感谢PanJiaChen的Vue后台管理模板:vue-element-admin
- Vue项目搭建参考这篇博客:https://segmentfault.com/a/1190000009506097
- 感谢苞米豆提供的 Mybatis-plus框架:http://mp.baomidou.com/
- 感谢 bihell 的 Dice 博客项目:https://github.com/bihell/Dice
- 感谢 pppercyWang 提供的Emoji表情评论组件:vue-emoji-comment
- 感谢 若依 提供的 RuoYi 项目:https://gitee.com/y_project/RuoYi
- 感谢 yaowei9363 提供的 Vue侧目录组件: vue-side-catalog
- 感谢 奇文社区 提供的 奇文网盘 项目:https://gitee.com/qiwen-cloud/qiwen-file
- 感谢 weilanwl 提供的 ColorUI:https://github.com/weilanwl/ColorUI