You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

Git仓库代码部署至生产服务器的操作流程咨询

嘿,我懂你现在的状况——作为开发者参与过项目,但从没独立管过关联生产服务器的仓库,刚搭好自己的GitLab服务器,现在想找个便捷的法子把master分支部署到生产机对吧?下面给你一套从基础手动到自动化的流程,你可以根据项目规模和更新频率来选:

一、基础手动部署流程(适合初期小项目,操作简单)

如果你的项目更新不频繁,手动跑脚本就足够了,步骤如下:

  • 第一步:给生产服务器配置Git免密拉取权限
    这是为了避免每次部署都输密码,操作很简单:

    1. 登录生产服务器,生成SSH密钥:
      ssh-keygen -t ed25519 -C "prod-server@your-domain.com"
      
      一路按回车就行,不用设密码(设了反而麻烦,部署还要输)。
    2. 打开生成的公钥文件~/.ssh/id_ed25519.pub,复制里面的全部内容。
    3. 登录你的GitLab,进入目标项目的Settings → Deploy Keys,点击「Add deploy key」,把刚才复制的公钥粘贴进去,勾选「Allow write permissions」(如果不需要往生产机推代码,只拉取的话可以不勾,但勾了也没坏处),然后保存。
    4. 测试一下:在生产服务器上跑git clone git@your-gitlab-server:your-group/your-project.git,能顺利克隆下来就说明免密配置成功了。
  • 第二步:编写一键部署脚本
    每次手动敲一堆命令太麻烦,把部署步骤写成shell脚本:

    1. 在生产服务器的项目目录下创建deploy.sh文件,内容示例(根据你的项目类型修改):
      #!/bin/bash
      # 切换到项目目录
      cd /path/to/your/project
      # 确保在master分支并拉取最新代码
      git checkout master
      git pull origin master
      # 项目专属操作:比如安装依赖、重启服务
      # Node项目示例
      npm install --production
      pm2 restart your-app-name
      # PHP Laravel项目示例
      # composer install --no-dev
      # php artisan migrate --force
      # php artisan cache:clear
      
    2. 给脚本加执行权限:chmod +x deploy.sh。
    3. 以后部署只要登录生产服务器,跑./deploy.sh就行,一键完成。
二、自动化部署(适合频繁更新的项目,解放双手)

如果项目更新比较频繁,手动跑脚本还是累,那就用GitLab CI/CD实现代码推送到master就自动部署,步骤如下:

  • 第一步:配置GitLab Runner和生产服务器的SSH连通

    1. 先在GitLab上注册一个Runner(具体步骤可以在GitLab的Settings → CI/CD → Runners里看引导,选一个能访问到生产服务器的Runner,比如和生产机同网段的服务器,或者用GitLab共享Runner)。
    2. 生成一个专门用于部署的SSH密钥(和生产服务器的免密配置类似),把私钥存到GitLab项目的Settings → CI/CD → Variables里,变量名设为SSH_PRIVATE_KEY,类型选「File」或者「Variable」都可以。
    3. 用ssh-keyscan your-prod-server-ip命令获取生产服务器的SSH主机指纹,把结果也存到GitLab变量里,变量名设为KNOWN_HOSTS,这样Runner登录生产机时不会弹出确认提示。
  • 第二步:编写GitLab CI配置文件
    在项目根目录创建.gitlab-ci.yml文件,内容示例:

    stages:
      - deploy
    
    deploy_to_production:
      stage: deploy
      # 只有master分支有推送时才触发
      only:
        - master
      script:
        # 安装SSH客户端(如果Runner上没有的话)
        - 'which ssh-agent || (apt-get update -y && apt-get install openssh-client -y)'
        # 启动SSH代理
        - eval $(ssh-agent -s)
        # 加载部署用的私钥
        - echo "$SSH_PRIVATE_KEY" | tr -d '\r' | ssh-add -
        # 配置SSH主机指纹
        - mkdir -p ~/.ssh
        - chmod 700 ~/.ssh
        - echo "$KNOWN_HOSTS" >> ~/.ssh/known_hosts
        - chmod 644 ~/.ssh/known_hosts
        # 登录生产服务器执行部署命令
        - ssh your-prod-user@your-prod-ip "cd /path/to/project && git checkout master && git pull origin master && npm install --production && pm2 restart your-app-name"
      # 指定刚才注册的Runner标签
      tags:
        - your-runner-tag
    

    保存后推送到master分支,GitLab就会自动触发部署了,以后每次往master推代码,都会自动同步到生产服务器。

三、必看的注意事项
  • 生产服务器上绝对不要直接修改代码,所有变更都要通过GitLab的master分支推送,再部署,这样才能保证代码的一致性和可追溯性。
  • 如果项目需要构建(比如前端项目要打包成dist文件),建议在GitLab CI里完成构建,再把构建产物传到生产服务器,不要在生产机上构建,既浪费资源又不安全。
  • 给master分支开分支保护:在GitLab项目的Settings → Repository → Protected branches里设置master分支只能通过Merge Request合并,禁止直接推送,避免误操作把有问题的代码推到生产。
  • 部署前一定要在测试环境验证代码没问题,再合并到master部署到生产,别直接把未测试的代码推上去。

内容的提问来源于stack exchange,提问作者Dushan

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.05.20 12:25:08