Hugo 静态文件生成器可以安装在运行 Linux、Windows、macOS 和 BSD 操作系统的计算机上。
使用 Hugo 的内置 Web 服务器和 Decap 本地配置的内容管理系统,您可以使用易于使用的 Web UI 编辑器(包括富文本编辑功能、实时预览和拖放媒体)添加和编辑站点内容正在上传。
凭借其先进的模板系统和快速的资源管道,Hugo 可在几秒钟内渲染出完整的网站。
由于 Hugo 创建静态网站,因此您只需将生成的文件传输到它即可在几乎任何托管服务上托管您的 Hugo 网站。
如果您可以通过 SSH 访问您的 Web 主机,则可以使用 rsync 命令安全、快速地部署您的 Hugo 网站。


1. Windows 10/11 的发布流程

1.1。安装Git

为 Windows 安装 Git,它允许您使用 Git Bash 运行 Rsync 命令。

1.2。安装 Rsync 及其依赖项

前往https://repo.msys2.org/msys/x86_64/,下载最新的软件包:

1.rsync(rsync-3.2.7-2-x86_64.pkg.tar.zst) 2.libxxhash(libxxhash-0.8.2-1-x86_64.pkg.tar.zst) 3.liblz4(liblz4-1.9.4-1-x86_64.pkg.tar.zst) 4.libzstd(libzstd-1.5.5-1-x86_64.pkg.tar.zst) 5.libopenssl(libopenssl-3.2.0-1-x86_64.pkg.tar.zst)

下载并安装存档程序 https://github.com/mcmilk/7-Zip-zstd/releases(例如 7z22.01-zstd-x64.exe)。运行 7zFM.exe(通常位于 C:\Program Files\7-Zip-Zstandard\ 文件夹中)并将下载的存档解压到 Git 文件夹中,例如:

  • \rsync-3.2.7-2\usr\bin → C:\Program Files\Git\usr\bin
  • \rsync-3.2.7-2\usr\lib → C:\Program Files\Git\usr\lib
  • \rsync-3.2.7-2\usr\share → C:\Program Files\Git\usr\share

其余档案以此类推。

1.3。将您的 SSH 密钥复制到您的主机

为了使登录服务器更加安全,您可以上传 SSH 密钥。如果您已经在服务器上安装了 SSH 密钥,则可以跳到下一部分。

运行 git-bash.exe(通常位于 C:\Program Files\Git)并运行此命令以生成名为 rsa_id 的新密钥对:

$ ssh-keygen -t rsa -q -C "For SSH" -f rsa_id

系统将提示您输入密码,这提供了额外的保护层。输入您要使用的密码,然后在出现提示时再次输入,或者如果您不想使用密码,则将该字段留空。如果您不使用密码,则登录时不会提示您输入密码,但安全性稍差。

结果,将在您的文件夹(例如 C:\Users\USER_NAME\.ssh)中创建两个具有私钥和公钥的文件(rsa_id 和 rsa_id.pub)。

为了使登录更容易,请使用以下命令将 Web 主机定义添加到 ~/.ssh/config 文件中,将 USER_NAME 替换为当前 Windows 用户名,将 HOST 替换为其 IP 地址,将 USER 替换为您用于登录的用户名传输文件时进入您的网络主机:

$ cd /c/Users/USER_NAME/.ssh

~/.ssh/$ cat >> config <<EOF
Host HOST
     Hostname HOST
     Port 22
     User USER
     IdentityFile ~/.ssh/rsa_id
EOF

执行命令后,应在 Windows .ssh 文件夹(通常位于 C:\Users\user_name\.ssh\config)中生成一个配置文件,其中包含以下内容:

Host HOST Hostname HOST Port 22 User USER IdentityFile ~/.ssh/rsa_id

[!警告] 不要忘记在您的 Web 主机上启用 SSH 访问。如何在流行的 Timeweb 托管上启用 SSH 访问,请参阅[此处](https://timeweb.com/ru/docs/virtualnyj-hosting/podklyuchenie-k-serveru-hostinga/podklyuchenie-po-ssh/“通过 SSH 连接”)。

接下来,转到 .ssl 文件夹并使用 ssh-copy-id 命令将 SSH 公钥复制到远程服务器,将 user_name 替换为当前 Windows 用户的名称,将 HOST 替换为其 IP 地址,将 USER 替换为您的用户名用于在传输文件时登录您的网络主机:

$ cd /c/Users/user_name/.ssh
$ ssh-copy-id -i rsa_id.pub USER@HOST

现在您可以轻松连接到远程服务器:

$ ssh USER@HOST
Enter passphrase for key '/home/mylogin/.ssh/rsa_id':

关闭当前的 git-bash 连接。

1.4。创建脚本以启动发布过程

运行 git-bash.exe 文件(通常位于 C:\Program Files\Git 文件夹中)。

在 Hugo 站点树的根目录中创建一个名为“部署”的新脚本(例如:D:\Hugo\Sites\webpractica):

$ cd /d/Hugo/Sites/webpractica

/d/Hugo/Sites/webpractica (main)
$ cat >> deploy <<EOF
#!/bin/sh
hugo --gc --minify && rsync -avz --delete public/ USER@HOST:~/webpractica/public_html
exit 0
EOF

适用参数:

-a - 激活对数据归档的支持; -v – 同步过程显示在屏幕上; -z - 文件在传输到远程服务器时被压缩;

--delete - 在同步期间删除文件。默认情况下,目标目录存储之前复制到其中的所有文件。即使是那些用户早已从工作磁盘中删除的不必要的内容。因此,建议至少定期删除不必要的数据,而不是用信息的备份副本来减小目录的大小。

[!信息] 了解有关 Rsync 同步设置和示例的更多信息 阅读[此处](https://timeweb.cloud/tutorials/linux/rsync-guide/ “Rsync同步的安装、配置和示例”)

使部署可执行:

/d/Hugo/Sites/webpractica (main)
$ chmod +x deploy

创建deploy.bat以在Windows上运行部署脚本

/d/Hugo/Sites/webpractica (main)
$ cat >> deploy.bat <<EOF
"C:\Program Files\Git\git-bash.exe" "deploy"
EOF

关闭当前的 git-bash 连接。

1.5。将 Hugo 站点的本地版本发布到网络主机

从Hugo站点的根目录运行deploy.bat文件

2. Linux (Debian) 的发布过程

详细说明请参见 Hugo 官方网站[此处](https://gohugo.io/hosting-and-deployment/deployment-with-rsync/“Deployment with Rsync”)。