侧边栏壁纸
博主头像
琉璃红梅 博主等级

琉璃世界,白雪红梅。

  • 累计撰写 52 篇文章
  • 累计创建 102 个标签
  • 累计收到 5 条评论

目 录CONTENT

文章目录

Halo系列-Halo博客部署

雪穗
2023-08-28 / 0 评论 / 0 点赞 / 37 阅读 / 0 字
温馨提示:
本文最后更新于2025-08-23,若内容或图片失效,请留言反馈。 若部分素材不小心影响到您的利益,请联系我删除。

本文主要内容是关于如何用Halo搭建自己的博客,并对了搭建博客前需要的准备工作进行了简要的概述,如果需要更加详细的流程可以在谷歌或者百度进行相关内容的检索。

1.博客搭建基础

1.1 博客的分类

博客分为两种,一种为静态博客,一种为动态博客,所谓静态和动态主要区别在于是否依赖自己的服务器或者数据库,一般来说静态博客是通过Github或者Gitee等代码托管平台的Github Pages与Gitee Pages实现在网络上的访问,而动态博客则是基于自己的服务器借助像WordPress、TypeCho等动态博客程序进行部署。下面说一下静态博客和动态博客的优缺点,正如动静是可以相互转换的,它们优缺点不是绝对的可以通过结合其它技术优化各自的不足之处,比如通过套CDN静态博客也可以实现高速访问,白嫖数据库实现在线的文章的增删改,建议新手特别是小白新手从静态博客开始折腾,毕竟动态博客需要自己购买服务器,本篇文章则是关于如何基于Halo搭建属于自己的博客。

下面从个人角度再简述一下两者的区别,供初次搭建的小伙伴参考,

静态博客:

优点:

  1. 不依赖于自建的服务器,所以不需要自己购买服务器,可以“零元购”

  2. 可以不需要购买域名

  3. 可以依赖第三方平台实现自定义域名访问(如果需要的话)

缺点:

  1. 访问速度一般较慢

  2. 当发布的文章数越来越多时,每次提交部署就会耗费比较长的时间

  3. 文章的增删改需要在自己的电脑上(更确切一点是获取授权的电脑)

  4. 文件和图片大小存储在这些代码托管平台上一般都会受到限制

动态博客:

优点:

  1. 可以在不同的设备进行在线的文章增删改

  2. 实现多用户比较容易

  3. 自由度比较高,可以通过docker搭建部署各种应用

  4. 访问速度和带宽一般来说要高于静态博客

缺点:

  1. 需要服务器加域名,所以成本高于静态博客

  2. 受到攻击的可能性更大一些

我猜有人肯定会问,在知乎、博客园等平台写博客岂不美哉,何必本末倒置,大费周折自己搭建,毕竟博客在于内容而非载体,不得不承认搭建博客确实会浪费些时间,特别是初次搭建的小伙伴会把很多时间花在“美化”上,“美化”结束博客就被弃置了,陷入了“断更”。博客之博,乃内容之博,非样式之博,非广告之博。所以我更推荐能够长期更新的小伙伴搭建属于自己的博客平台,这样数据很大程度上掌握在自己手中,也更能发挥博客的作用,体现博文的价值。“租房”和“买房”你会选择哪种呢?无关好坏,关乎是否称心耳。

1.2 服务器选购

博客网站需要部署在服务器上,可以是物理主机,比如安装了Linux系统的电脑,而服务器和普通电脑的区别主要在于服务器可以24小时运行,性能和稳定性更高,这里我推荐使用vps,即虚拟云服务器(你可以理解为“远在天边”的物理主机),使用云服务器一般都会带一个IPv4地址,用于公网访问,这也是购买服务器的原因。

国内比较有名的云服务器厂商有腾讯云、阿里云、华为云,大厂的优势就是不会跑路,劣势就是价格比较贵(对老用户来说,对于新用户优惠力度还是比较大的)。

一般来说大陆云服务器的价格要高于非大陆服务器和国外服务器,根据你的博客受众所在区域进行选择,物理地址越近则访问速度越快,正所谓“近水楼台先得月”。

需要说明购买的大陆服务器需要进行备案,备案时间一般一周到两周不等,甚至更久,非大陆服务器则不需要备案,部署完毕即可上线。

1.3 域名绑定

通过服务器的公网IP+端口号就可以访问自己部署在服务器上的站点,但是IP+端口号既不美观也难以记忆,所以通过域名绑定IP,实现域名访问对应服务是最佳选择。

国内域名厂商主要有腾讯云、阿里云等,国外域名厂商有Namesilo,其中.top的域名算是比较便宜的了。

在博客网站上线之前需要先进行ICP备案,对于个人来讲一般需要准备个人的身份证明,域名厂商发放的域名证书等,提交申请之后会有相关人员进行电话核查,主要是询问是否为本人操作以及网站的功能用途,之后再进行一系列的审核。ICP备案之后就是公安备案,不过ICP备案之后就可以上线了。具体操作流程可以根据购买服务器厂商的提示进行,一般需要两周时间。

2.基于Halo搭建个人博客网站

2.1 Halo简介

Halo官网:https://www.halo.run/

强大的开源建站工具,个人认为与Wordpress、Typecho不分伯仲,三者孰好孰坏自难分辨,也不可分辨,但各自优缺点在互联网上随意查之便可见一斑,没有最好只有最合适。我用了Halo一段时间了,可以浅谈一下我的见解。

Halo的优点:

  1. docker部署,步骤简单,小白易上手

  2. 稳定更新和修复bug,如今保持一月一更

  3. 社区活跃

  4. 开发者耐心解答问题

  5. 可插拔的主题与插件,让使用者有更多的选择权

Halo的缺点:

  1. java开发,占用内存比较大,个人建议2G内存起步

  2. 相对于上面提到的两个建站工具,其主题与插件相对匮乏

  3. 编辑器和评论功能,如果仅仅书写文字则足矣,但是对于书写理工科类文章,个人认为还有很大进步空间

瑕不掩瑜,为什么选择Halo?一言以蔽之:国产、简单易上手、开发者稳定更新和修复bug,我愿称之为博客之光!

2.2 Halo的安装

安装前提:

1.备好服务器

2.已经安装好docker和docker compose,请参看我的博文 docker系列-docker与docker compose安装

安装建议:

1.将所有docker项目放在统一目录 /root/data/docker_data/ 下,方面后期管理与维护

2.添加SWAP虚拟内存,请参看我的博文 添加 SWAP 虚拟内存

2.2.1 创建安装目录

mkdir -p /root/data/docker_data/halo

2.2.2 创建docker-compose.yaml文件并上传至服务器

上传 docker-compose.yaml 文件到halo目录下,docker-compose.yaml 文件内容如下:

services:
  halo:
    image: halohub/halo:2.10.0                                     #后面的2.10.0为版本号,部署时可以根据最新版进行相应修改
    container_name: halo
    restart: on-failure:3
    depends_on:
      halodb:
        condition: service_healthy
    networks:
      halo_network:
    volumes:
      - ./:/root/.halo2
    ports:
      - "8090:8090"                                                #左边8090为halo服务的访问端口,可以根据端口占用情况进行修改
    command:
      - --spring.r2dbc.url=r2dbc:pool:mysql://halodb:3306/halo
      - --spring.r2dbc.username=root
      # MySQL 的密码,请保证与下方 MYSQL_ROOT_PASSWORD 的变量值一致。
      - --spring.r2dbc.password=password1234                        #请自行修改密码
      - --spring.sql.init.platform=mysql
      # 外部访问地址,请根据实际需要修改
      - --halo.external-url=https://www.sqwfly.top/                 #你的博客域名
      # 初始化的超级管理员用户名
      - --halo.security.initializer.superadminusername=admin        #可以自行修改
      # 初始化的超级管理员密码
      - --halo.security.initializer.superadminpassword=P@88w0rd     #可以自行修改或者登录博客后台修改

  halodb:
    image: mysql:8.0.31
    container_name: halodb
    restart: on-failure:3
    networks:
      halo_network:
    command: 
      - --default-authentication-plugin=mysql_native_password
      - --character-set-server=utf8mb4
      - --collation-server=utf8mb4_general_ci
      - --explicit_defaults_for_timestamp=true
    volumes:
      - ./mysql:/var/lib/mysql
      - ./mysqlBackup:/data/mysqlBackup
    ports:
      - "3306"
    healthcheck:
      test: ["CMD", "mysqladmin", "ping", "-h", "127.0.0.1", "--silent"]
      interval: 3s
      retries: 5
      start_period: 30s
    environment:
      # 请修改此密码,并对应修改上方 Halo 服务的 SPRING_R2DBC_PASSWORD 变量值
      - MYSQL_ROOT_PASSWORD=password1234                            #请自行修改密码,与上方保持一致
      - MYSQL_DATABASE=halo

networks:
  halo_network:

2.2.3 Halo的部署

查看8090端口有没有被占用

lsof -i:8090

没有占用,进入halo目录下进行部署即可,若被占用可以更换为其它未被占用的端口,之后执行如下命令进行部署:

cd /root/data/docker_data/halo

docker compose up -d  

2.3 Halo的基本使用

自建博客须谨记:

1.根据博文更新频次定期备份博客文章,建议每周或每月进行备份!!!

2.每次更新Halo版本前务必进行文章的导出和博客的备份操作,如若不然,重要数据毁于一旦,岂不痛哉!!!

3.每次卸载Halo前务必进行文章的导出和博客的备份操作,如若不然,重要数据毁于一旦,岂不痛哉!!!

2.3.1 主题和插件安装

部署Halo之后,会提供一个默认的主题,你可以在主题管理页面选择你喜欢的主题安装,安装之后记得启用(主题和插件安装之后都要启用才能够真正的生效)。之后安装一些插件提供更强大的功能,首先是安装应用市场插件,安装之后会在侧边栏出现对应功能,接下来你就可以通过侧边栏的应用市场安装主题和插件,这比通过侧边栏的主题和插件里的应用市场安装更加的简便。更多主题和插件推荐,请继续往下看。

2.3.2 文章的设置

你可以自定义文章的url,以我这篇文章为例,地址栏的url为 archives/1713169387295,通过 设置->文章设置->别名生成策略 可以设置不同的命名方式替换 1713169387295,比如发布时间、UUID、文章标题的拼音字母等,过 设置->主题路由设置->文章详情页访问规则 可以设置不同的命名方式替换 archives

2.3.3 邮件通知设置

这里的密码为授权码,可以参考我的博文获取:获取SMTP授权码,设置之后新用户的注册以及评论通知等均可以通过邮件进行通知。

2.4 Halo的插件

主要介绍我个人认为重要或好用的插件,当然也包括一些付费插件(非Halo专业版插件),更多插件及其更详细的介绍你可以通过应用市场查看。

2.4.1 应用市场

这个插件是必须安装的,应用市场不仅可以展示主题、插件还可以及时检测主题、插件的更新情况。

2.4.2 编辑器

Halo默认自带的是富文本编辑器,如果你经常使用Markdown编辑器写文章,可以直接选择Markdown编辑器,推荐 Vditor编辑器 。如果你的文章中只有少部分内容是Markdown语法也可以在默认编辑器的基础上搭配 Markdown / HTML 内容块插件 ,实现Markdown语法的渲染。如果你的文章需要渲染数学公式,需要安装 KaTex插件,这样你可以用LaTex语法编辑数学公式,并最终渲染出来。

2.4.3 自动备份插件

该插件支持定时备份Halo的数据库和文件,同时可以根据备份文件进行恢复,毫无疑问这是必备插件。

2.4.4 评论插件

既然选择在公网公布网站,我们自然希望有人能够看到,对于博客网站而言,我们也希望自己的文章能够得到关注并且收到访客的反馈,那么评论插件是不可或缺,相比与其他方式交流,评论可以让每个访客都可以看到,既可以避免重复问题也可以就某一问题集思广益。

评论组件 是Halo官方提供的一个通用插件,优点就是和Halo的适配性比较好,可以直接在控制台查看和回复评论,但是该插件目前不支持富文本或Markdown语法,也不支持图片评论,如果只是纯文字评论那么是合适的。

如果你希望评论能够支持Markdown语法包括公式渲染,那么需要你自己安装第三方评论应用,目前只有三款分别是 ArtalkWalineTwikoo,然后再在应用市场安装对应的评论插件,相应的评论插件分别为 Artalk插件Waline插件Twikoo插件,三个选其一即可,应用提供服务,插件提供适配。如果是Joe3主题则不需要安装对应评论插件,因为主题内部已经支持,毫无疑问主题自带的评论与主题本身能更好的适配。如果你和我使用的是同一主题,并且默认的 评论组件 不符合你的要求。可以在站内搜索Artalk或Waline关键字进行安装和配置,推荐后者。其它主题可以查看其对应官方文档。

2.4.5 瞬间插件

瞬间类似于微信的朋友圈和QQ动态,可以非常方便的发布一些短文或者记录一瞬的时光,如果希望在网站中展示出来,需要主题适配,否则,你只能在后端控制台中查看。

2.4.6 朋友圈插件

这里的朋友圈是通过RSS订阅的方式,获取开启了RSS订阅的网站的最新文章信息,你可以订阅你关注的博主,这样他发布文章之后,你可以及时的收到,同样想要在网站前端展示,需要主题适配。

2.4.7 图库插件

图库就是一种相册集的功能,你可以选择附件中的图片放到图库中,同样想要在网站前端展示,需要主题适配。

2.4.8 智阅GPT插件

该插件可以实现在文章页顶部插入摘要,你可以通过配置免费的AI模型为文章生成摘要,让用户快速的了解你的文章内容,使用时,建议在生成的AI摘要的基础上进行更合理的修改。

2.4.9 编辑器超链接卡片插件

该插件可以让你文章中的超链接以卡片的形式呈现,更加直观和美观。

2.4.10 链接管理插件

该插件实现链接收集,一般用于主题适配后的友链展示,详细可以见友链页面,同样想要在网站前端展示,需要主题适配。

2.4.11 内容助手插件

该插件实现富文本与Markdown格式的内容转换,同时还支持Word的docx文件导入,导入后的格式默认为富文本也可以选择导入的格式为Markdown,同时该插件支持导出文章,导出的格式可以选择为Markdown、HTML以及PDF。富文本内容的默认导出格式即为HTML。不过也需要注意格式转换不是万能的,在一些特殊的格式转换上会存在问题。

2.4.12 链上好文插件

该插件能够生成私有文章的链接,将该链接分享给其他人,则别人可以查看该私有文章。

2.4.13 邮件模板管理插件

该插件可以提供邮件模板,通过自定义格式和样式,让发送的邮件不再只是“光秃秃”的文字内容。

2.4.14 Tools工具箱插件

购买地址:https://auth.muyin.site/products

价格:88元,重要节日会有打折

产品的文档:https://auth.muyin.site/docs/PluginTools/intro

该插件主要有两大功能,一是限制阅读,包括微信公众号验证码访问、密码访问、登录访问、评论访问、以及支付访问(需搭配另一付费插件即 https://auth.muyin.site/docs/PluginPayment 使用),二是对接微信公众号,实现微信公众号文章同步到Halo,也支持在在微信公众号通过特定格式发布瞬间同步到Halo。

2.5 Halo的主题

主要介绍我个人认为美观且功能强大或简洁的主题,当然也包括一些付费主题(非Halo专业版插件),更多主题及其更详细的介绍你可以通过应用市场或链接查看。主题这种东西亲自预览一下DEMO就能分辨出适不适合自己。

在选择主题方面,除了整体的观感外还要考虑主题作者是否在积极维护、对Halo插件的适配性如何。

2.5.1 Hao主题

这应该是使用最多的主题了,这一主题移植自 https://blog.zhheo.com/,整体经过精心设计,深受用户喜爱。

2.5.2 Dream2.0 Plus主题

这也是一款精美的主题,并且作者也在积极更新,整体的风格和Joe3有比较多的相似之处。

2.5.3 Joe3主题

毫无疑问这是我自建站以来一直使用的博客主题,不仅整体美观且功能丰富,对大部分上述插件都进行了适配,遗憾的是作者很长时间不更新了。

2.5.4 付费主题

星度和PIX主题:https://www.yunext.cn/

微浸主题:https://www.lik.cc/archives/microimmersion

这些是付费主题中比较优秀的主题,其中星度和PIX主题的价格还是比较昂贵的。星度主题和微浸主题比较相似,但是后者价格要便宜不少。

2.6 Halo的升级与更新

# 方式一
cd /root/data/docker_data/halo

docker compose down --rmi all  # 停止容器运行并删除相关镜像

vim docker-compose.yml         # 修改halo的版本号为最新

docker compose up -d           # 重新运行容器

# 方式二
cd /root/data/docker_data/halo

docker compose down            # 停止容器运行

vim docker-compose.yml         # 修改halo的版本号为最新

docker compose pull            # 重新拉取镜像

docker compose up -d           # 重新运行容器

2.7 Halo的卸载

cd /root/data/docker_data/halo

docker compose down --rmi all           # 停止容器运行并删除相关镜像

cd ..

rm -rf /root/data/docker_data/halo      # 完全删除

0
  1. 支付宝打赏

    qrcode alipay
  2. 微信打赏

    qrcode weixin

评论区