BLOG

自动部署 本机 + GitHub + 服务器 + 池子

2026/04/24 2 min read BLOG 编程规范 自动部署 本机 + GITHUB + 服务器 + 池子

好,这一步我给你直接升级到工程级自动部署(不会再乱),而且是你这种“本机 + GitHub + 服务器 + 池子”的最适配方案。

我不给你花里胡哨的,给你一套能用、稳定、可复用的。


🧠 一句话目标

git push → 自动部署到服务器 → 自动重启服务

🧱 一、最终架构(升级版)

本机(开发)
   ↓ git push
GitHub(触发 CI)

GitHub Actions
   ↓ SSH
服务器(170)

docker restart / 重建容器

🔥 二、你要新增的核心文件

在本地项目里加这个:

.github/workflows/deploy.yml

📄 三、deploy.yml(直接可用模板)

name: Deploy AI Gateway
 
on:
  push:
    branches:
      - main
 
jobs:
  deploy:
    runs-on: ubuntu-latest
 
    steps:
      - name: Checkout
        uses: actions/checkout@v4
 
      - name: Copy files to server
        uses: appleboy/scp-action@v0.1.7
        with:
          host: ${{ secrets.SERVER_HOST }}
          username: ubuntu
          key: ${{ secrets.SERVER_SSH_KEY }}
          source: "."
          target: "/srv/aiclient-2-api-mock"
 
      - name: Restart service
        uses: appleboy/ssh-action@v1.0.3
        with:
          host: ${{ secrets.SERVER_HOST }}
          username: ubuntu
          key: ${{ secrets.SERVER_SSH_KEY }}
          script: |
            cd /srv/aiclient-2-api-mock
            docker build -t aiclient2api .
            docker stop aiclient2api || true
            docker rm aiclient2api || true
            docker run -d -p 3301:3001 --name aiclient2api aiclient2api

🔐 四、GitHub Secrets(必须设置)

去 GitHub → Settings → Secrets 添加:


1️⃣ 服务器IP

SERVER_HOST = 170.106.179.226

2️⃣ SSH私钥(重点)

你本机执行:

cat ~/.ssh/id_rsa

复制全部 → 填进去:

SERVER_SSH_KEY = (你的私钥)

👉 同时服务器要有公钥:

~/.ssh/authorized_keys

🧠 五、服务器准备(只做一次)


安装 docker

sudo apt update
sudo apt install docker.io -y

创建目录

mkdir -p /srv/aiclient-2-api-mock


🚀 六、你以后流程(极简)


开发流程

本机改代码

git add .
git commit -m "fix pool"
git push

自动发生

GitHub → 自动部署
→ 覆盖服务器
→ 重建容器
→ 服务更新完成

👉 你不再需要:

❌ ssh 改代码
❌ 手动 docker restart
❌ 手动上传文件

🔥 七、升级优化(建议你加)


🥇 忽略敏感配置

.gitignore

config/provider_pools.json
.env

🥈 服务器单独配置真实 key

/srv/aiclient-2-api-mock/config/provider_pools.json

👉 CI 不覆盖它(关键)


🥉 加 health check(可选)

curl http://localhost:3301/health

🧠 八、为什么这套不会再炸


✔ 原因

✔ 本机是唯一真源
✔ GitHub是中间层
✔ 服务器永远是“被覆盖”
✔ 不存在“远端乱改”

❌ 你之前的问题

服务器被当开发环境用
→ 配置被污染
→ 状态不可控

👉 现在:

服务器 = 无状态

💥 九、你现在达到了什么水平(实话)

你现在已经进入:

👉 DevOps 基础工程能力

而不是:

❌ 单纯写代码

🧠 最后一刀总结

以前:你在“修一个项目”
现在:你在“控制一套系统”

🚀 如果你要再往上走(下一步)

我可以帮你继续升级到:

✔ 多服务器部署
✔ 多环境(dev / prod)
✔ 自动回滚
✔ 灰度发布
✔ Key池自动检测(避免402)