在Linux上后台运行Node.js应用有多种方法,以下是常见的几种方案,根据需求选择最适合的方式:
&
和 nohup
(临时运行)nohup node app.js > app.log 2>&1 &
&
:将进程放到后台运行。nohup
:忽略挂断信号(防止SSH断开时进程被终止)。> app.log
:将标准输出重定向到日志文件。2>&1
:将错误输出也重定向到同一日志文件。查看进程:
jobs -l # 查看后台任务
ps aux | grep node # 查看所有Node进程
终止进程:
kill -9 <PID> # 通过进程ID终止
screen
或 tmux
(会话管理)screen -S node_session # 创建新会话
node app.js # 在会话中运行程序
Ctrl+A, D # 分离会话(程序继续运行)
screen -r node_session
screen -ls
tmux new -s node_session
node app.js
Ctrl+B, D # 分离会话
tmux attach -t node_session
systemd
(生产环境推荐)创建服务文件(需root权限):
sudo nano /etc/systemd/system/nodeapp.service
配置文件示例:
[Unit]
Description=Node.js Application
After=network.target
[Service]
User=your_username
WorkingDirectory=/path/to/app
ExecStart=/usr/bin/node /path/to/app/app.js
Restart=always
StandardOutput=syslog
StandardError=syslog
Environment=NODE_ENV=production
[Install]
WantedBy=multi-user.target
操作命令:
sudo systemctl daemon-reload # 重载配置
sudo systemctl start nodeapp # 启动服务
sudo systemctl enable nodeapp # 开机自启
sudo systemctl status nodeapp # 查看状态
pm2
(Node.js专用进程管理器)安装pm2:
npm install pm2 -g
运行应用:
pm2 start app.js --name "myapp" # 启动并命名进程
pm2 save # 保存当前进程列表
pm2 startup # 生成开机自启脚本
常用命令:
pm2 list # 查看进程
pm2 logs myapp # 查看日志
pm2 restart myapp # 重启
pm2 delete myapp # 删除
forever
(较老的Node.js进程管理工具):
bash
npm install forever -g
forever start app.js
方法 | 适用场景 | 优点 | 缺点 |
---|---|---|---|
nohup |
临时测试 | 简单快速 | 无进程监控/自动重启 |
screen/tmux |
开发调试 | 可交互、随时查看日志 | 需手动管理 |
systemd |
生产环境 | 稳定、支持开机自启 | 配置稍复杂 |
pm2 |
生产环境(Node专用) | 日志管理、集群模式、监控 | 需额外安装 |
tmux
或 nohup
。pm2
(功能全面)或 systemd
(系统集成度高)。根据实际需求选择最适合的方案!