没有内容的订阅

专栏器2

0 章节专栏作者:专栏器2111 次浏览0 次收藏登录可见

前言

项目已有较详细的 项目搭建文档 ,同时包括了 Windows、Linux 以及 Docker 环境下蘑菇博客的搭建。在使用过程中遇到问题时,首先认真阅读项目搭建文档 ,同时 FAQ文档 还收集了小伙伴咨询的问题,可以提前阅读~

【提问前】可以先 百度 或者 Google 进行解决,有的问题通过搜索引擎很快就能得到解决

【提问前】可以首先看看 issue 或者 FAQ文档,可能你的问题别人也遇到过

【提问前】可以提前阅读 如何向开源社区提问题

【提问】推荐使用 Gitee issue 进行提问,因为issue解决后能够保留解决记录,帮助其它小伙伴避坑。其次可以使用 QQ群 或者 微信群  进行提问。群里提问注意提问的时间,把遇到问题的详细过程都描述清楚,最好配上图文信息,这样能有利于更高效的解决问题。

后期维护

项目后台目前有 Eureka 版本和 Nacos 版本,其中 Eureka 版本使用的是 SpringCloud 一些组件,Nacos 版本使用的是 SpringCloudAlibaba 的一些组件,例如 Nacos、Sentinel 等

  • Eureka 版本请切换至 Eureka 分支(已停止维护,将不再进行新功能的开发)
  • Nacos 版本请切换至 Nacos 分支(作为以后长期维护的分支)
  • master 分支为主分支,是基于 Nacos 分支的稳定版本

项目介绍

蘑菇博客( MoguBlog ),一个基于微服务架构的前后端分离博客系统。Web 端使用 Vue + ElementUi , 移动端使用 uniapp 和 ColorUI。后端使用 SpringCloud + SpringBoot + Mybatis-plus进行开发,使用 Jwt + SpringSecurity 做登录验证和权限校验,使用 ElasticSearch 和 Solr 作为全文检索服务,使用 Github Actions完成博客的持续集成,使用 ElasticStack 收集博客日志,文件支持上传本地、七牛云 和 Minio.

  • 蘑菇博客大部分功能是我个人进行开发的,因能力有限,其中很多技术都是一边学习一边使用的,可以说蘑菇博客也是一个我用来熟悉技术的项目,所以很多地方可能考虑不周,故有能改正的地方,还请各位老哥能够指出~
  • 现在挺多是SSM或者SSH的博客管理系统,想用 SpringBoot + SpringCloud + Vue 的微服务架构进行尝试项目的构建,里面很多功能可能只是为了满足自己的学习需求而引入的,大家可以根据自己服务器配置来选择启动的服务,因此本博客也是一个非常好的 SpringBoot、SpringCloud以及 Vue 技术的入门学习项目。
  • 原来做过 Vue + ElementUi 做过管理系统,所以现在打算做一套自己的、基于当前最新技术栈、前后端分离的微服务博客系统。
  • 蘑菇博客中的一些文章,很多都来自我平时的学习笔记,目前托管在另一个仓库:LearningNotes,里面涵盖了 JVM、JUC、Java,Spring,SpringCloud,计算机网络,操作系统,数据结构,Vue、Linux 等 ,感兴趣的小伙伴可以跳转该仓库 Star支持 一下

站点演示

首先特别感谢阿里云提供的 学生“在家实践” 计划,免费提供的 6 个月的 2核4G1M 的服务器,所以就刚好以此用来做蘑菇博客的演示站点,同时我也在搭建的时候,顺便录制了一套视频:利用阿里云免费服务器搭建个人博客 ,感兴趣的小伙伴可以参考视频一起完成部署~

【演示前端】:http://demoweb.moguit.cn/

【演示后端】:http://demoadmin.moguit.cn/

【演示账号】:点击获取

【小程序】蘑菇博客的移动端版本,可以扫码体验(代码在Nacos分支下的uniapp_mogu_web文件夹)

QQ小程序 微信小程序

蘑菇博客社区版

蘑菇博客的定位是个人博客系统,而蘑菇博客社区版定位是多人博客系统。社区版在原有蘑菇博客的基础上加入了更多的社区玩法,如:支持用户投稿、个人主页、用户签到、关注/取关、收藏/点赞、积分模块、VIP特权功能、用户动态(蘑菇圈)、面经模块、课程模块、消息通知、公众号登录/管理、私信/群聊模块、SEO优化等。。

关于蘑菇社区版更多的更新,可查看:蘑菇社区更新日志

社区版演示环境如下,目前 蘑菇官网 使用的是蘑菇博客社区版代码

【社区演示前端】:http://w.moguit.cn

【社区演示后端】:http://a.moguit.cn

【演示账号】:点击获取

目前,蘑菇社区版源码暂未开源,可通过赞助蘑菇的方式进行获取,详情可添加陌溪微信了解:coder_moxi (备注:蘑菇社区)

蘑菇博客Go版本

mogu-go-v2 是根据蘑菇博客改编的一个 Golang 简化版分支,实现了蘑菇博客后台原有的大部分基础功能,同时前端代码和数据库基本没有变化,因此可以直接使用蘑菇博客原有的前端页面。

mogu-go-v2 目前采用的技术有:beego、gorm、mysql、redis 和 nginx。相比于蘑菇博客微服务版,Golang版蘑菇能够做到 1C2G 的服务器轻松运行,再也不怕网站第二天起来就宕机了~。

参考蘑菇博客Golang版安装指南,快速在 Windows 平台搭建蘑菇博客Go版开发环境

项目中初始用户和密码

  • 后台登录:用户:admin,密码:mogu2018
  • 前台登录:用户:mogu2018,密码:mogu2018
  • Mysql:用户:root,密码:mogu2018
  • Redis:密码:mogu2018
  • 远程SSH初始密码:用户:root,密码:mogu2018
  • RabbitMQ管理页面: 用户:admin,密码:mogu2018
  • Nacos管理页面: 用户:nacos,密码:nacos
  • Sentinel管理页面: 用户:sentinel,密码:sentinel
  • 蘑菇博客监控页面:用户:user,密码:password123
  • Druid初始密码: 用户:admin,密码:123456

运行配置

蘑菇博客使用了一些监控的 SpringCloud 组件,但是并不一定都需要部署,必须启动的服务包含

nacos,nginx,rabbitmq, redis,mysql,mogu-gateway,mogu-sms,mogu-picture, mogu-web, mogu-admin

其它的服务都可以不启动,也不影正常使用,可以根据自身服务器配置来启动

最低配置:1核2G 【需开启虚拟内存】

推荐配置:2核4G 【双十二特惠】

【阿里云】云服务器双12狂欢特惠,1核2G 5M轻量级应用服务器114元/年【博主使用】 点我传送

【腾讯云】云产品限时秒杀,爆款1核2G云服务器,首年99元(老用户重新用微信QQ注册即可) 点我进入

项目特点

  • 友好的代码结构及注释,便于阅读及二次开发
  • 实现前后端分离,通过 Json 进行数据交互,前端再也不用关注后端技术
  • 页面交互使用 Vue2.x,极大的提高了开发效率。
  • 引入Swagger 文档支持,方便编写 API 接口文档。
  • 引入RabbitMQ 消息队列,用于邮件发送、更新 Redis 和 Solr
  • 引入JustAuth 第三方登录开源库,支持 Gitee、Github 账号登录。
  • 引入ElasticSearch 和 Solr 作为全文检索服务,并支持可插拔配置
  • 引入Github Actions 工作流,完成蘑菇博客的持续集成、持续部署。
  • 引入七牛云对象存储,同时支持本地文件存储
  • 引入 RBAC 权限管理设计,灵活的权限控制,按钮级别的细粒度权限控制,满足绝大部分的权限需求
  • 引入 Zipkin 链路追踪,聚合各业务系统调用延迟数据,可以一眼看出延迟高的服务
  • 采用自定义参数校验注解,轻松实现后端参数校验
  • 采用 AOP + 自定义注解 + Redis 实现限制IP接口访问次数
  • 采用自研的评论模块,实现评论邮件通知
  • 采用 Nacos 作为服务发现和配置中心,轻松完成项目的配置的维护
  • 采用 Sentinel 流量控制框架,通过配置再也不怕网站被爆破
  • 采用uniapp 和ColorUi 完成蘑菇博客的移动端门户页面搭建
  • 支持多种文本编辑器,Markdown 编辑器(Vditor)和富文本编辑器(CKEditor)随心切换
  • 采用 ElasticStack【ElasticSearch + Beats + Kibana + Logstash】搭建蘑菇博客日志收集
  • 采用 Docker Compose 完成容器编排,Portainer 实现容器可视化,支持一键部署线上环境

项目文档

文档地址:http://moxi159753.gitee.io/mogu_blog_doc

备用文档地址:http://doc.moguit.cn

项目地址

目前项目托管在 Gitee 和 Github 平台上中,欢迎大家 Star 和 Fork 支持~

项目目录

  • MoguBlog 是一款基于最新技术开发的多人在线、简洁的博客系统。
  • mogu_admin: 提供admin端API接口服务;
  • mogu_web:提供web端API接口服务;
  • mogu_eureka: 服务发现和注册【注: Nacos分支没有该目录,用Nacos作为服务发现组件】
  • mogu_picture: 图片服务,用于图片上传和下载;
  • mogu_sms:消息服务,用于更新ElasticSearch、Solr索引、邮件和短信发送
  • mogu_monitor:监控服务,集成SpringBootAdmin用于管理和监控SpringBoot应用程序
  • mogu_spider:爬虫服务(目前还未完善)
  • mogu_gateway:网关服务(目前还未完善)
  • mogu_zipkin:链路追踪服务,目前使用java -jar的方式启动
  • mogu_search:搜索服务,ElasticSearch和Solr作为全文检索工具,支持可插拔配置,默认使用SQL搜索
  • mogu_commons:公共模块,主要用于存放Entity实体类、Feign远程调用接口、以及公共config配置
  • mogu_utils: 是常用工具类;
  • mogu_xo: 是存放 VO、Service,Dao层的
  • mogu_base: 是一些Base基类
  • doc: 是蘑菇博客的一些文档和数据库文件
  • vue_mogu_admin:VUE的后台管理页面
  • vue_mogu_web:VUE的门户网站
  • uniapp_mogu_web:基于uniapp 和 colorUi 的蘑菇博客移动端门户页面(Nacos分支)
  • nuxt_mogu_web:Nuxt的门户网站,主要用于支持SEO搜索引擎优化(目前还未完善)

技术选型

系统架构图

image text

蘑菇博客系统架构图,使用 Processon 在线绘制

后端技术

技术 说明 官网
SpringBoot MVC框架 https://spring.io/projects/spring-boot
SpringCloud 微服务框架 https://spring.io/projects/spring-cloud/
SpringSecurity 认证和授权框架 https://spring.io/projects/spring-security
MyBatis-Plus ORM框架 https://mp.baomidou.com/
Swagger-UI 文档生产工具 https://github.com/swagger-api/swagger-ui
Kibana 分析和可视化平台 https://www.elastic.co/cn/kibana
Elasticsearch 搜索引擎 https://github.com/elastic/elasticsearch
Beats 轻量型数据采集器 https://www.elastic.co/cn/beats/
Logstash 用于接收Beats的数据并处理 https://www.elastic.co/cn/logstash
Solr 搜索引擎 http://lucene.apache.org/solr/
RabbitMQ 消息队列 https://www.rabbitmq.com/
Redis 分布式缓存 https://redis.io/
Docker 容器化部署 https://www.docker.com
Druid 数据库连接池 https://github.com/alibaba/druid
七牛云 七牛云 - 对象储存 https://developer.qiniu.com/sdk#official-sdk
JWT JWT登录支持 https://github.com/jwtk/jjwt
SLF4J 日志框架 http://www.slf4j.org/
Lombok 简化对象封装工具 https://github.com/rzwitserloot/lombok
Nginx HTTP和反向代理web服务器 http://nginx.org/
JustAuth 第三方登录的工具 https://github.com/justauth/JustAuth
Hutool Java工具包类库 https://hutool.cn/docs/#/
阿里大于 短信发送平台 https://doc.alidayu.com/doc2/index.htm
Github Actions 自动化部署 https://help.github.com/en/actions
Zipkin 链路追踪 https://github.com/openzipkin/zipkin
Flexmark-java Markdown转换Html https://github.com/vsch/flexmark-java
Ip2region 离线IP地址定位库 https://github.com/lionsoul2014/ip2region
Minio 本地对象存储服务 https://min.io/
Docker Compose Docker容器编排 https://docs.docker.com/compose/
Portainer Docker可视化管理 https://github.com/portainer/portainer

前端技术

技术 说明 官网
Vue.js 前端框架 https://vuejs.org/
Vue-router 路由框架 https://router.vuejs.org/
Vuex 全局状态管理框架 https://vuex.vuejs.org/
Nuxt.js 创建服务端渲染 (SSR) 应用 https://zh.nuxtjs.org/
Element 前端ui框架 https://element.eleme.io
Axios 前端HTTP框架 https://github.com/axios/axios
Echarts 图表框架 www.echartsjs.com
CKEditor 富文本编辑器 https://ckeditor.com/
Highlight.js 代码语法高亮插件 https://github.com/highlightjs/highlight.js
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
clipboard.js 现代化的拷贝文字 http://www.clipboardjs.cn/
js-beautify 美化JavaScript代码 https://github.com/beautify-web/js-beautify
FileSaver.js 保存文件在客户端 https://github.com/eligrey/FileSaver.js
SortableJS 功能强大的JavaScript 拖拽库 http://www.sortablejs.com/
vue-side-catalog 目录导航栏 https://github.com/yaowei9363/vue-side-catalog
uniapp 移动端跨平台语言 https://uniapp.dcloud.io/
colorUi 专注视觉的小程序组件库 https://github.com/weilanwl/ColorUI
showdown 用Javascript编写的Markdown 到Html转换器 https://github.com/showdownjs/showdown
turndown 用JavaScript编写的HTML到Markdown转换器 https://github.com/domchristie/turndown

快速开始