在 Debian 上启动 Node.js 服务,常见做法取决于你是临时运行、长期运行,还是生产环境。下面按常见场景给你一个完整说明(从安装到生产级启动)。
sudo apt update
sudo apt install nodejs npm
node -v
npm -v
curl -fsSL https://deb.nodesource.com/setup_20.x | sudo -E bash -
sudo apt install -y nodejs
假设你有一个 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
⚠️ 这种方式:
mkdir -p /var/www/node-app
cd /var/www/node-app
npm init -y
假设入口文件是 app.js
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(安全)ExecStart 用 which node 确认路径sudo systemctl daemon-reload
sudo systemctl start node-app
sudo systemctl enable node-app
查看状态:
sudo systemctl status node-app
查看日志:
journalctl -u node-app -f
sudo npm install -g pm2
pm2 start app.js --name my-app
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 优点:
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 |
如果你愿意,可以告诉我:
我可以给你更精确的配置示例。