Hugo静态网站的部署方案

目标

  • Hugo生成静态文件通过web服务器发布
  • 实现自动签发HTTPS
  • 实现自动化部署

方案

  • 使用Caddy作为Hugo静态网站的服务器
  • 通过Caddy实现自动签发HTTPS
  • 通过Github Action实现自动化部署

部署命令的工作目录下结构

├── Caddyfile
├── config
├── data
└── public
  • CaddyfileCaddy配置文件
  • configCaddy根据Caddyfile生成的文件
  • data:生成的HTTPS证书所在目录
  • publicHugo生成的静态文件

第一步:进入工作目录

# 进入hugo目录内
export HUGO_WORK_DIR=/path/to/hugo-files
cd HUGO_WORK_DIR

第二步:命令行生成Hugo静态网站内容

# 编译生成静态文件有两种方式,采用其中一个方式即可
# 第一种方式: Docker方式
docker run \
  --rm \
  -v $(pwd):/src \
  -w /src \
  klakegg/hugo:0.83.1-ubuntu \
  -D
# 第二种方式: hugo命令行方式
hugo -D

第三步:使用Caddy作为静态网站的服务器

配置Caddyfile:

tech.wychl.com {
  root * /var/www
  file_server
}
  • tech.wychl.com:网站的域名,替换自己的域名即可
  • root * /var/www:通过root指令,配置静态文件存放位置
  • file_serverfile_server指令,启动一个web server

部署Hugo静态文件

docker run \
  --name tech \
  -p 80:80 \
  -p 443:443 \
  -d \
  -v ${PWD}/Caddyfile:/etc/caddy/Caddyfile \
  -v ${PWD}/public:/var/www \
  -v ${PWD}/config:/config \
  -v ${PWD}/data:/data \
  -e TZ=Asia/Shanghai \
  caddy:2.4.1-alpine
  • TZ=Asia/Shanghai:上海时区

第四步:通过Github Action实现自动化部署

参考文件