前言

为什么想要搭建这个博客?

程序员从业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就好啦,哈哈。如果搭建过程中有各种问题欢迎来骚。

SpringBoot之从零搭建博客网站相关推荐

  1. SpringBoot之从零搭建博客网站(可提供源码)

    文字不够,图片来凑. 前言 为什么想要搭建这个博客? 我还记得,在大二寒假的某天,同往常一样的在家解决这某个bug,不停地问度娘,很巧的碰到了一个同行在他的博客中完美的记录了我的bug的解决方案,随后 ...

  2. 个人如何搭建博客网站

    想搭建一个属于自己的网站,一般需要准备以下几样东西: 1.域名 可以理解成网址,别人要通过这个网址访问你的博客,域名要自己买,比如在"阿里云"."腾讯云".&q ...

  3. 群晖NAS 7.X版搭建博客网站,并内网穿透发布公网可访问 8-8

    系列文章 群晖NAS 7.X版搭建博客网站,并内网穿透发布公网可访问 1-8 群晖NAS 7.X版搭建博客网站,并内网穿透发布公网可访问 2-8 群晖NAS 7.X版搭建博客网站,并内网穿透发布公网可 ...

  4. 群晖NAS 7.X版搭建博客网站,并内网穿透发布公网可访问 4-8

    系列文章 群晖NAS 7.X版搭建博客网站,并内网穿透发布公网可访问 1-8 群晖NAS 7.X版搭建博客网站,并内网穿透发布公网可访问 2-8 群晖NAS 7.X版搭建博客网站,并内网穿透发布公网可 ...

  5. 建站规划—基于私有化gitlab/node+hexo搭建博客网站

    目录 概述 建站方案及成本 建站方案 成本 低成本替代方案 概述 本合辑(建站合辑)将介绍如何基于私有化gitlab+pages+Hexo搭建博客网站,由于域名备案周期较长,因此更新可能较慢.根据功能 ...

  6. 群晖NAS 7.X版搭建博客网站,并内网穿透发布公网可访问 6-8

    系列文章 群晖NAS 7.X版搭建博客网站,并内网穿透发布公网可访问 1-8 群晖NAS 7.X版搭建博客网站,并内网穿透发布公网可访问 2-8 群晖NAS 7.X版搭建博客网站,并内网穿透发布公网可 ...

  7. 阿里云轻量级服务器搭建博客网站教程(入门级别搭建)

    阿里云轻量级服务器搭建博客网站教程 先给大家看一下最后的成果:zhangshuaiqi.xyz 使用宝塔面板部署ssl证书,伪静态设置,一键部署wordpress 服务器类型:阿里云轻量级服务器2核4 ...

  8. Django 搭建博客网站-task03:Models的编写

    Django 搭建博客网站 目录 Django 搭建博客网站 前言 一.Models 的编写 二.Blog_config 三.comment 总结 前言 在vscode上连接虚拟机,然后输入命令 bl ...

  9. Django 搭建博客网站-task02:快速搭建网站

    Django 搭建博客网站 目录 Django 搭建博客网站 前言 一.创建 APP 二.将新建的 APP 和项目进行关联 2.1 修改的文件名是 settings.py 2.2 创建超级管理员 2. ...

最新文章

  1. Axure 全局辅助线(转)
  2. 启动targetcli时遭遇ImportError: cannot import name ALUATargetPortGroup故障
  3. android 动画多次使用,IOS使用animation引用同一个动画多次没反应,安卓可以
  4. VS中怎样使用Nuget添加MQTTnet依赖
  5. 科大星云诗社动态20210826
  6. 分享一个自用的,随便找到的组件,留作记录
  7. JavaScript栈的实现
  8. 爱情二十九课,驾驭爱情
  9. android sdk 4.4.4,4.4.4 not in Android SDK manager
  10. 两大数学家是如何撕破脸的|数学界的主义的之争
  11. 用金蝶kis记账王批量审核会计凭证的方法
  12. 输入输出运算符的重载
  13. 公司部分断电,这些人就没法干活?
  14. LNMP编译安装教程
  15. roseha 8.9 for linux oracle 11g,RoseHA 9.0 for Linux配合Oracle12c配置文档_v2.0-2015-04.pdf
  16. arm的一些概念(ARM9、Cortex的区别)
  17. 【小家java】Java中主线程(父线程)与子线程的通信和联系
  18. 九鼎无双一面面经【凉】
  19. canvas绘图有锯齿毛边问题的解决
  20. EMI共模电感一般什么材质你知道吗

热门文章

  1. 浅谈 FFT (终于懂一点了~~)
  2. ubuntu 软件推荐
  3. 图灵、图灵机和图灵测试
  4. 第七届青年地学论坛女科学家论坛学习
  5. 那些被踢“出局”的创始人,现在还好吗?
  6. 用Python如何开发Excel宏脚本?新手必学
  7. jdk1.8,64位linux版本下载路径.永久免费.这是一个爱分享的世界...
  8. 动态网页(JSP 文件)如何连接数据库(SQL Server)--看这里
  9. 如何应对“改变现状”的失败
  10. Français littérature