Nodejs 服务器问题
Nodejs 服务器问题
用SSH Secure Shell Client 连接到linux,npm start 运行nodejs,只要把ssh软件关了之后,nodejs的服务也就关了?怎么解决呢
当然可以。当您通过 SSH 连接到 Linux 服务器并运行 npm start
启动 Node.js 应用程序时,如果关闭 SSH 客户端,应用程序通常会随之停止运行。这是因为您的终端会话被终止,从而导致所有与该会话相关的进程也被终止。
为了解决这个问题,您可以使用一些工具来保持应用程序在后台持续运行,即使您断开了 SSH 连接。以下是几种常见的方法:
方法1: 使用 nohup
nohup
(no hang up)命令可以让进程忽略挂起信号,从而允许进程在用户退出系统后继续运行。
步骤:
- 在 SSH 终端中运行:
nohup npm start &
- 您的 Node.js 应用程序现在会在后台运行。可以通过查看
nohup.out
文件来获取应用程序的输出:tail -f nohup.out
方法2: 使用 pm2
pm2
是一个流行的生产级进程管理器,它不仅可以启动您的 Node.js 应用程序,还可以确保它们在遇到错误时自动重启,并提供日志管理和监控功能。
安装 pm2:
npm install pm2 -g
启动应用:
pm2 start npm --name "your-app-name" -- start
保存 pm2 配置以便在服务器重启后自动启动:
pm2 startup
pm2 save
方法3: 使用 screen
screen
是一种允许您创建多个虚拟终端会话的工具,这些会话可以在您断开连接后继续运行。
创建新的 screen 会话:
screen -S mysession
在 screen 会话中启动您的 Node.js 应用程序:
npm start
分离 screen 会话(按 Ctrl+A 然后按 D):
重新连接到 screen 会话:
screen -r mysession
以上就是几种解决 Node.js 应用程序在关闭 SSH 客户端后停止运行的方法。推荐使用 pm2
,因为它提供了更全面的功能来管理生产环境中的 Node.js 应用程序。
tmux 或者 nohup
也可以 forever
谢谢大家
pm2