博客是很多程序员朋友的最爱,通过博客可以梳理自己的技术体系,将自己日常开发过程中的技术心得或者对于一个技术问题的解决思路记录下来,对于以后碰到此类问题有一个参考的作用。同时,博客系统的内容是对外的,我们可以将自己的博客内容分享出去增加自己的知名度。现在很多面试官第一句话就是:“你写博客吗?”,如果你没有博客那不就尴尬了。之前阿里P10赵海平面试王垠的时候,不就是翻了王垠的所有博客并且还“嘲弄”了一番吗?
对于程序员来说,如果只是写博客那太容易了,现在有很多的开源博客平台,如CSDN、简书、博客园、GitHub等平台。这些平台不仅可以自己写内容也可以分享别人的内容,对于爱写作的朋友来说很方便了。但是,这篇文章我们讲的不是如何写博客,而是基于开源博客平台搭建自己的博客平台。
目前国内外很多开源的博客平台,有基于Golang语言编写的,也有基于PHP、NodeJs等语言编写,目前,主流开源的博客平台主要有以下几个。
WordPress
WordPress是用PHP语言编写的开源的博客软件和内容管理系统,数据库采用Mysql。它具有插件架构和模板系统。目前排名前1000万的网站中超过30.6%使用WordPress。WordPress是最受欢迎的网站内容管理系统,也是当前因特网上最流行的博客系统。WordPress支持安装和切换主题。主题可让用户不改变博客内容和结构的情况下更改界面和WordPress站点的功能。主题可以在WordPress的“外观”管理工具中安装,或者通过FTP上传至主题文件夹。也可以通过编辑主题中的PHP和HTML代码自定义主题。WordPress有非常丰富的插件库,插件能使用户和开发者扩展WordPress程序的功能。当前WordPress插件数据库中有超过18000个插件,包括SEO、控件等等。
Ghost
Ghost是用JavaScript编写的博客平台,基于MIT许可证开放源代码。它的设计主旨是简化个人网站发布以及网上出版的过程。Ghost使用的语言是NodeJs,数据库采用MySQL,同时也支持MariaDB、SQLite和PostgreSQL。如果要部署到自己的服务器上,需要安装Nodejs。Ghost的默认语言是英文版的,但是有第三方的中文插件,Ghost提供开发插件的API和可以定制的Handlebars主题模板样式。
Hexo
Hexo 是一个快速、简洁且高效的博客框架。Hexo使用 Markdown(或其他渲染引擎)解析文章,在很短时间内就可以生成静态网页。Hexo也是使用NodeJs开发的,区别于WordPress和Ghost的是,Hexo是不需要数据库的,所以它是一个静态的博客系统,每一个博客都最终生成的是一个静态的Html,最后考Markdown语法来解析博客的内容格式。
以上三款是目前比较流行的开源博客系统,这三款博客系统都不是小编的选择,本文选择是一款小而美的国内开源博客系统,它采用Java语言开发,使用Mysql数据库存储数据,具有丰富的主题库,它就是Solo。
Solo是国内个人开源的一个小而美的博客系统,采用Java+Mysql开发,专门为程序员设计。它是B3log社区的主要组成部分,B3log目前主要有三个部分组成:
Solo 是独奏,Solo是独立博客系统,在音乐中相当于不同乐器演奏不同的声音Rhythm 是节奏,用来让不同博客客户端和社区进行协同合奏,相当于音乐中的节拍器Symphony 是交响乐,Symphony 以论坛的方式交互,聚合个人博客,需要很多人协同参与才能奏出美妙的乐章。Solo的GitHub地址是:
我们可以通过三种方式来搭建自己的博客系统。
1、下载它的压缩包解压,然后执行执行:就可以启动本地8080端口的服务,然后就可以本机访问打开博客系统。
2、Docker部署。Solo的镜像已经放到了DokkerHub上,我们可以通过docker pull b3log/solo 拉取镜像来启动服务。3、克隆源代码进行编译。这也是本文要讲的重点,通过克隆源代码,我们可以本地编译然后启动服务。这样我们可以阅读它的源代码,也可以基于自己的需求进行修改。GitHub克隆 solo代码:
Maven编译源代码:
Solo是基于Maven构建的,所以如果想要编译Solo源代码,需要本地安装Maven。如果本地已经有Maven环境,就可以直接在Idea中编译,如下图所示:
代码结构如下:
这是Java的核心代码,主要包括前台展示和后台管理系统的代码。
resource下都是静态资源文件,包括后台管理系统的前端页面、前端博客页面、css、js、皮肤等资源文件。目前的代码中有20中皮肤可供选择。
编译好代码以后我们就可以启动了,启动之前我们首先配置好数据库,数据里的配置文件是local.properties,根据自己的数据库来配置就行。
数据库配置好以后,就可以启动服务了,服务的启动的文件是Server.java,直接运行Main方法,就可以启动8080端口的服务。服务启动以后,系统会初始化Mysql的表,系统设计的表并不多,表结构如下所示:
启动成功以后,我们就可以登陆进入后台系统发布文章了,如下图所示:
博客效果页面如下图所示:
这是我选的一种一个皮肤,通过后台可以切换不同的皮肤。