原创

基于DevOps平台构建自己博客:3-了解我们的应用系统——Oneblog

温馨提示:
本文最后更新于 2022年11月15日,已超过 760 天没有更新。若文章内的图片失效(无法正常加载),请留言反馈或直接联系我

上篇文章我们介绍了整体的架构,现在我们详细的介绍下每个部分具体的内容。首先从我们的应用系统开始——Oneblog。

一、博客系统信息

官方网站:https://docs.zhyd.me/

Gitee地址:https://gitee.com/yadong.zhang/DBlog

Github地址:https://github.com/zhangyd-c/OneBlog

二、系统选型决策

系统选型需要根据实际需求进行决策,不能盲目追求大而全,还要考虑的成本、成熟度、技术栈、研发测试成本、升级改造成本、文档化程度、社区活跃度等等因素。

这里我只讲我考虑的几个因素:

1. 必须是开源系统

选择开源的原因是代码透明,后续的功能迭更新不受限制。同时,没有额外的费用成本。而且,如果有好的新特性,可以作为代码贡献者提交,分享是快了的。

2. 最好是JAVA语言

虽然语言对系统选型影响不大,但是,我本人主要从事JAVA相关工作,对JAVA相关内容理解相对较深。这样,可以更好的搭建完善当前项目。在项目启动后,技术栈的选型很重要的一个原则就是尽量使用自己最熟悉的解决方案,包括技术语言。因为不熟悉的技术领域很容易踩坑,导致项目实施过程中各种问题,阻碍进度,降低积极性,还会存在隐性的风险。

3. 功能齐全

通过上面给的链接,大家可以查看该博客系统的功能。而我的基本要求就是:

(1)基本的文章管理、用户及角色管理、评论管理都有。

(2)加分项:网站设置、文件管理、编辑器的能力、友情链接、广告位管理、站点信息统计、标签管理、模板管理、文章采集等等。

4. 完善的文档

查看官网可以看到,官方的文档非常齐全。包括功能介绍、项目动态、模块划分、技术栈、Demo、项目结构、快速入门。而且在项目的readme文件也有详细的说明及指导,对于一个个人项目而言已经非常不错了。基本这些信息已经可以满足一个初级开发者的自行构架活动。

5. 社区活跃

社区活跃度我们可以看下Gitee的统计54,相对来说在博客系统里面已经算是比较高的了。代码活跃度相对较低,原因可能有几个:第一、博客系统的技术含量不算太高,功能要求也不会太复杂,大多数fork的开发者都是使用者,没有新的功能提交。第二、系统相对比较稳定,功能健全,不需要太多的新特性更新。

通过代码仓库网络图,可以看到最近仍然有版本更新,说明官方依然在持续维护中。

我之所以选择Gitee作为参考数据,是因为该系统为中文系统,Github上的数据确实不如Gitee。

6. 技术栈较新

该博客系统的官方有说明:

  • Springboot 2.0.8
  • Apache Shiro 1.2.2
  • Logback
  • Redis
  • Lombok
  • Websocket
  • MySQL、Mybatis、Mapper、Pagehelper
  • Freemarker
  • Bootstrap 3.3.0
  • wangEditor
  • jQuery 1.11.1、jQuery Lazyload 1.9.7、fancybox、iCheck
  • 阿里云OSS
  • kaptcha
  • Qiniu
  • webMagic
  • ...

#

虽然不是最近的,但也不算旧,而且有升级的可行性。

7. 代码质量不算太差

代码部分只需要去仓库看下,如果大家经常去Github上看些开源的东西,就知道什么样的代码了。很多已经商用的开源系统,一看代码也是不堪入目。原因很简单,贡献代码参差不齐,审核又不够严格,毫无规范可言。Oneblog相对来说算是代码比较整洁的。

8. 界面不算太丑

界面这个直接去作者的官网博客看一下就知道了,这里不多说了。

三、系统本地构建

看的再多也不如自己动手试试。所以,在了解了基本信息后,我们初步确定的目标系统也就锁定了。但是,看到的只能说明有这些东西,具体系统怎么样,是否可以使用还是要在本地试试。

注:因为本地都已经执行过了,所以,以下命令均为直接手敲,容易打错,有错误请大家留言指正,谢谢!

1. 下载代码

git clone https://gitee.com/yadong.zhang/DBlog.git

2. 导入到IDE中

可以看到,该工程里一共有5个模块,分别是: 

blog-admin:博客管理后台,有页面,需要启动web容器。

blog-codegen:代码生成工具,系统运行时环境不依赖于该模块。

blog-core:核心代码块,基本所有的业务逻辑都在这里实现。被blog-admin和blog-web所依赖。

blog-file:文件模块,几种常见的文件存储集成都实现了。被blog-core所依赖。

blog-web:博客前台页面,有页面,需要启动web容器。

3. 本地构建系统

在IDE中用最常规的方式构建一下,看看有没有什么问题。

至少编译是没有问题,本地编译通过以后,至少意味着该系统生产部署就满足了第一步。而部署可以直接在环境上进行,就不在本地操作了。

4. 服务端口及配置文件

从源码中可知,在当前的系统架构中,并没有配置中心,所以就没有办法通过配置中心动态修改。而当前的配置文件是直接与工程打包成jar,这对于我们后期的配置修改不是很方便,我们所期望的是,镜像是无状态的,配置独立且与镜像不依赖。那也就意味着,我们的配置需要独立处理,并且映射到宿主机上。

从配置文件中可以看到,当前系统支持环境变量,那可以通过这一点,在容器启动时加载环境变量配置文件,传入我们的配置信息。

与此同时,服务的默认端口blog-admin为8085和blog-web为8443,也可以在配置中修改,这里我就使用默认的了。但除此之外,我们的系统对外一定暴露的是443和80端口,且我希望网站尽量使用SSL/TLS,这样可以更大的保证网站的安全性,而80默认的Http协议对应的地址,我们会将http请求转为https再发给后端。

总体来说:

通过系统的介绍和了解,我们知道两个web应用,配置文件需要独立化处理,对外暴露的端口为443和80,当然,由于是两个web容器,后端的blog-admin我也暴露出一个,暂定为8099。需要注意的是,其实这个8099也可以不暴露,通过反向代理配置,一样可以通过域名转发到内部,我就不这么操作了,有兴趣的朋友可以自己弄下。而blog-web的端口8443和blog-admin的8085是可以不暴露给外界,通过link的方式,使反向代理的容器直接访问即可。

以上这些信息在我们后续的环境搭建中都可以用的到,这就是我们提前了解系统的好处,可以提前规划。后续具体如何使用,敬请关注后续的文章。

正文到此结束
本文目录