1935 字
7 分钟阅读
VPS部署Hugo静态网站教程

一、VPS准备

Hugo 网站目录定为:

/var/www/html/blog

创建:

mkdir -p /var/www/html/blog

权限:

chown -R www-data:www-data /var/www/html/blog

二、确认 Nginx 配置

配置:

nano /etc/nginx/sites-available/hugoblog

内容:

server {

    listen 80;

    server_name 域名;

    root /var/www/html/blog;

    index index.html;

    location / {

        try_files $uri $uri/ /index.html;

    }

    # 静态资源缓存
    location ~* \.(js|css|png|jpg|jpeg|gif|ico|svg|webp|woff|woff2|ttf)$ {
        expires 1y;
        add_header Cache-Control "public, immutable";
    }

}

启用:

ln -s /etc/nginx/sites-available/hugoblog \
/etc/nginx/sites-enabled/hugoblog

测试:

nginx -t
systemctl reload nginx

三、VPS创建部署账号

不要让 GitHub Actions 使用 root

创建:

adduser deploy

给目录权限:

chown -R deploy:deploy /var/www/html/blog

四、配置 SSH 密钥

本地电脑生成:

ssh-keygen -t ed25519

看到以下直接回车:

Generating public/private ed25519 key pair.
Enter file in which to save the key(C:\Users\你的用户名\.ssh\id_ed25519):

然后:

Enter passphrase:

设置一个密码。

生成两个文件:

C:\Users\你的用户名\.ssh\id_ed25519
C:\Users\你的用户名\.ssh\id_ed25519.pub

其中:

id_ed25519 = 私钥(不要给别人)
id_ed25519.pub = 公钥(上传服务器)

复制好公钥回到VPS:

su - deploy

mkdir ~/.ssh

nano ~/.ssh/authorized_keys

粘贴公钥。

权限:

chmod 700 ~/.ssh

chmod 600 ~/.ssh/authorized_keys

测试:

ssh deploy@你的VPS_IP

如果成功不会要求VPS密码而是要求本地私钥密码。


五、GitHub添加 Secrets

进入:

GitHub仓库
 → Settings
 → Secrets and variables
 → Actions
 → New repository secret

添加:
VPS_HOST

内容:

你的VPS公网IP

VPS_USER

内容:

deploy

VPS_SSH_KEY

内容:

私钥:

cat ~/.ssh/id_ed25519

六、本地创建 VPS Actions

创建:

.github/workflows/deploy-vps.yaml

内容:

name: Deploy Hugo to VPS

# 当代码推送到 main 分支时触发
on:
  push:
    branches:
      - main

jobs:
  deploy:
    runs-on: ubuntu-latest
    steps:
    - name: Checkout 源码
      uses: actions/checkout@v4
      with:
        fetch-depth: 0

    - name: 安装 Hugo
      uses: peaceiris/actions-hugo@v3
      with:
        hugo-version: latest
        extended: true

    - name: 构建网站
      run: hugo -D

    - name: Deploy public to VPS
      uses: burnett01/rsync-deployments@7.0.0
      with:
         switches: -avzr --delete
         path: public/
         remote_path: /var/www/html/blog/
         remote_host: ${{ secrets.VPS_HOST }}
         remote_user: ${{ secrets.VPS_USER }}
         remote_key: ${{ secrets.VPS_SSH_KEY }}

七、提交测试

本地:

git add .github/workflows/deploy-vps.yaml

git commit -m "add vps deployment"

git push

GitHub Actions:

✓ Deploy Hugo to VPS

做完以上,就可以实现本地写文章,push到GitHub仓库后,GitHub Actions自动部署到VPS啦~

发表评论

您的邮箱地址不会被公开。 必填项已用 * 标注