温馨提示×

Debian如何启动Nodejs服务

小樊
53
2026-07-15 06:36:25
栏目: 编程语言

在 Debian 上启动 Node.js 服务,常见做法取决于你是临时运行长期运行,还是生产环境。下面按常见场景给你一个完整说明(从安装到生产级启动)。


一、安装 Node.js(如果还没装)

方式 1:使用 apt(简单,但版本可能较旧)

sudo apt update
sudo apt install nodejs npm
node -v
npm -v

方式 2:使用 NodeSource(推荐,版本新)

curl -fsSL https://deb.nodesource.com/setup_20.x | sudo -E bash -
sudo apt install -y nodejs

二、运行 Node.js 服务(基础方式)

假设你有一个 app.js

const http = require('http');

const server = http.createServer((req, res) => {
  res.end('Hello Debian');
});

server.listen(3000, () => {
  console.log('Server running on port 3000');
});

运行:

node app.js

⚠️ 这种方式:

  • 关闭终端就会停止
  • 不适合生产环境

三、生产环境推荐方式(systemd)

1️⃣ 准备 Node.js 项目

mkdir -p /var/www/node-app
cd /var/www/node-app
npm init -y

假设入口文件是 app.js


2️⃣ 创建 systemd 服务文件

sudo nano /etc/systemd/system/node-app.service

内容示例:

[Unit]
Description=Node.js App
After=network.target

[Service]
Type=simple
User=www-data
WorkingDirectory=/var/www/node-app
ExecStart=/usr/bin/node app.js
Restart=always
Environment=NODE_ENV=production

[Install]
WantedBy=multi-user.target

注意:

  • User 不要用 root(安全)
  • ExecStartwhich node 确认路径

3️⃣ 启动并设置开机自启

sudo systemctl daemon-reload
sudo systemctl start node-app
sudo systemctl enable node-app

查看状态:

sudo systemctl status node-app

查看日志:

journalctl -u node-app -f

四、使用 PM2(最常用,推荐)

1️⃣ 安装 PM2

sudo npm install -g pm2

2️⃣ 启动服务

pm2 start app.js --name my-app

3️⃣ 开机自启

pm2 startup
sudo env PATH=$PATH:/usr/bin pm2 startup systemd -u youruser --hp /home/youruser
pm2 save

常用命令:

pm2 list
pm2 logs my-app
pm2 restart my-app
pm2 stop my-app

✅ PM2 优点:

  • 自动重启
  • 日志管理
  • 崩溃恢复
  • 非常适合 Node.js

五、通过 Nginx 反向代理(常见生产架构)

server {
    listen 80;
    server_name example.com;

    location / {
        proxy_pass http://127.0.0.1:3000;
        proxy_http_version 1.1;
        proxy_set_header Upgrade $http_upgrade;
        proxy_set_header Connection 'upgrade';
        proxy_set_header Host $host;
    }
}

六、总结(推荐方案)

场景 推荐方式
本地测试 node app.js
生产环境 ✅ PM2
系统级服务 systemd
高并发 Node.js + Nginx

如果你愿意,可以告诉我:

  • Debian 版本(11 / 12)
  • Node 版本
  • 是前端服务、API 还是全栈项目

我可以给你更精确的配置示例

0