作者: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容器创建及启动、两个容器的连接交互、项目启动。

启动脚本如下:

  1. #!/usr/bin/env bash
  2. set -e
  3. mvn clean install -Dmaven.test.skip=true
  4. # 停止原先运行的容器
  5. docker-compose stop
  6. docker-compose rm -f
  7. #删除名称为none的镜像
  8. docker images|grep none|awk '{print $3 }'|xargs docker rmi
  9. # 使用docker-compose启动多容器应用
  10. docker-compose up --build -d
  11. # 日志
  12. 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. Swing入门

    厌倦了在控制台使用键盘输入并显示结果的过程?是的,在你现在这台电脑上,已经很少有程序使用这种交互方式.本实验将带你初步进入图形用户界面(GUI)的世界,让你学会如何编写屏幕上那些具有特定大小和位置的窗 ...

  2. 使用composer下拉组件失败,出现killed解决办法

    做项目时下载composer组件,出现killed提示,如图 一般是因为内存太小,将虚拟机内存设置大一点即可,在虚拟机关机的时候设置 下载成功

  3. Java基础之J2EE规范

    什么是J2EE? 在企业级应用中,都有一些通用企业需求模块,如数据库连接,邮件服务,事务处理等.既然很多企业级应用都需要这些模块,一些大公司便开发了自己的通用模块服务,即中间件.这样一来,就避免了重复 ...

  4. 老李分享:adb发送的指令都有哪些

    老李分享:adb发送的指令都有哪些   这两天在poptest上课的时候,我们邀请了业内技术牛人为我们的学员讲解手机自动化方面的知识,每天大家都很踊跃,要学习到晚上11点多才能,有的学员跟我说都累傻了 ...

  5. Android中的java层的线程暂停和恢复实现

    /**  * 基础线程对象.  *  * @author jevan  * @version (1.0 at 2013-6-17)  * @version (1.1 at 2013-7-2) 增加on ...

  6. 上传图片转为base64格式预览并压缩图片(不兼容IE9以下浏览器,兼容移动端ios,android)

    前些天公司要求在微信移动端做上传图片并预览的功能,要求能够调用摄像头拍照并立即预览. 在网上搜了一些方法,开始自己写了个简单的功能实现代码.结果发现移动端拍照出来的图片动不动就2M+,又因为要批量上传 ...

  7. JDBC基础学习(一)—JDBC的增删改查

    一.数据的持久化     持久化(persistence): 把数据保存到可掉电式存储设备中以供之后使用.大多数情况下,数据持久化意味着将内存中的数据保存到硬盘上加以固化,而持久化的实现过程大多通过各 ...

  8. 【原创101】Servlet精细笔记

    一.什么Servlet? servlet 是运行在 Web 服务器中的小型 Java 程序(即:服务器端的小应用程序).servlet 通常通过 HTTP(超文本传输协议)接收和响应来自 Web 客户 ...

  9. MySQL关于Duplicate entry '1' for key 'PRIMARY'错误

    今天复习MySQL遇到Duplicate entry '1' for key 'PRIMARY'错误. 原因是主键值为'1'的数据已经存在,主键是唯一的,不可重复.

  10. Unity加载场景、计时器、加载时不销毁某物体

    异步加载场景,SceneManager.LoadSceneAsync(SceneName);需引用 using UnityEngine.SceneManagement;命名空间, Applicatio ...