前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >Halo博客的部署和使用

Halo博客的部署和使用

作者头像
M.Talen
发布2024-05-22 15:22:17
1870
发布2024-05-22 15:22:17
举报
文章被收录于专栏:爱吃猫的鱼BLOG爱吃猫的鱼BLOG

1 前言

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

准备

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

注意

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

2 Docker 部分

安装 yum-utils

代码语言:javascript
复制
# yum-utils是yum的工具包集合,需要用到其中的yum-config-manager
sudo yum install -y yum-utils

从国内服务器上下载 docker

代码语言:javascript
复制
sudo yum-config-manager \
    --add-repo \
    http://mirrors.aliyun.com/docker-ce/linux/centos/docker-ce.repo

安装 docker

代码语言:javascript
复制
sudo yum install -y docker-ce docker-ce-cli http://containerd.io docker-buildx-plugin docker-compose-plugin

验证 docker 是否安装成功

代码语言:javascript
复制
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 需手动创建。

方案二:命令行安装

代码语言:javascript
复制
# 下载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 是否安装成功

代码语言:javascript
复制
docker-compose -v
# 出现版本号即为安装成功
# Docker Compose version v2.21.0

方案三:pip方式安装

代码语言:javascript
复制
# 跳过卸载requests模块操作
sudo pip install --ignore-installed requests

# 安装docker-compose
pip install docker-compose

验证 docker-compose 是否安装成功

代码语言:javascript
复制
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,数据库名、用户名和密码可自定义,密码建议随机。

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 数据根目录)

代码语言:javascript
复制
mkdir ~/halo && cd ~/halo

创建 docker-compose.yaml

代码语言:javascript
复制
vim docker-compose.yaml

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

编辑 docker-compose.yaml

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

代码语言:javascript
复制
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

代码语言:javascript
复制
docker-compose up -d

检查 Halo 镜像运行状态

代码语言:javascript
复制
docker ps
# 出现halo即为成功

3.3 绑定域名

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

域名解析

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

主机记录:访问站点域名的二级域名,比如 blog.xxxx.com,那么主机记录就为 blog 记录类型:选择“A”,将域名指向一个 IPv4 地址 记录值:填写服务器 IP 地址 其他默认即可

Nginx 反向代理

配置nginx.conf文件

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

代码语言:javascript
复制
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 服务,重载配置和重启分别点一下。

3.4 启动

代码语言:javascript
复制
docker-compose up -d

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

4 Halo 博客设置

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

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 模板

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

代码语言:javascript
复制
# 个人信息

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

# 联系方式

- Email:
- WeChat:
- QQ:

# 网站信息

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

4.6 一些细节

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

5 写在最后

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

本文参与 腾讯云自媒体同步曝光计划,分享自作者个人站点/博客。
如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 作者个人站点/博客 前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体同步曝光计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
目录
  • 1 前言
  • 2 Docker 部分
  • 3 Halo 博客部署
    • 3.1 建数据库
      • 3.2 创建容器组
        • 3.3 绑定域名
          • 3.4 启动
          • 4 Halo 博客设置
            • 4.1 基础设置
              • 4.2 插件
                • 4.3 菜单
                  • 4.4 主题
                    • 4.5 模板
                      • 4.6 一些细节
                      • 5 写在最后
                      相关产品与服务
                      容器服务
                      腾讯云容器服务(Tencent Kubernetes Engine, TKE)基于原生 kubernetes 提供以容器为核心的、高度可扩展的高性能容器管理服务,覆盖 Serverless、边缘计算、分布式云等多种业务部署场景,业内首创单个集群兼容多种计算节点的容器资源管理模式。同时产品作为云原生 Finops 领先布道者,主导开源项目Crane,全面助力客户实现资源优化、成本控制。
                      领券
                      问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档