679 字
3 分钟

从零开始:使用 GitHub Actions 自动部署 Astro 博客到 Ubuntu 服务器

2025-12-14
浏览量 加载中...

前言#

今天终于搞定了博客的自动部署,之前每次修改完代码,都要手动 build,然后用 FTP/SCP 传到服务器,麻烦。

通过配置 GitHub Actions,现在我只需要把代码推送到 GitHub,它就会自动帮我构建并发布到 Ubuntu 服务器上。这里记录一下完整的配置过程,希望能帮到大家。

1. 准备工作#

首先,你需要:

  • 一个 Astro 博客项目(其他静态网站也同理)。
  • 一台 Ubuntu 服务器(已经安装好 Nginx)。
  • 一个 GitHub 仓库(建议设为 Private 私有)。

2. 配置 SSH 密钥#

为了让 GitHub Actions 能登录我们的服务器,我们需要配置 SSH 密钥。

2.1 生成密钥对#

在本地电脑终端执行:

Terminal window
ssh-keygen -t rsa -b 4096 -C "github-actions" -f gh_action_key

一路回车即可。这会生成两个文件:

  • gh_action_key (私钥):给 GitHub 用。
  • gh_action_key.pub (公钥):放服务器上。

2.2 将公钥放到服务器#

登录你的服务器,把公钥内容追加到 authorized_keys 文件中:

Terminal window
# 在服务器上执行
mkdir -p ~/.ssh
chmod 700 ~/.ssh
nano ~/.ssh/authorized_keys
# 粘贴 gh_action_key.pub 的内容,保存退出
chmod 600 ~/.ssh/authorized_keys

3. 配置 GitHub Secrets#

为了安全起见,我们不能把私钥和服务器 IP 直接写在代码里,要用 GitHub 的 Secrets 功能。

  1. 进入 GitHub 仓库 -> Settings -> Secrets and variables -> Actions
  2. 点击 New repository secret,添加以下三个变量:
NameValue说明
REMOTE_HOST1.2.3.4你的服务器公网 IP
REMOTE_USERroot你的用户名登录用户名
SSH_PRIVATE_KEY-----BEGIN...gh_action_key 私钥文件的全部内容

4. 编写 Workflow 配置文件#

在项目根目录下创建 .github/workflows/deploy.yml 文件:

name: Deploy to Ubuntu Server
on:
push:
branches: [ master ] # 推送到 master 分支时触发
workflow_dispatch:
jobs:
build-and-deploy:
runs-on: ubuntu-latest
steps:
- name: Checkout
uses: actions/checkout@v4
- name: Install pnpm
uses: pnpm/action-setup@v3
with:
version: 9
- name: Use Node.js
uses: actions/setup-node@v4
with:
node-version: '20'
cache: 'pnpm'
- name: Install dependencies
run: pnpm install
- name: Build
run: pnpm build
- name: Deploy to Server
uses: easingthemes/ssh-deploy@v5.0.0
with:
SSH_PRIVATE_KEY: ${{ secrets.SSH_PRIVATE_KEY }}
ARGS: "-rlgoDzvc -i"
SOURCE: "dist/"
REMOTE_HOST: ${{ secrets.REMOTE_HOST }}
REMOTE_USER: ${{ secrets.REMOTE_USER }}
TARGET: "/home/sadami3066/blog/myBlog/dist/" # 服务器上的目标目录
EXCLUDE: "/dist/, /node_modules/"

注意:请根据你的实际情况修改 TARGET 目录。

5. 配置 Nginx#

确保服务器上的 Nginx 配置指向了正确的目录。

server {
listen 80;
server_name your-domain.com;
# 这里要和 deploy.yml 中的 TARGET 保持一致
root /home/sadami3066/blog/myBlog/dist;
index index.html;
location / {
try_files $uri $uri/ /index.html;
}
}

修改完记得重启 Nginx:sudo systemctl reload nginx

6. 见证奇迹#

现在只需要提交代码:

Terminal window
git add .
git commit -m "配置自动部署"
git push origin master

去 GitHub 仓库的 Actions 页面,会看到一个黄色的圆圈在转。等它变成绿色 ,打开你的网站,更新就已经自动完成


这就是我配置自动部署的全过程,希望能帮到你!

赞助支持

如果这篇文章对你有帮助,欢迎赞助支持!

赞助
从零开始:使用 GitHub Actions 自动部署 Astro 博客到 Ubuntu 服务器
https://whywood.cn/posts/github-actions-deploy-guide/
作者
𣐩
发布于
2025-12-14
许可协议
CC BY-NC-SA 4.0
最后更新于 2025-12-14

评论区

目录