使用 Hugo + Stack 搭建好博客后,我们需要把博客部署到云服务器上。
我的 VPS 系统环境是:Ubuntu 24.04
选择的方案是:
- 使用 Caddy 作为 Web 服务器
- 使用 SSH + rsync 同步静态文件
本地生成博客静态文件 → 一键同步到 VPS → Caddy 自动更新内容。
下面是详细步骤
服务器准备
安装 Caddy 服务:
1
2
3
4
5
6
7
|
sudo apt install -y debian-keyring debian-archive-keyring apt-transport-https curl
curl -1sLf 'https://dl.cloudsmith.io/public/caddy/stable/gpg.key' | sudo gpg --dearmor -o /usr/share/keyrings/caddy-stable-archive-keyring.gpg
curl -1sLf 'https://dl.cloudsmith.io/public/caddy/stable/debian.deb.txt' | sudo tee /etc/apt/sources.list.d/caddy-stable.list
chmod o+r /usr/share/keyrings/caddy-stable-archive-keyring.gpg
chmod o+r /etc/apt/sources.list.d/caddy-stable.list
sudo apt update
sudo apt install caddy
|
验证安装:
此时你通过浏览器访问 http://VPS_IP 就能看到 Caddy 页面了。
创建博客网站目录,我把所有的页面文件放在 /var/www/sirenlingy/ 目录中:
1
|
mkdir -p /var/www/sirenlingyu
|
配置 Caddyfile 文件:
1
|
sudo nano /etc/caddy/Caddyfile
|
将文件中 :80 及后面的内容全部注释掉,然后写入以下内容:
1
2
3
4
5
6
7
8
|
sirenlingyu.com {
root * /var/www/sirenlingyu
file_server
encode gzip zstd
log {
output file /var/log/caddy/access.log
}
}
|
注意 sirenlingyu.com 是我的域名,需要替换为你自己的域名,并确保域名已经指向你的 VPS, yourmail@example.com 替换为你的邮箱,Caddy 就会自动帮你申请 SSL 证书。
Caddy 自动申请证书前,需要为 caddy 用户设置目录权限:
1
|
sudo chown -R caddy:caddy /var/lib/caddy
|
重启 Caddy 服务:
1
|
sudo systemctl reload caddy
|
配置 SSH 免密登录
出于安全考虑,我在 VPS 上新建一个 deploy 用户,只能访问网站目录,用于 SSH 登录部署网站。
在 VPS 上创建 deploy 用户:
1
2
3
|
sudo adduser deploy
sudo mkdir -p /home/deploy/.ssh
sudo chmod 700 /home/deploy/.ssh
|
设置网站目录访问权限:
1
|
sudo chown -R deploy:deploy /var/www/sirenlingyu
|
在本地电脑上创建密钥对:
1
|
ssh-keygen -t ed25519 -C "yourmail@example.com"
|
一路回车,最后会生成2个文件,\~/.ssh/id\_ed25519 和 \~/.ssh/id\_ed25519.pub 。
复制公钥内容:
1
|
cat ~/.ssh/id_ed25519.pub
|
在 VPS 上执行:
1
2
3
|
echo "你的公钥内容" | sudo tee -a /home/deploy/.ssh/authorized_keys
sudo chmod 600 /home/deploy/.ssh/authorized_keys
sudo chown -R deploy:deploy /home/deploy/.ssh
|
测试登录:
将静态文件部署到服务器
在本地博客目录中构建静态页面:
执行部署命令:
1
|
rsync -avz --delete public/ deploy@VPS_IP:/var/www/sirenlingyu/
|
部署完成后,用浏览器访问 https://sirenlingyu.com 就能看到博客了!
一键部署脚本
为了以后更新方便,写了一个一键部署脚本 deploy.sh 放在博客目录中:
1
2
3
4
|
#!/bin/bash
hugo
rsync -avz --delete public/ deploy@VPS_IP:/var/www/sirenlingyu/
|
配置执行权限:
以后更新博客,只需要执行一遍就可以了: