其他托管方式
Netlify 可以从 GitHub、GitLab 或 Bitbucket 构建站点,并为每个拉取请求发布预览。OINK 消费端会直接运行 Hugo Extended,不安装 Node.js 软件包,也不调用 PostCSS。
配置站点
把完整源码推送到 Git 服务商,在 Netlify 中导入仓库,然后使用以下构建设置:
| 设置 | 值 |
|---|---|
| 构建命令 | hugo --gc --minify |
| 发布目录 | public |
HUGO_VERSION |
0.164.0 或主题验证过的其他版本 |
如果 Netlify 检测到仅供主题维护工具使用的软件包清单,请为站点关闭自动依赖安装。这些工具不属于消费端构建合同。
如果通过 Git
submodule 安装主题,请启用递归 submodule 检出。如果使用 Hugo 模块,Netlify 还需要具备普通的 Git 和 Go 访问能力,以便在全新构建中下载已经固定版本的模块。完整离线发行包使用相邻的
themes/oink/ 目录,可避免首次构建时下载依赖。
将配置保存在仓库中
也可以把同样的设置写入 netlify.toml 并提交:
除非预览环境专门用于测试升级,否则生产环境和部署预览应使用同一个 Hugo 版本。如果预览构建需要把自动生成的 URL 作为 base URL,请在对应环境的 Hugo 命令中加入 Netlify 部署 URL。
如果不希望非生产部署被索引,请按照构建环境与索引中的说明使用非生产 Hugo 环境。
保存设置后触发一次部署,并检查构建日志。正常的消费端构建应该只出现一条 Hugo 命令,不应运行 npm、PostCSS、Autoprefixer、CDN 下载或构建期远程资源步骤。
Amazon S3 与 CloudFront
通过 Amazon Web Services 发布网站有多种方案。本节介绍最基础的一种:把站点部署到 S3 存储桶,并启用 CloudFront CDN(内容分发网络)来加速已部署内容的传输。
-
完成 AWS 注册后,创建 S3 存储桶,将其关联到你的域名,再加入 CloudFront CDN。可以参考这篇博客文章,其中包含完整流程和易于操作的分步说明。
-
下载并安装最新版 AWS 命令行界面(CLI)v2。随后运行
aws configure配置 CLI 实例(请提前准备 AWS Access Key ID 和 AWS Secret Access Key):CONSOLE -
运行
aws s3 ls检查 AWS CLI 配置是否正确;命令应输出你的 S3 存储桶列表。
-
在
hugo.toml、hugo.yaml或hugo.json中添加如下[deployment]分区:配置文件:hugo.tomlTOMLhugo.yamlYAMLhugo.jsonJSON
-
运行
hugo --gc --minify,将站点资源渲染到 Hugo 构建环境的public/目录。 -
使用 Hugo 内置的
deploy命令把站点部署到 S3:CONSOLE如输出所示,执行
hugo deploy会自动使 CloudFront CDN 缓存失效。 -
至此全部完成。今后只需使用 Hugo 内置的
deploy命令,即可轻松部署到 S3 存储桶。
有关 Hugo deploy
命令及其命令行参数的更多信息,请参阅命令概览。其中,--maxDeletes int
和强制上传所有文件的 --force 参数可能会很有用。
如果站点源码位于 GitHub 仓库,可以使用 GitHub Actions,在每次向仓库提交变更后自动把站点部署到 S3。这篇博客文章介绍了工作流的配置方法。
如果 S3 无法满足需求,可以考虑 AWS Amplify Console。这是更高级的持续部署(CD)平台,内置对 Hugo 静态站点生成器的支持。Hugo 官方文档提供了相应的入门指南。