使用 GitHub Actions 将 Hugo 博客自动部署到远程服务器

前言 假如你经常更新博客内容,每次写完文章后还要手动登录服务器执行 rsync 命令来部署,就显得非常麻烦了。更理想的情况是:每次 push 代码到 GitHub 后,GitHub Actions 自动帮我们构建 Hugo 站点并同步到服务器上,这样我们就可以专注于写作,而不必担心部署细节。 什么是 GitHub Actions GitHub Actions 是 GitHub 提供的一套 CI/CD(持续集成/持续部署)工具,允许我们在代码仓库中定义自动化工作流程。当特定事件发生时(例如 push、pull request、release 等),GitHub Actions 就会触发相应的工作流程,执行预定义的任务。我们可以使用 GitHub Actions 来自动化构建 Hugo 站点,并将生成的静态文件部署到远程服务器上。 准备工作 要使用 GitHub Actions 自动部署 Hugo 博客,我们需要准备以下几个方面: 远程服务器:你需要有一台远程服务器,已经安装了 Nginx 或 Apache,并且配置好了网站根目录(例如 /var/www/html/)。 GitHub 仓库:你需要在 GitHub 上创建一个仓库,用来存放你的博客源码。这个仓库将作为 GitHub Actions 的触发源,当你 push 代码到这个仓库时,GitHub Actions 就会自动执行部署流程。 SSH 密钥:为了让 GitHub Actions 能够安全地连接到你的远程服务器并执行部署操作,你需要生成一对 SSH 密钥,并将公钥添加到服务器的 ~/.ssh/authorized_keys 文件中,同时将私钥存储在 GitHub 仓库的 Secrets 中。 什么是 SSH 密钥 首先,我们需要知道什么是 SSH 协议。SSH(Secure Shell)是一种网络协议,用于在不安全的网络上安全地访问远程计算机。SSH 使用公钥加密技术来验证用户身份和保护数据传输的安全性。 SSH 密钥对由两部分组成:公钥和私钥。公钥可以公开分享,而私钥必须保密。使用 SSH 密钥对进行身份验证时,用户将私钥保存在本地计算机上,并将公钥上传到远程服务器。当用户尝试连接到服务器时,服务器会使用公钥来验证用户的身份,如果验证成功,用户就可以访问服务器。 ...

📅 June 15, 2026 · ⏱️ 12 min · 📝 约 1815 字 · 👁️ 次阅读

初见

前言 大家好,这里是 HJJJ。 想必作为一个 CS 学生,搭建一个个人博客是必经之路。然而由于本人先前的懒惰,一直没有探索这个领域。直到最近,突然发现自己已经学了不少东西了,而有些学到的东西由于缺少实际应用,已经快要忘记了——于是我决定搭建一个个人博客,用来记录学习过程和心得体会。 什么是网站? 网站是由一系列通过超链接相互关联的网页组成的集合,通过域名访问,并托管在一个或多个服务器上。服务器负责存储网站的内容,域名则提供了用户访问的地址。网站可以包含文本、图片、视频、音频等多种类型的内容,用户通过浏览器来访问这些内容。 静态网站和动态网站 网站大致分为静态网站和动态网站两类。 静态网站是指那些内容固定不变的网站,用户访问时看到的内容是预先生成的。这些网站通常使用 HTML、CSS 和 JavaScript 来构建,内容由开发者手动编写和更新。静态网站的优点是加载速度快且安全性较高,因为它们不依赖服务器端的处理。 动态网站则是指那些内容可以根据用户的请求动态生成的网站。这些网站通常使用服务器端语言(如 PHP、Python、Ruby 等)和数据库来存储和管理内容。动态网站的优点是可以提供个性化的用户体验和更丰富的功能,但它们可能会面临性能和安全方面的挑战。 对于个人博客来说,大多数时候我们只是在展示静态内容——文章、图片、代码片段。动态网站的功能虽然强大,但维护成本和性能开销都更高。因此,静态网站生成器成了我的首选。 选择 Hugo 静态网站生成器有很多选择:Jekyll、Hexo、Hugo、Zola……每个都有自己的特点。我最终选择 Hugo,主要看中三点: 速度极快:Hugo 基于 Go 语言构建,生成整个站点通常只需要几毫秒到几秒,远快于大多数同类工具。 单文件部署:Hugo 是一个独立的可执行文件,不需要安装任何依赖环境,下载就能用。 主题丰富:Hugo 社区提供了大量现成的主题,直接拿来用就能得到一个美观的博客。 Hugo 允许用户使用 Markdown 文件来编写内容,并通过模板系统来定义网站的结构和样式,对我这种想专注于写作的人来说非常友好。 如何使用 Hugo 搭建博客 首先,你需要寻找一个地方来放你的源码。这里以 Windows 系统为例,打开命令行工具,进入你想要存放博客源码的目录。例如,我想把源码放在 D 盘的 blog 文件夹下: PowerShell Copy cd D:\blog 接下来,使用 Hugo 命令创建一个新的站点文件夹(我们这里先给它起名叫 myblog,你也可以换成别的名字): ...

📅 June 11, 2026 · ⏱️ 9 min · 📝 约 1401 字 · 👁️ 次阅读
Comments