温馨提示×

Node.js 怎样在 Debian 上实现自动化部署

小樊
34
2025-12-19 03:06:35
栏目: 编程语言

在 Debian 上实现 Node.js 应用的自动化部署可以通过多种方式来完成,以下是一个基本的步骤指南,使用 Git 作为代码仓库,PM2 作为进程管理器,以及一个简单的 shell 脚本来实现自动化部署。

前提条件

  1. Node.js 和 npm/yarn:确保你的 Debian 系统上已经安装了 Node.js 和 npm 或 yarn。

    sudo apt update
    sudo apt install nodejs npm
    
  2. Git:用于代码版本控制。

    sudo apt install git
    
  3. PM2:用于进程管理和应用监控。

    sudo npm install pm2 -g
    

步骤指南

1. 设置代码仓库

在你的服务器上创建一个目录来存放你的 Node.js 应用代码,并初始化一个 Git 仓库。

mkdir my-node-app
cd my-node-app
git init

2. 配置远程仓库

在你的服务器上添加一个远程 Git 仓库地址。

git remote add origin <你的远程仓库地址>

3. 创建部署脚本

创建一个 shell 脚本来自动化部署过程。假设你的应用入口文件是 app.js

#!/bin/bash

# 进入应用目录
cd /path/to/my-node-app

# 拉取最新代码
git pull origin master

# 安装依赖
npm install

# 重启 PM2 应用
pm2 restart my-node-app

保存这个脚本为 deploy.sh,并赋予执行权限。

chmod +x deploy.sh

4. 配置 PM2

在你的应用目录下创建一个 ecosystem.config.js 文件来配置 PM2。

module.exports = {
  apps: [{
    name: 'my-node-app',
    script: 'app.js',
    instances: 'max',
    autorestart: true,
    watch: false,
    max_memory_restart: '1G',
    env: {
      NODE_ENV: 'production'
    },
    env_production: {
      NODE_ENV: 'production'
    }
  }]
};

5. 设置 Webhook

在你的 Git 仓库(如 GitHub 或 GitLab)上设置一个 Webhook,指向你的服务器上的一个 URL,这个 URL 将触发部署脚本。例如,你可以使用 ngrok 来暴露你的本地服务器到一个公共 URL。

ngrok http 3000

将 ngrok 提供的 URL 配置到你的 Git 仓库的 Webhook 设置中。

6. 自动化部署

当代码推送到远程仓库时,Webhook 会触发一个 HTTP 请求到你的服务器上的一个端点(例如 /deploy)。你可以使用 Express 来创建一个简单的服务器来处理这个请求。

sudo apt install express-generator
cd /path/to/my-node-app
npm install express

创建一个 deploy.js 文件:

const express = require('express');
const { exec } = require('child_process');
const app = express();
const port = 3000;

app.post('/deploy', (req, res) => {
  exec('./deploy.sh', (error, stdout, stderr) => {
    if (error) {
      console.error(`Error: ${error.message}`);
      return res.status(500).send('Deployment failed');
    }
    console.log(stdout);
    res.send('Deployment successful');
  });
});

app.listen(port, () => {
  console.log(`Server running at http://localhost:${port}`);
});

启动服务器:

node deploy.js

现在,当你的代码推送到远程仓库时,Webhook 会触发一个请求到 http://your-ngrok-url/deploy,从而自动执行部署脚本。

总结

通过上述步骤,你可以在 Debian 上实现 Node.js 应用的自动化部署。这个过程包括设置代码仓库、配置远程仓库、创建部署脚本、配置 PM2、设置 Webhook 以及创建一个简单的 Express 服务器来处理部署请求。你可以根据实际需求进一步扩展和优化这个流程。

0