博客 / 詳情

返回

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,數據庫名、用户名和密碼可自定義,密碼建議隨機。

image-20230927010433190

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文件

image-20230927164834024

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 服務,重載配置和重啓分別點一下。

image-20230927170315444

3.4 啓動

docker-compose up -d

放行 8090 端口,用瀏覽器訪問域名/console 或者IP:8090/console ,進入初始化頁面,初始化後進入 Halo 管理頁面。

image-20230927174453409

4 Halo 博客設置

效果預覽(使用Dream for Halo 2.x主題,預覽圖僅供參考):

image-20230927183624379

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 部署難度不大,難度大的是堅持更新博客,讓我們共同努力,致敬每一位還在寫博客的你!

user avatar
0 位用戶收藏了這個故事!

發佈 評論

Some HTML is okay.