作者:13

GitHub:https://github.com/ZHENFENG13

版权声明:本文为原创文章,未经允许不得转载。

**项目演示视频:https://www.bilibili.com/video/av52551095 **

个人博客

对于技术人员来说,拥有自己的个人博客应该是一件令人向往的事情,可以记录和分享自己的观点,想到这件事就觉得有意思,但是刚开始写博客的时候脑海中是没有搭建个人博客这一想法的,因为刚起步的时候连我都不清楚写博客能坚持到第几篇,不过随着时间的推移,博客量的增加,搭建一个私人博客网站的想法就越来越强烈,独立开发,独立维护,然后根据需要一点点的再往项目中添加其他功能,这种感觉虽然没有体会过,不过应该会挺酷的

一边工作,一边更新ssm-maven的代码和博客,其实这些工作所占用的时间点很密集,足够让我忙的找不着北了,由于时间原因也拖更了不少博客。就是在这种情况下,我另一边还在为自己的博客个人站做准备,修改了Tale项目,做了大量的编码工作,然后现在又开始为这个项目的上线及相应的介绍博文做准备,也是有点傻劲儿的。

OK,说了这么多,肯定很多人觉得我在自夸,没错,我就是在夸我自己,因为真的挺辛苦的,有的时候自己还是要给自己一点掌声和自我鼓励的,不然我都不知道我做了这么多是为了什么,哈哈哈哈哈。

选择Tale作为模板的原因及个人想法

开源的商业博客平台很多,优秀之作也自然不少,不过一般都是商业平台,像开发人员的话,可能更追求灵活性及可维护行,因此自己开发一个博客平台或者在优秀的开源博客进行二次开发更好。巧合的是,当我在构思该如何着手这方面工作的时候,看到了一篇关于Java开源博客系统Tale的介绍博文,当时公司的工作也多,因此收藏了起来,一段时间之后才去研究,然后开始按照自己的想法去改造进行了二次开发,这个后面再说,还是说说Tale博客系统,当我打开这个博客网站的时候,目光瞬间就被吸引住了,简单、美观、大方,感觉看上去特别的舒服,炎炎夏日中的一件白衬衫,清爽,洁白,真的是第一眼就喜欢上了这个博客。接着就去研究了项目的部署(过程不表),体验了一下后台功能,作为一个博客模板来说功能是较为齐全的,基本能够满足私人博客网站的需求,因此就打算将此系统来作为自己的个人博客网站模板。

首页的效果如下图所示,由于原Tale网站无法打开就无法看到Tale的效果图了,此截图为我的网站首页图片,模板是一样的,相信你看到这张效果图也会喜欢上这个博客的:

至于为什么又花了一个多月的时间进行二次开发,以致于5月13日才上线,有以下原因:

  • 原项目是使用Blade框架进行开发
  • 域名及云服务器购买,网站的ICP备案
  • 整合docker、docker-compose
  • install流程修改
  • 部分功能修改
  • 工作太忙,无法全部投入
  • 刚好是13号,对,13

原Tale博客后台的系统设置中,有关闭「允许重新安装」的选项,这个默认设置为「关闭」,但是实际还是能够进入安装页面,如果有网友能够猜出博主的数据库用户名和密码的话,估计就能把对方的博客给一锅端了。现在这个问题应该是修复了,但是3月份刚看到这个项目的时候是存在这个问题的,因此也就动了修改的心思。



另外一个原因,就是代码里的install模块,下载下来运行之后,总觉得这个过程很别扭,首先,这是一个私人的博客系统,数据库的相关配置应该是确定了的,不出意外的话应该不会有改动的,直接写在代码里应该更好,个人感觉install模块中初始化数据库步骤的意义并不是很大甚至有些多余(个人看法),另外就是直接暴露出这个页面和接口地址并不是特别安全,因此就想重写这个过程。

这一个多月的时间里做了以下修改:首先是项目整体由Blade框架开发改造为SpringBoot+Mybatis开发,接着是整合了Docker使得部署简易化,其次就是完全删除了原来的install过程,改为由docker-compose实现的一句脚本命令完成数据库的初始化及项目启动,无需多余操作,主要参考了talemy-blog-project项目。

整合Docker简化部署过程

原来的部署过程有:

  • 搭建Java运行环境,
  • 安装mysql数据库,
  • 初始化数据,
  • 运行jar包。

其实也没有太多的步骤,但是那段时间刚好在上手Docker,因此就特别的想在项目中整合Docker,检验一下自己的知识掌握程度,同时也使得部署的步骤更少,但是删除了install过程后,又忍不住思考是否能让mysql数据库安装及数据的初始化也通过Docker来实现,就不需要人为的再去搭建数据库和运行数据库脚本了(其实就是懒),这个实现过程花费时间较长,最终通过docker-compose及一些shell脚本命令实现了整个过程,只要运行一行shell启动脚本命令即可实现Mysql数据库的创建、数据导入、Mysql容器的创建及启动、blog容器创建及启动、两个容器的连接交互、项目启动。

启动脚本如下:

#!/usr/bin/env bash

set -e

mvn clean install -Dmaven.test.skip=true

# 停止原先运行的容器
docker-compose stop
docker-compose rm -f #删除名称为none的镜像
docker images|grep none|awk '{print $3 }'|xargs docker rmi # 使用docker-compose启动多容器应用
docker-compose up --build -d # 日志
docker-compose logs -f

代码太多啦,就不放上来了,以后有时间的话会针对不同的功能和技术做详细介绍的,接下来是赏图时间:

首页:



文章详情页:



登录页:



文章列表页:



文章编辑页:



分类编辑:

结语

推荐一下自己的达人课,感兴趣的朋友可以看一下:SSM搭建精美实用的管理系统

个人对这个博客系统还是挺满意的,以后也会陆陆续续添加功能进来,比如搜索引擎啊,缓存功能,ELK日志系统等等,进一步来完善这个系统,当然ssm项目的进阶篇近期可能就要拖更了,有时间再写吧。

这是我的个人博客地址,欢迎大家去浏览、指导和批评。

由于这个是个人站点,账号和密码就不公布了,但是这个博客系统的代码是开源的,可以到我的GitHub仓库里下载,地址在这里,有问题也可以在这里提出来,如果觉得项目还行的话,给项目一个star吧。

无法访问GitHub,也可以到开源中国码云下载项目代码。

Docker+SpringBoot+Mybatis+thymeleaf的Java博客系统开源啦的更多相关文章

  1. 如何快速部署国人开源的 Java 博客系统 Tale

    除了闷头专研技术之外,程序员还需要不断地写作进行技术积累,写博客是其中最重要的方式之一.商业博客平台不少,但是更符合程序员背景的方案,是自己开发一个博客平台或者使用开源的博客平台. 开源的博客平台多如 ...

  2. 讲解开源项目:5分钟搭建私人Java博客系统

    本文适合刚学习完 Java 语言基础的人群,跟着本文可了解和运行 Tale 项目.示例均在 Windows 操作系统下演示 本文作者:HelloGitHub-秦人 HelloGitHub 推出的< ...

  3. spring-boot序章:打造博客系统

    blog 使用spring-boot打造一个博客系统,在项目中学习! 项目功能 文章 游览 创建 编辑 删除 评论 用户 游客 注册用户 关注 被关注 后台统计 注册用户数 在线人数 文章总数 评论总 ...

  4. 简洁美观的Java博客系统Tale开源了,让每一个有故事的人更好的表达想法

    Tale Tale的英文含义为故事,我相信每个坚持写Blog的人都是有故事的:中文你叫它 塌了 也无所谓 . Tale 使用了轻量级mvc框架 Blade 开发,默认主题使用了漂亮的 pinghsu, ...

  5. Java 博客系统 Tale

    Tale Tale的英文含义为故事,我相信每个坚持写Blog的人都是有故事的:中文你叫它 塌了 也无所谓 . Tale 使用了轻量级mvc框架 Blade 开发,默认主题使用了漂亮的 pinghsu, ...

  6. 使用Docker部署Spring-Boot+Vue博客系统

    在今年年初的时候,完成了自己的个Fame博客系统的实现,当时也做了一篇博文Spring-boot+Vue = Fame 写blog的一次小结作为记录和介绍.从完成实现到现在,也断断续续的根据实际的使用 ...

  7. Java程序员博客系统推荐!我调研了100来个 Java 开源博客系统,发现这 5 个最好用!

    大家好!我是 Guide 哥,Java 后端开发.一个会一点前端,喜欢烹饪的自由少年. 最近想倒腾一下博客,看了很多现成的比较成熟的开源博客系统,自己也简单从下面几个维度总结对比了一下: star数量 ...

  8. SpringBoot技术栈搭建个人博客【后台开发】

    前言:在之前,我们已经完成了项目的基本准备,那么就可以开始后台开发了,突然又想到一个问题,就是准备的时候只是设计了前台的RESTful APIs,但是后台管理我们同样也是需要API的,那么就在这一篇里 ...

  9. Spring Boot学习记录(二)--thymeleaf模板 - CSDN博客

    ==他的博客应该不错,没有细看 Spring Boot学习记录(二)--thymeleaf模板 - CSDN博客 http://blog.csdn.net/u012706811/article/det ...

随机推荐

  1. iOS 文本转语音(TTS)详解:Swift

    上一篇博客讲解了iOS的speech FrameWork语音识别的功能:http://www.cnblogs.com/qian-gu-ling/p/6599670.html,对应的这篇博客就写一下文本 ...

  2. 【Java 并发】详解 ThreadLocal

    前言 ThreadLocal 主要用来提供线程局部变量,也就是变量只对当前线程可见,本文主要记录一下对于 ThreadLocal 的理解.更多关于 Java 多线程的文章可以转到 这里. 线程局部变量 ...

  3. Android解析xml文件-采用DOM,PULL,SAX三种方法解析

    解析如下xml文件 <?xml version="1.0" encoding="UTF-8"?> <persons> <perso ...

  4. rsync+inotify实现文件同步更新(配置)

    linux下为了数据安全或者网站同步镜像,不得不考虑一些实时备份的问题,这篇linux下通过rsync+inotify 实现数据实时备份配置过程记录下来,防止遗忘配置过程记录下来,防止遗忘!如有建议技 ...

  5. Linux网络那点事

    跨平台系列汇总:http://www.cnblogs.com/dunitian/p/4822808.html#linux 之前的之前说过网络自连接的配置(CentOS服务器网络配置:http://ww ...

  6. 腾讯IVWEB团队:WebRTC 点对点直播

    作者:villainthr 摘自:villainhr WebRTC 全称为:Web Real-Time Communication.它是为了解决 Web 端无法捕获音视频的能力,并且提供了 peer- ...

  7. hdu 2516 取石子游戏 (斐波那契博弈)

    题意:1堆石子有n个,两人轮流取.先取者第1次可以取任意多个,但不能全部取完.以后每次取的石子数不能超过上次取子数的2倍. 取完者胜,先取者负输出"Second win",先取者胜 ...

  8. 使用PCA + KNN对MNIST数据集进行手写数字识别

    首先引入需要的包 %matplotlib inline import numpy as np import scipy as sp import pandas as pd import matplot ...

  9. 字典树 Trie树

    什么是Trie树? 形如 其中从根节点到红色节点的路径上的字母所连成的字符串即为一个Trie树上所存的字符串. 比如,这个trie树上有ab,abc,bd,dda这些字符串. 至于怎么构建和查找或添加 ...

  10. for xml path 如何将字段转换为xml的属性

    for xml path 如何将字段作为xml的属性: 可在查询时 别名用 as '@..' 如'@value' 如下实例: SELECT A.GiftSetGUID AS '@value',A.Gi ...