Linux 环境下运行 Node.js 的指南
在 Linux 环境中运行 Node.js 应用,根据场景(开发、测试、生产)的不同,通常有以下几种主流方式。
基础运行方式 (适用于开发调试)
这是最直接的方式,直接在终端执行命令。
- 命令:
node app.js - 特点:
- 简单快速,适合本地开发和临时测试。
- 缺点: 一旦关闭当前的终端窗口或断开 SSH 连接,程序将会立即停止运行。
使用 nohup 实现后台运行 (适用于简单任务)
如果你需要程序在后台运行,且不想安装额外的工具,可以使用 nohup 命令。
- 命令:
nohup node app.js > output.log 2>&1 & - 参数详解:
nohup: 让程序忽略挂断信号(SIGHUP),即使退出登录程序也不会停止。> output.log: 将标准输出重定向到指定的日志文件。2>&1: 将错误输出也重定向到标准输出中,确保所有日志都记录在同一个文件。&: 将任务放入后台执行。
- 特点:
- 无需安装额外软件。
- 缺点: 缺乏进程监控、自动重启和负载均衡功能。
使用 PM2 进行进程管理 (生产环境首选)
PM2 是 Node.js 社区最流行的进程管理器,是生产环境的标准配置。
- 安装:
npm install pm2 -g - 核心操作:
- 启动应用:
pm2 start app.js --name "my-app" - 查看运行状态:
pm2 list - 停止应用:
pm2 stop my-app - 重启应用:
pm2 restart my-app - 查看实时日志:
pm2 logs - 查看资源占用
:
pm2 monit - 设置开机自启:
pm2 save配合pm2 startup
- 启动应用:
- 特点:
- 自动重启: 如果程序崩溃,PM2 会立即自动拉起进程。
- 集群模式: 通过
pm2 cluster模式可以轻松利用多核 CPU 提升性能。 - 日志管理: 内置完善的日志记录与管理功能。
使用 systemd 配置为系统服务 (高可用方案)
如果你希望 Node.js 应用像 Nginx 或 MySQL 一样作为 Linux 系统级服务运行,可以使用 systemd。
-
操作步骤:
-
创建服务配置文件:
sudo nano /etc/systemd/system/my-node-app.service -
写入以下配置模板:
[Unit] Description=My Node.js Application After=network.target [Service] Type=simple User=your-username WorkingDirectory=/var/www/my-app ExecStart=/usr/bin/node app.js Restart=always [Install] WantedBy=multi-user.target
-
重新加载配置:
sudo systemctl daemon-reload -
启动服务:
sudo systemctl start my-node-app -
设置开机自启:
sudo systemctl enable my-node-app
-
-
特点:
- 稳定性极高,深度集成于 Linux 系统。
- 管理规范,可以使用
systemctl进行统一的状态检查和管理。
总结与建议
- 开发阶段: 直接使用
node app.js。 - 临时后台运行: 使用
nohup。 - 常规生产环境: 强烈建议使用 PM2,它在易用性和功能性之间取得了完美的平衡。
- 核心基础设施/对稳定性要求极高的环境: 使用
systemd进行管理。
首发原创文章,作者:世雄 - 原生数据库架构专家,如若转载,请注明出处:https://idctop.com/article/491137.html



