导言
我的博客: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.git
branch: 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 的这种设计,是一种非常成熟和高效的静态网站开发与部署模式。它将复杂的构建过程与简单的托管服务解耦,使得开发者能够专注于内容创作,同时享受到高性能、高安全性和免费的托管服务。