Halo 開源項目學習(一):項目啟動

項目簡介

Halo 是一個優秀的開源部落格發布應用,在 GitHub 上廣受好評,正好最近在練習寫部落格,藉此記錄一下學習 Halo 的過程。

項目下載

從 GitHub 上拉取項目源碼,Halo 從 1.4.3 開始,最低支援的 JRE 版本為 11,本人下載的是 1.4.13 版本。

前提設置

導入項目

因為 Halo 使用 Gradle 構建,所以在 idea 中導入 Gradle 項目,與 Maven 不同,Gradle 項目的依賴在 build.gradle 中添加。

Halo 中主要使用了如下依賴:

  • Spring Boot:一個用來簡化 Spring 的搭建和開發過程的全新框架;
  • Spring Data JPA:持久層框架;
  • Spring Web:構建 Web 應用;
  • Undertow:高性能 Web 容器;
  • Freemarker:模板引擎;
  • H2 Database:嵌入式資料庫,無需安裝;
  • MySQL:關係型資料庫;
  • Lombok:Java 高效開發工具;
  • Swagger:生成介面文檔;
  • Hutool:開源 Java 工具類;
  • 七牛云:雲存儲伺服器;
  • 阿里雲 OSS:提供海量、安全、低成本、高可靠的雲存儲服務;
  • Flexmark:將 Markdown 轉化為 HTML。

ieda 設置

Halo 使用的是 JDK 11,所以需要將 idea 中的 JDK 版本設置成 JDK 11。依次點擊 File -> Project Structure -> Project SDK 設置 JDK。

Gradle 也需要設置為 JDK 11,依次點擊 File -> Settings -> 搜索 Gradle 設置 JDK。

啟動項目

注意事項

項目啟動前請做好如下準備:

  1. 確保 JDK 的版本符合要求,本文使用 JDK 11;
  2. 確保所有的依賴都正常導入(本次實踐未發生異常);
  3. 確保 resources/templates/themes 目錄不為空,正常情況下應該有 anatole 文件夾。為空是因為使用 Git 克隆時沒有克隆子模組,可以在 Halo 官網的主題倉庫下載 Anatole 主題,解壓後重命名為 anatole,並複製到 themes 目錄下;
  4. Halo 默認使用 H2 Database,該資料庫無需安裝,因此可以直接啟動項目。如果希望使用 MySQL,則需要在 application.yaml 文件中注釋掉 H2 Database 的配置,並添加 MySQL 的相關配置(資料庫名為 ‘halodb’):
# MySQL 配置
driver-class-name: com.mysql.cj.jdbc.Driver
url: jdbc:mysql://127.0.0.1:3306/halodb?characterEncoding=utf8&useSSL=false&serverTimezone=Asia/Shanghai&allowPublicKeyRetrieval=true
username: root
password: 123456

運行項目

點擊運行,項目正常啟動,控制台列印了如下資訊:

上述資訊提示我們訪問 127.0.0.1:8090,首次訪問該頁面時,頁面會重定向到初始化頁面,用戶需要設置部落客、部落格的相關資訊,如用戶名、密碼等。

資訊填寫完畢後,點擊安裝,之後頁面會跳轉到登錄頁面,此時用戶可以使用之前設置的帳號和密碼進行登錄。登錄成功後進入 ‘Halo Dashboard’ 頁面,且系統會自動創建一篇文章 ‘Hello Halo!’。’Halo Dashboard’ 頁面是部落格的後台管理頁面,供管理員使用,訪問 127.0.0.1:8090/admin 時就會進入該頁面(需登錄)。

部落格的主頁可訪問 127.0.0.1:8090,在該頁面可看到部落客發表的所有文章。

至此,Halo 項目在 idea 上啟動成功!