公司博客 // 2026-06-28 · BY IDCBOT

Git自动化部署网站教程:告别手动上传,推送代码即上线(CI/CD入门)

还在用FTP手动拖文件上传部署网站?改一行代码就要重复一遍上传流程,又慢又容易出错。自动化部署让你推送代码到Git,网站自动更新上线——这就是CI/CD的入门。本文用两种方案带你实现,从此告别手动部署。

一、为什么要自动化部署?

手动部署的痛点:慢、易漏文件、易出错、无版本记录、多人协作混乱。自动化部署的好处:一次配置长期受益、部署可追溯、可一键回滚、多人协作规范。哪怕是个人项目,配好后每次更新只需 git push,几秒上线。

二、方案A:Git Hooks(适合自己的服务器,轻量)

核心思路:在服务器上建一个裸仓库,配置post-receive钩子,每次收到推送就自动把代码检出到网站目录。

服务器端设置:

# 建裸仓库
git init --bare /var/repo/mysite.git
# 编辑钩子
nano /var/repo/mysite.git/hooks/post-receive

钩子内容:

#!/bin/bash
git --work-tree=/www/wwwroot/mysite --git-dir=/var/repo/mysite.git checkout -f
# 可加后续操作:重启服务、清缓存等
echo "部署完成"

chmod +x 赋予执行权限。本地端添加这个远程仓库:

git remote add deploy root@服务器IP:/var/repo/mysite.git
git push deploy main    # 推送即部署!

三、方案B:GitHub Actions(适合团队,功能强)

代码托管在GitHub时,用Actions实现更强大的流程:推送后自动运行测试、构建、然后部署到服务器。在仓库建 .github/workflows/deploy.yml:

name: Deploy
on:
  push:
    branches: [ main ]
jobs:
  deploy:
    runs-on: ubuntu-latest
    steps:
      - uses: actions/checkout@v4
      - name: Deploy to server via SSH
        uses: appleboy/ssh-action@master
        with:
          host: ${{ secrets.HOST }}
          username: ${{ secrets.USERNAME }}
          key: ${{ secrets.SSH_KEY }}
          script: |
            cd /www/wwwroot/mysite
            git pull origin main
            # 构建、重启服务等命令

把服务器IP、用户名、SSH私钥存入仓库的Secrets(加密保存),之后每次推送到main分支就自动部署。前端项目还能在Actions里跑 npm build 再上传产物。

四、部署服务器的要求

自动化部署对服务器要求不高,但需要:稳定的SSH访问、Git环境、拉取代码的网络(香港VPS访问GitHub直连快,这是海外节点的优势,¥30/月起、24小时免费试用)。用密钥登录并做好SSH安全加固(参考博客教程)。

五、进阶:回滚与零停机

  • 回滚:Git的好处就是历史可追溯,部署出问题 git reset --hard 上个版本 即可秒回滚;
  • 零停机:进阶做法是部署到新目录再切换软链接(符号链接指向),避免部署过程中的访问中断;
  • 部署前测试:重要项目让CI先跑自动化测试,测试通过才部署,拦住带bug的代码。

结论

自动化部署是从”业余”到”专业”的关键一步:个人项目用Git Hooks轻量搞定,团队协作用GitHub Actions功能全面。配置一次,之后每次 git push 就是一次干净、可追溯、可回滚的部署。在免费试用的VPS上把Git Hooks方案跑通,你会回不去手动上传的日子。

// LEAVE A COMMENT

Your email address will not be published. Required fields are marked *