Halo博客的部署和使用

1 前言

Halo 是一个强大易用的开源建站工具,拥有丰富的主题模板和插件,帮助用户快速搭建属于自己的博客系统。

准备

  • CentOS 系统服务器(推荐腾讯云服务器)
  • 域名
  • SSH 工具(推荐 FinalShell)

注意

本文涉及 docker 和 docker-compose 的安装,Nginx、MySQL 使用宝塔面板安装。

2 Docker 部分

安装 yum-utils

# yum-utils是yum的工具包集合,需要用到其中的yum-config-manager
sudo yum install -y yum-utils

从国内服务器上下载 docker

sudo yum-config-manager \
    --add-repo \
    http://mirrors.aliyun.com/docker-ce/linux/centos/docker-ce.repo

安装 docker

sudo yum install -y docker-ce docker-ce-cli http://containerd.io docker-buildx-plugin docker-compose-plugin

验证 docker 是否安装成功

sudo docker --version
# 出现版本号即为安装成功
# Docker version 24.0.6, build ed223bc

安装 docker-compose

方案一:手动安装

访问 docker/compose 获取最新版本,选择文件名称为 docker-compose-linux-x86_64 下载并上传至 /usr/local/bin/docker-compose 目录,/docker-compose 需手动创建。

方案二:命令行安装

# 下载docker-compose文件并创建目录
# 可能较慢
curl -L https://github.com/docker/compose/releases/download/2.21.0/docker-compose-`uname -s`-`uname -m` -o /usr/local/bin/docker-compose

# 将文件复制到/usr/local/bin环境变量下
mv docker-compose /usr/local/bin

# 给该文件执行权限
chmod +x /usr/local/bin/docker-compose

验证 docker-compose 是否安装成功

docker-compose -v
# 出现版本号即为安装成功
# Docker Compose version v2.21.0

方案三:pip方式安装

# 跳过卸载requests模块操作
sudo pip install --ignore-installed requests

# 安装docker-compose
pip install docker-compose

验证 docker-compose 是否安装成功

docker-compose -v
# 出现版本号即为安装成功
# docker-compose version 1.26.2, build unknown
# docker-py version: 4.4.4
# CPython version: 2.7.5
# OpenSSL version: OpenSSL 1.0.2k-fips  26 Jan 2017

3 Halo 博客部署

3.1 建数据库

数据库使用 MySQL,数据库名、用户名和密码可自定义,密码建议随机。

Halo博客的部署和使用_第1张图片

image-20230927010919741

3.2 创建容器组

Halo 2.9 可用的 Docker 镜像:halohub/haloghcr.io/halo-dev/halo

Halo 文档:目前 Halo 2 并未更新 Docker 的 latest 标签镜像,主要因为 Halo 2 不兼容 1.x 版本,防止使用者误操作。我们推荐使用固定版本的标签,比如 halohub/halo:2.9 或者 halohub/halo:2.9.0

创建文件夹(Halo 数据根目录)

mkdir ~/halo && cd ~/halo

创建 docker-compose.yaml

vim docker-compose.yaml

# “i”    进入编辑模式
# “esc”    退出编辑模式
# :wq    保存并退出vim编辑器

编辑 docker-compose.yaml

将 3.1 创建的 MySQL 数据库名、用户名和密码填入,其它项谨慎修改

version: "3"

services:
  halo:
    image: halohub/halo:2.9
    container_name: halo
    restart: on-failure:3
    network_mode: "host"
    volumes:
      - ./:/root/.halo2
    command:
      # 修改为自己已有的 MySQL 配置
      - --spring.r2dbc.url=r2dbc:pool:mysql://localhost:3306/数据库名
      - --spring.r2dbc.username=用户名
      - --spring.r2dbc.password=密码
      - --spring.sql.init.platform=mysql
      # 外部访问地址,请根据实际需要修改
      - --halo.external-url=http://localhost:8090/
      # 端口号 默认8090
      - --server.port=8090

启动docker-compose

docker-compose up -d

检查 Halo 镜像运行状态

docker ps
# 出现halo即为成功

3.3 绑定域名

如果没有域名,可以先暂时跳过。

域名解析

前往域名控制台解析一条新的记录。

主机记录:访问站点域名的二级域名,比如 blog.xxxx.com,那么主机记录就为 blog

记录类型:选择“A”,将域名指向一个 IPv4 地址

记录值:填写服务器 IP 地址

其他默认即可

Nginx 反向代理

配置nginx.conf文件

Halo博客的部署和使用_第2张图片

nginx.conf文件中添加如下内容。

server {
  # 监听80端口
  listen 80;
  listen [::]:80;
  # 接口的域名,用来访问
  server_name 域名;
  # 限制请求体的大小
  client_max_body_size 1024m;
  location / {
    # 设置服务器地址
    proxy_pass http://127.0.0.1:8090;
    # 设定被代理服务器接收到的header信息,重定义发往后端服务器的请求头
    proxy_set_header HOST $host;
    proxy_set_header X-Forwarded-Proto $scheme;
    proxy_set_header X-Real-IP $remote_addr;
    proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
  }
}

重启 Nginx 服务,重载配置和重启分别点一下。

Halo博客的部署和使用_第3张图片

3.4 启动

docker-compose up -d

放行 8090 端口,用浏览器访问域名/console 或者IP:8090/console ,进入初始化页面,初始化后进入 Halo 管理页面。

Halo博客的部署和使用_第4张图片

4 Halo 博客设置

效果预览(使用Dream for Halo 2.x主题,预览图仅供参考):

Halo博客的部署和使用_第5张图片

4.1 基础设置

侧边栏“设置”中包含:

  • 基本设置:站点标题、副标题、logo 等
  • 文章设置:各页文章显示条数
  • SEO 设置:站点关键词、秒数等,用于提升网站在搜索引擎中的排名
  • 用户设置:是否允许注册及新注册用户的所在权限组
  • 评论设置:是否可以发布评论及评论发送的条件
  • 主题路由设置:各页的路由设置及文章详情页访问规则
  • 代码注入:自定义全局 head 标签、内容页 head 标签、页脚

4.2 插件

前往Halo 应用市场安装内置应用市场插件。

侧边栏“应用市场”安装及启用:

  • Dream for Halo 2.x(主题)
  • 搜索组件:提供统一的搜索组件
  • 评论组件:提供完整的评论系统
  • Sitemap:生成站点地图
  • RSS:生成 RSS 订阅链接
  • ByteMD:让文章支持 Markdown 编辑
  • 图库管理:图库管理模块
  • 链接管理:链接管理模块
  • 瞬间:瞬间管理模块
  • 【可选】对象存储:对象存储策略,兼容阿里云、腾讯云、七牛云等
  • 【可选】OAuth2 认证:提供多种登录方式
  • 【可选】StackEdit:另一款 Markdown 编辑器

4.3 菜单

创建菜单(侧边栏“菜单”,选择在主菜单中新建):

名称 链接地址 备注
首页 /
归档 /archives 同主题路由设置中归档页路由前缀相同
分类 /categories 同主题路由设置中分类页路由前缀相同
标签 /tags 同主题路由设置中标签页路由前缀相同
动态 /moments 使用插件“瞬间”
相册 /photos 使用插件“图库管理”
友链 /links 使用插件“链接管理”
关于 /about 在侧边栏“页面”中新建页面,别名为 about

4.4 主题

侧边栏“主题(Dream for Halo 2.x)”中包含:

  • 详情:查看当前主题的基本信息
  • 基础信息:作者用户名(填写用户名而非用户昵称)、离屏文案、备案信息、站点声明信息等
  • 基础样式:加载进度条、文章侧边目录、博客背景图、横幅大图、主题色、字体、布局、首页大图轮播、侧边栏悬浮
  • 文章设置:文章缩略图、版权声明、文章分享、捐赠二维码等
  • 侧边栏配置:侧边栏展示(详情见下方表)、各模块类型的具体设置
  • 页面设置:设置友链页面、标签页面等
  • 增强功能:鼠标设置、特效显示、访客统计、自动推送等
  • 定制主题:主题样式自定义设置
侧边栏模板类型 模块位置 备注
信息模块 左侧(1) 1. 信息显示不正常检查基础信息中作者用户名是否正确;2. 彩字停顿检查当前用户详情中描述是否填写
音乐模块 左侧(2) 简单配置填写网易云歌单 ID 即可,获取方法:网易云音乐歌单链接中一串数字
最近文章模块 左侧(3)
公告模块 右侧(1)
目录模块 右侧(2) 目录仅在文章详情页显示
广告模块 右侧(3)
文章分类模块 右侧(4)
文章标签模块 右侧(5)

4.5 模板

提供一份页面“关于”的通用模板:

# 个人信息

- 昵称:
- Gitee:
- GitHub:
- Bilibili:

# 联系方式

- Email:
- WeChat:
- QQ:

# 网站信息

- 建站时间:
- 运行环境:
- 博客系统:
- 维护日志:

4.6 一些细节

  • 侧边栏“文章”页内可管理文章分类和标签
  • 添加文章页可切换编辑器,文章设置中可针对调整此篇文章的某些设置
  • 使用“对象存储”插件,可在侧边栏“附件”内改变存储策略,推荐免费的七牛云
  • 侧边栏“图库”为菜单“相册”,侧边栏“链接”为菜单“友链”,侧边栏“瞬间”为菜单“动态”
  • 侧边栏“用户”内角色管理可新建角色权限组,使用“OAuth2 认证”插件可在身份认证中设置多登录方式
  • 侧边栏“概览”中外部访问地址必须为外网 IP 或者域名,当为 localhost 或者 127.0.0.1 是将导致分享链接出现问题

5 写在最后

本文侧重在 Halo 博客的部署和使用上,简化了 Docker、Nginx 等在技术上的解释说明。Halo 部署难度不大,难度大的是坚持更新博客,让我们共同努力,致敬每一位还在写博客的你!

你可能感兴趣的:(Halo博客的部署和使用)