搭建Halo博客
写在开始前
平常工作生活中,我会写一些markdown的文章,用来记录工作中遇到的问题,或者写一些教程,以便将来重新遇到相同的问题,或是需要部署相同的东西时,能通过记录快速避开已经解决过的问题。
在搭博客之前,因为上海疫情原因,只能居家办公,公司的电脑又没有拿回来,导致我在公司写的一些markdown笔记没有及时同步到家里的电脑上,这时候就出现了版本冲突的问题,所以其实我只是想有一个可以远程同步功能的markdown工具。这是搭博客的原因之一。
那么另一个原因就是平常遇到很有挑战性的东西时,记录下来后很想和周围人分享,但我也不想写到一些国内的网站上,所以这就促使我搭建个人的博客网站了。自己的博客不管怎么整都无所谓,还能满足自己开心就好的条件。
于是在机缘巧合下,在github上看到halo博客,感觉颜值很能打,功能也很不错,所以决定搭一个自己的博客。感谢Ryan Wang大神开源了这么好的博客系统,也感谢所有做出贡献的开发者们。那么我们就开始搭建Halo吧。
参考资料:
Halo官网:https://halo.run
Github:https://github.com/halo-dev/halo
Halo官方文档:https://docs.halo.run
其实Halo官方教程写的非常全面,非常清晰。但我有些不同的需求,所以自己研究了一阵子,总算把自己的博客搭建成功了。
本篇文章将会介绍使用docker-compose搭建Halo博客,并连接自己的mysql数据库,redis服务端及nginx。在halo官方教程中,mysql和redis都是用docker-compose部署的。我本人是不太喜欢将有状态的服务用docker部署的,如果你跟我一样想自己部署mysql和redis,可以参考我这篇文章。
1. 准备工作
那么我们想要搭建一个自己的博客,首先需要一台vps服务器和一个域名,当然我们可能还需要一些Linux相关的知识,不过如果你是小白,也可以跟着教程一步一步搭建,一步一步学习,其实搭建博客还是很简单的。
1.1 vps服务器
首先我们需要一台服务器来部署Halo博客,如果想知道如何购买vps,推荐一个我在购买vps时参考的博主咕咕鸽,他的博客有很多关于vps的介绍和测试,欢迎大家去看看,买到心仪的vps。本文不介绍如何购买服务器。
因为懒得备案的缘故,所以我的服务器选择的是RackNerd,主要的原因是同样价格下,RackNerd的vps给的更多一些,不管是CPU核心数还是RAM等。虽然性能并不是多好,但可以搭建更多好玩的东西,另外就是不用备案了。
服务器的操作系统,选择debian或是centos又或者是其他linux操作系统都是可以的,本文选择的是centos,因为我本人对centos更加熟悉,所以选择了它,大家可以根据自己的喜好选择。
1.2 域名配置(可选)
另外我自己的站点用IP访问就太low了,所以需要一个域名来提高b格。我是在namesilo 购买的域名,大家也可以在网上看看好的域名网站,选择适合自己的就可以。
那么当我们拥有了域名后,我们就要设置域名指向我们自己的服务器了,选择增加A记录,前缀可以不填,直接使用domain.com即可,当然我们也可以设置一下CNAME,将www.domain.com指向domain.com,这样当你访问www.domain.com时,将会指向domain.com。当然你也可以设置两条A记录,两者选一种即可。
1.3 基础软件安装简单使用
先下载必要的软件
vim是编辑器软件,我们之后修改文件内容使用net-tools用于查看网络信息的依赖包(非必需)htop查看服务器信息的软件,可以当作是top的升级版(非必需)
1 | 安装必要软件包 |
2. 搭建及配置博客所需中间件
3.1 nginx
关于nginx的安装和配置可以查看另一篇文章部署nginx及申请TLS证书,里面有详细的nginx安装和配置教程,另外还涉及了关于域名申请证书的方法。
那么如果你已经看完了nginx的文章,那么我们就开始配置反向代理吧。我们只需要在我们配置好的domain.conf文件中增加以下内容即可。
1 | halo |
设置完成后,我们重载一下nginx,等下安装完halo后就可以访问了。当然,你也可以先部署halo再配置nginx。
1 | 检查配置文件是否正确 |
3.2 MySQL
关于MySQL的安装和配置,你同样可以查看另一篇文章部署MySQL,可以根据教程进行搭建,当然你也可以选择和halo官方文档上一样的方式,使用docker-compose来进行部署MySQL。不过halo不是必须需要配置MySQL数据库,你也可以使用halo内置的H2数据库。
H2是一个Java编写的关系型数据库,它可以被嵌入Java应用程序中使用,或者作为一个单独的数据库服务器运行。
如果你想要使用MySQL作为halo的数据库,需要注意的是halo要求:
- 数据库版本为
MySQL 5.7+ - 字符集为
utf8mb4 - 排序规则为
utf8mb4_bin - 数据库引擎为
InnoDB
当我们已经部署好MySQL后,我们需要准备好MySQL数据库的用户名,密码及端口号,让halo连接我们自己的数据库。
1 | root #用户名 |
halo只需要我们建一个数据库即可,无需建表,halo将会自己创建数据库表。所以我们需要先创建一个数据库给halo,可以使用navicat创建数据库,也可以链接MySQL客户端使用sql命令进行创建。
3.2.1 Navicat创建数据库
连接自己的数据库后,右键数据库,点击新建数据库即可。
数据库名设置为halodb,字符集设置为utf8mb4,排序规则设置为utf8mb4_bin,点击确定创建即可。
3.2.2 命令行创建数据库
- 登录
MySQL数据库
1 | 登录数据库,输入密码回车进入 |
- 创建数据
1 | --参考创建数据的语法 |
3.3 Redis
安装和配置Redis,你可以参考部署Redis这篇文章。或者你也可以选择和halo官方文档上一样的方式使用docker-compose来部署Redis。Redis不是halo必备的中间件,你可以选择不配置Redis,使用其他的缓存方式即可。
halo支持三种缓存策略:
memory将数据缓存至内存,重启服务缓存将清空。level将数据缓存至本地,重启服务不会清空缓存。redis将数据缓存至 Redis,重启服务不会清空缓存,如需分布式部署 Halo,请选用此种缓存方式。
如果我们配置了Redis,我们需要准备好Redis数据库的密码及端口号,让halo连接我们自己的redis数据库。
1 | 123456 #密码 |
3. docker-compose部署Halo
关于docker及docker-compose的安装,可以查看另一篇文章部署docker及docker-compose,里面有详细的教程,欢迎参考。如果你不想使用docker来部署Halo,可以参考halo官方文档 的其他部署方式。
我们先创建一个存放halo文件的目录,将来halo产生的数据都会在这个目录中,也方便管理和备份。
1 | 创建halo的目录,之后我们将docker-compose.yaml文件也放在这个目录中 |
要使用docker来部署halo,我们需要先写一个docker-compose配置文件,halo官方文档 上的docker-compose配置文件没有连接自己的中间件的方式,但是我们其实可以从中窥探一二。我们可以将文档上创建Halo + MySQL + Redis 的实例的yaml文件拿下来修改一下即可。
我们将配置文件内容拷贝下来,修改一下以使用我们自己搭建的中间件。
1 | version: "3" |
配置好docker-compose.yaml文件后,我们保存退出,然后就可以开始部署了。
1 | 部署halo,当前目录需要存在docker-compose文件才可以运行 |
部署完成后,我们访问我们的域名:domain.com,看看是不是已经成功进入halo了。如果没有启动起来也没有关系,检查前面的步骤看看是不是哪里没有注意,只要步骤对了,那么一定是可以运行起来的。
4. 总结
到这里,halo就已经搭建完成了。如果各位觉得halo不错,请到halo的github点个star🌟,如果使用中有什么问题,也可以去halo论坛,看看能不能找到解决办法。希望看到这篇文章的每个人都可以搭建一个属于自己的博客。







