679 字
3 分钟
从零开始:使用 GitHub Actions 自动部署 Astro 博客到 Ubuntu 服务器
前言
今天终于搞定了博客的自动部署,之前每次修改完代码,都要手动 build,然后用 FTP/SCP 传到服务器,麻烦。
通过配置 GitHub Actions,现在我只需要把代码推送到 GitHub,它就会自动帮我构建并发布到 Ubuntu 服务器上。这里记录一下完整的配置过程,希望能帮到大家。
1. 准备工作
首先,你需要:
- 一个 Astro 博客项目(其他静态网站也同理)。
- 一台 Ubuntu 服务器(已经安装好 Nginx)。
- 一个 GitHub 仓库(建议设为 Private 私有)。
2. 配置 SSH 密钥
为了让 GitHub Actions 能登录我们的服务器,我们需要配置 SSH 密钥。
2.1 生成密钥对
在本地电脑终端执行:
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 文件中:
# 在服务器上执行mkdir -p ~/.sshchmod 700 ~/.sshnano ~/.ssh/authorized_keys# 粘贴 gh_action_key.pub 的内容,保存退出chmod 600 ~/.ssh/authorized_keys3. 配置 GitHub Secrets
为了安全起见,我们不能把私钥和服务器 IP 直接写在代码里,要用 GitHub 的 Secrets 功能。
- 进入 GitHub 仓库 -> Settings -> Secrets and variables -> Actions。
- 点击 New repository secret,添加以下三个变量:
| Name | Value | 说明 |
|---|---|---|
REMOTE_HOST | 1.2.3.4 | 你的服务器公网 IP |
REMOTE_USER | root 或 你的用户名 | 登录用户名 |
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. 见证奇迹
现在只需要提交代码:
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