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

如何编写GitLab Pipeline脚本实现EC2上Node.js项目自动部署?

GitLab CI/CD 自动部署 Node.js 后端到 AWS EC2

前置准备(EC2 端)

  1. 用 systemd 管理 Node.js 服务
    创建服务配置文件(替换成你的实际信息):

    # /etc/systemd/system/your-app.service
    [Unit]
    Description=Node.js Express Backend
    After=network.target
    
    [Service]
    User=ec2-user # 你的EC2登录用户,如ubuntu/ec2-user
    WorkingDirectory=/home/ec2-user/your-backend # 项目部署目录
    ExecStart=/usr/bin/node server.js # 项目入口文件
    Restart=always
    Environment=NODE_ENV=production
    # 如需添加环境变量,可继续添加 Environment=KEY=VALUE
    
    [Install]
    WantedBy=multi-user.target
    

    执行命令生效:

    sudo systemctl daemon-reload
    sudo systemctl enable your-app
    
  2. 预克隆项目并配置权限
    在EC2上克隆你的GitLab项目到指定目录:

    cd /home/ec2-user
    git clone git@gitlab.com:your-username/your-project.git your-backend
    

    确保部署密钥已配置正确,EC2能无密码拉取GitLab代码。

  3. 配置免密 sudo
    编辑sudoers文件,让EC2用户能免密重启服务:

    sudo visudo
    

    添加一行(替换用户名和服务名):

    ec2-user ALL=(ALL) NOPASSWD: /bin/systemctl restart your-app
    

GitLab CI/CD 配置文件(.gitlab-ci.yml)

直接在项目根目录创建该文件,内容如下:

stages:
  - deploy

deploy_to_ec2:
  stage: deploy
  only:
    - main # 仅推送main分支时触发
  script:
    # 连接EC2拉取最新代码
    - ssh -o StrictHostKeyChecking=no ec2-user@your-ec2-public-ip "cd /home/ec2-user/your-backend && git pull origin main"
    # 安装生产依赖(如有更新)
    - ssh ec2-user@your-ec2-public-ip "cd /home/ec2-user/your-backend && npm install --production"
    # 重启服务生效新代码
    - ssh ec2-user@your-ec2-public-ip "sudo systemctl restart your-app"
  tags:
    - ssh # 确保使用支持SSH的Runner,共享Runner需有此标签,自托管Runner可自定义

关键配置说明

  1. SSH 密钥管理
    在GitLab项目的「Settings → CI/CD → Variables」中添加SSH_PRIVATE_KEY变量,值为能SSH到EC2的私钥(注意是私钥内容,不是路径),勾选「Protect variable」和「Mask variable」保证安全。

  2. 安全组设置
    确保EC2安全组允许SSH(22端口)访问,若使用GitLab共享Runner,可临时开放0.0.0.0/0(不推荐),或限制GitLab官方Runner的IP段。

  3. 可选优化

    • 若项目需要构建步骤(如TypeScript编译),可添加build阶段,在Runner上完成构建后再同步到EC2。
    • 可添加健康检查脚本,在重启服务后验证服务是否正常启动。

内容的提问来源于stack exchange,提问作者Dejan Milić

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.15 08:35:23