当前位置: 首页 > news >正文

基于GitHub Actions+SSH+PM2的Node.js自动化部署全流程指南

基于GitHub Actions+SSH+PM2的Node.js自动化部署全流程指南

一、前期环境准备

1. 基础设施准备

  • 云服务器:推荐Ubuntu 20.04+(开放22端口)
  • GitHub仓库:存放Node.js项目代码(需包含package.json)
  • 本地开发环境:Node.js 16+环境

2. 安装必要组件

# 在服务器执行
curl -sL https://deb.nodesource.com/setup_16.x | sudo -E bash -
sudo apt install -y nodejs
sudo npm install pm2 -g

二、GitHub配置关键步骤

1. 配置仓库Secrets

在仓库Settings → Secrets → Actions中添加:

  • SERVER_IP: 服务器公网IP
  • SSH_PRIVATE_KEY: 服务器的SSH私钥(通过cat ~/.ssh/id_rsa获取)
  • DEPLOY_PATH: 项目部署路径(如/var/www/express-app

2. 生成SSH密钥对(如未生成)

ssh-keygen -t rsa -b 4096 -C "github_actions"
cat ~/.ssh/id_rsa.pub >> ~/.ssh/authorized_keys

三、创建GitHub Actions工作流

在项目.github/workflows/deploy.yml中配置

name: Node.js CI/CD Pipelineon:push:branches: [ main ]jobs:deploy:runs-on: ubuntu-lateststeps:- name: Checkout codeuses: actions/checkout@v3- name: Install dependenciesuses: actions/setup-node@v3with:node-version: 16- name: SSH Deployuses: appleboy/ssh-action@v0.1.10with:host: ${{ secrets.SERVER_IP }}username: rootkey: ${{ secrets.SSH_PRIVATE_KEY }}script: |cd ${{ secrets.DEPLOY_PATH }}git pull origin mainnpm install --productionpm2 reload ecosystem.config.js --env productionpm2 save

四、PM2配置与监控

1. 创建ecosystem配置文件

// ecosystem.config.js
module.exports = {apps: [{name: "express-app",script: "app.js",instances: "max",autorestart: true,watch: false,env: {NODE_ENV: "production",PORT: 3000}}]
}

2. 常用PM2监控命令

pm2 monit        # 实时监控面板
pm2 logs         # 查看实时日志
pm2 list         # 查看进程状态
pm2 save         # 保存当前进程列表

五、典型问题排查

1. 部署失败:权限不足

# 服务器执行
chmod 600 ~/.ssh/authorized_keys
chmod 700 ~/.ssh

2. PM2进程未启动

检查服务器防火墙设置:

sudo ufw allow 3000/tcp  # 开放应用端口
sudo ufw allow 22/tcp    # 确保SSH端口开放

3. GitHub Action报错"Host key verification failed"

在SSH步骤前添加:

 1. name: Add known hostsrun: |mkdir -p ~/.sshssh-keyscan ${{ secrets.SERVER_IP }} >> ~/.ssh/known_hosts

六、进阶优化方向

  1. 多环境部署:通过Git分支管理dev/stage/prod环境
  2. Webhook通知:集成Slack/Discord发送部署结果通知
  3. 回滚机制:结合PM2的日志快照功能实现快速回滚
  4. 健康检查:在workflow中添加curl健康检查步骤

相关文章:

  • 华为云Flexus+DeepSeek征文 | 体验简单高效的模型推理开通之旅
  • 如何做好一份技术文档
  • Python入门手册:循环
  • 【人工智能-agent】--使用python调用dify工作流
  • AI学习笔记二十八:使用ESP32 CAM和YOLOV5实现目标检测
  • 【Java工程师面试全攻略】Day2:Java集合框架面试全解析
  • 机试 | STL | string | 文字处理软件
  • LVGL显示其他大小的中文
  • word的页眉页脚设置
  • RNN 在时序数据处理中的核心作用
  • 多语言视角下的 DOM 操作:从 JavaScript 到 Python、Java 与 C#
  • 11.10 LangGraph状态管理实战:Reducers模式如何重塑企业级多节点协作?
  • Element UI 对话框固定宽度 + 遮罩层深度定制方案
  • Speech Synthesis/Text to Speech(TTS)
  • Vue2实现Office文档(docx、xlsx、pdf)在线预览
  • TCP 三次握手过程详解
  • JVM GC 分类与原理深度解析
  • 能说一下JVM的内存区域吗
  • Docker系列(四):容器操作全栈指南 —— 从入门到生产级管控
  • MongoDB 快速整合 SpringBoot 示例
  • 图片版小说网站源码/网页制作教程
  • 火车头web在线发布到网站/企业公司网站建设
  • 网站里的搜索怎么做/企拓客软件怎么样
  • wordpress邮件服务/seo关键词seo排名公司
  • 岳阳做公司网站/百度的首页
  • html做网站首页/视频外链平台