導言
我的博客:https://q164129345.github.io/
既然要將個人博客托管到github,首先我們肯定要有一個github賬戶。另外也需要在電腦上安裝另外一個著名的代碼管理工具git。
一、創建github倉庫
二、在Hexo設置部署的內容
# Deployment## Docs: https://hexo.io/docs/one-command-deployment
deploy:type: 'git'repository: git@github.com:q164129345/q164129345.github.io.gitbranch: main
如上所示,在文件_config.yml的最下面填入部署的內容。
三、安裝部署github的依賴
npm install hexo-deployer-git --save
四、部署到github
hexo clean && hexo generate && hexo deploy
五、github
如上所示,可以通過網址:q164129345.github.io訪問個人博客了!
六、細節補充
6.1、部署到github的僅僅只是public文件夾的內容
如上所示,Hexo工程里只有public的內容部署到github倉庫。為什么?
-
Hexo 是一個靜態站點生成器 (Static Site Generator, SSG)。
- 它的核心任務是:接收你的 Markdown 源文件、主題配置、布局文件等(這些通常在
source/
、themes/
、_config.yml
等目錄中),通過其內部的渲染引擎和插件處理后,生成純粹的 HTML、CSS、JavaScript 和圖片等靜態文件。 - 這些生成的靜態文件,就是放在
public/
目錄下的內容。
- 它的核心任務是:接收你的 Markdown 源文件、主題配置、布局文件等(這些通常在
-
GitHub Pages 是一個靜態網站托管服務。
- GitHub Pages 的設計初衷就是為了托管和提供純靜態網站的訪問。它不具備運行服務器端腳本(如 Node.js、PHP、Python)、處理數據庫連接的能力。
- 它只能直接提供瀏覽器能夠解析和渲染的靜態資源。
因此,當 Hexo 執行 hexo generate 命令時,它會把所有必要的文件都處理好并輸出到 public/
文件夾。接著,當你執行 hexo deploy 命令時,它實際上就是把這個 public/
文件夾的內容推送到你的 GitHub Pages 倉庫(通常是 master 或 main 分支,或者是 gh-pages 分支),供 GitHub Pages 服務直接托管和訪問。
6.2、只部署public文件夾的內容到github,有什么好處?
這種設計模式帶來了多方面的好處:
- 職責分離 (Separation of Concerns):
- Hexo 的職責: 負責“構建”或“編譯”你的網站。它將你的原始 Markdown、模板等轉換為可部署的靜態文件。
- GitHub Pages 的職責: 負責“托管”和“分發”這些已經構建好的靜態文件。
- 兩者各司其職,互不干涉,使得整個流程清晰高效。GitHub Pages 不需要知道你的網站是如何生成的,它只關心最終的 HTML 文件。
- 效率與性能:
- 部署效率: 只需要上傳最終的、精簡過的靜態文件。你的源代碼(Markdown、主題文件、Node.js 依賴等)通常會比生成的 public 文件夾大得多,上傳整個項目會耗費更多時間和帶寬。
- 網站加載速度: GitHub Pages 直接提供靜態文件,瀏覽器可以直接解析渲染,無需服務器端處理時間,大大提高了網站的訪問速度。
- 安全性:
- 純靜態網站是最安全的網站類型之一。沒有服務器端代碼可以被攻擊者利用,沒有數據庫可以被注入,極大地降低了安全風險。
- 你不會不小心將敏感的配置信息(例如數據庫密碼、API 密鑰等,即使 Hexo 通常沒有這些)部署到公共可訪問的服務器上。
- 版本控制的最佳實踐:
- 源代碼倉庫: 你應該將你的 Hexo 項目的完整源代碼(包括
source/
、themes/
、_config.yml
、package.json
等)存放在一個單獨的 Git 倉庫中(例如 my-blog-source)。這個倉庫記錄了你網站的開發過程。 - 部署倉庫: GitHub Pages 倉庫(例如 yourusername.github.io)只包含 public 文件夾的內容。這使得這個倉庫非常“干凈”,只包含最終的、可直接訪問的網站內容。
- 這種分離允許你獨立地管理網站的開發和部署。你可以回溯到任何一個版本的源代碼,然后重新生成和部署。
- 源代碼倉庫: 你應該將你的 Hexo 項目的完整源代碼(包括
- CDN友好:
- 靜態文件非常適合通過內容分發網絡(CDN)進行全球緩存和分發,進一步提高訪問速度和穩定性。GitHub Pages 本身就利用了 CDN。
總結來說,Hexo 配合 GitHub Pages 的這種設計,是一種非常成熟和高效的靜態網站開發與部署模式。它將復雜的構建過程與簡單的托管服務解耦,使得開發者能夠專注于內容創作,同時享受到高性能、高安全性和免費的托管服務。