前言
为什么想要搭建这个博客?
程序员从业8年,期间学过一些东西,用过一些东西,然后遗忘,然后再次翻书,周而复始,少有总结的时候。
少时学编程,有时颇有趣味。有所悟、有所得、豁然开朗、别有洞天的感觉,就像足球场上一个潇洒利落的拉球转身过人,很美妙。
然而一路走来,发现除了书柜里面看过的书,熟稔于胸的并没有多少,总需要一遍遍地翻书。
为了更好地记忆,将点滴记录于斯,算是一个学习日志,便于自己回顾。
一件事情在开头总是想的很美好,然而事实总会跟你对着干,有些事情不是有了希望才去坚持,而是坚持了才有希望。
于是,博客开篇,希望不算太晚…
编程是个脑力活,再好的记性也不如烂笔头,还是坚持把这个博客完善下来。
文章概述
- 关于项目,对于学习Springboot是个挺不错的练手项目,可以让你在烦恼的业务逻辑中保持一颗纯洁的心
- 如何从零开始,使用Springboot开发项目
- 开发前的一些准备工作,以及思考项目整体结构与思路
- 记录开发过程中遇到的一些难题以及bug
- 总结目前博客网站的一些优缺点
- 思考整个项目有哪些可以优化的地方,以及有哪些可增加的功能
页面展示
首页展示
文章编辑
后台管理
用户个人中心
参数设置
项目需求
项目背景
对于初学Springboot的朋友来说,最好的一个学习方式就是那一个功能俱全的项目来练练手,通过自己重构项目来发现其中的潜在难题,并且也能很好的在编码过程中总结和发现问题、解决问题。使用Springboot开发的博客系统,简单并且实用,适合做练手项目。
功能需求
主页
-
博客汇总,以列表形式展示文章,并附上文章作者、发布日期、分类情况以及文章简要
-
能够以分类形式查看文章
-
能够以时间列表方式归档文章
-
可实现通过标签查找所有相关文章
-
个人介绍、联系方式
-
博客网站更新记录
-
友链链接
后台管理
-
网站仪表盘,记录网站访客量情况
-
文章管理
1.分页展示文章信息
2.可对文章进行再编辑以及删除文章 -
发布文章
1.使用markdown编辑器,支持插入代码,插入图片等功能
2.文章可选择分类和标签,以及转载文章支持链接原作者文章 -
分类管理,支持增加、删除、修改分类
-
友情链接
1.支持增加友情链接
2.支持删除友情链接 -
反馈信息管理,可查看用户反馈信息
安装部署需求
- 可以使用docker方式部署,也可支持-jar方式
- 使用springboot自带方式打包
非功能需求
性能需求
- 首页响应时间不超过2秒钟
- 文章页响应时间不超过3秒钟
项目设计
总体设计
-
本项目用到的技术和框架
1.项目构建:Maven
2.web框架:Springboot
3.数据库ORM:Mybatis
4.数据库连接池: HikariCP
5.分页插件:PageHelper
6.数据库:MySql
7.缓存:Redis
8.前端模板:Thymeleaf
9.文章展示:Editor.md -
本项目中的关键点
1.采用Springboot开发,数据库使用连接池加orm框架的模式,对于系统的关键业务使用Redis缓存,加快相应速度。
2.整体系统采用门户网站+后台管理+用户个人中心的方式搭建,门户网站展示博客内容以及博主介绍,后台管理用于编辑文章,查看反馈,管理评论留言。
3.使用阿里云OSS进行静态资源存储,以及CDN全站加速。 -
环境
工具 | 名称 |
---|---|
开发工具 | IDEA |
语言 | JDK1.8、HTML、css、js |
数据库 | Mysql5.6 |
项目框架 | SSM |
ORM | Mybatis |
安全框架 | SpringSecurity |
缓存 | Redis |
项目构建 | Maven |
运行环境 | 阿里云Centos7 |
结构设计
对于熟悉Spring开发的朋友来说,相信对此结构也不会陌生。平时的开发过程中,结构设计是重要的环节,特别是协作开发的时候,明细的分包,模块化,可减少代码提交时的冲突。并且明确的结构有助于我们快速的寻找所对应的类。
业务设计
发布文章流程
登录流程
用户个人资料修改流程
打包、部署和运行
- 本项目采用Springboot的maven插件进行打包,打包结果:****.jar
- 部署方式:使用 nohup java -jar ******.jar >******.log 2>&1 &的方式,后台启动项目,并在该路径下生成运行日志
部署方式:docker +compose
Dockerfile
FROM openjdk:8-jdk-alpine3.9
RUN mkdir -p /app/myblog
WORKDIR /app/myblog
#Copy Jar
COPY myblog.jar /app/myblog/
ENV TZ Asia/Shanghai
EXPOSE 443
EXPOSE 80
ENTRYPOINT ["java","-jar","myblog.jar"]
docker-compose.xml
version: '2' # 表示该 Docker-Compose 文件使用的是 Version 2 file
services:
myblog: # 指定服务名称
build: . # 指定 Dockerfile 所在路径
ports: # 指定端口映射
- "80:80"
- "443:443"
网站建设
- 服务器选用的是阿里云centos7
- 域名是阿里云上购买的.cn的域名
- 网站备案以及公安机关备案,后者备案时间较短但是那个备案网站经常挂掉,所以公安机关备案还得看运气。而网站备案时间就比较长了,按照阿里云的流程走大概1个月左右时间,需要上传个人身份信息以及邮寄个人资料过去。
- 网站配置了安全证书,可实现https访问以及自动从http跳转到https
本人秉持开源原则,待后期网站功能完善之后会同步源码至Github、码云中。需要搭建个人博客的朋友欢迎使用本博客,只要给我个stars就好啦,哈哈。如果搭建过程中有各种问题欢迎来骚。