Nodejs 服务器问题

Nodejs 服务器问题

用SSH Secure Shell Client 连接到linux,npm start 运行nodejs,只要把ssh软件关了之后,nodejs的服务也就关了?怎么解决呢

7 回复

当然可以。当您通过 SSH 连接到 Linux 服务器并运行 npm start 启动 Node.js 应用程序时,如果关闭 SSH 客户端,应用程序通常会随之停止运行。这是因为您的终端会话被终止,从而导致所有与该会话相关的进程也被终止。

为了解决这个问题,您可以使用一些工具来保持应用程序在后台持续运行,即使您断开了 SSH 连接。以下是几种常见的方法:

方法1: 使用 nohup

nohup(no hang up)命令可以让进程忽略挂起信号,从而允许进程在用户退出系统后继续运行。

步骤:

  1. 在 SSH 终端中运行:
    nohup npm start &
    
  2. 您的 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

谢谢大家

当你使用 npm start 运行 Node.js 应用程序时,如果你关闭 SSH 会话,Node.js 进程通常也会被终止。这是因为当 SSH 会话结束时,与该会话关联的所有进程都会被终止。

要解决这个问题,你可以使用一些工具来保持你的 Node.js 应用程序在后台运行,并且即使你断开 SSH 会话连接,它仍然可以继续运行。常用的工具有 nohupscreentmux

使用 nohup

nohup 是一个命令,允许你运行进程忽略挂起信号(SIGHUP),这样即使终端会话关闭,进程也能继续运行。

步骤:

  1. 打开 SSH 会话并进入项目目录。
  2. 使用 nohup 命令启动你的应用程序:
nohup npm start &

这将会启动你的 Node.js 应用程序,并将输出重定向到名为 nohup.out 的文件中。

使用 screen

screen 是一个全屏窗口管理器,允许你在单个物理连接上创建多个虚拟窗口。它也可以让你脱离当前会话而不会终止进程。

步骤:

  1. 安装 screen(如果尚未安装):
sudo apt-get install screen
  1. 创建一个新的 screen 会话:
screen -S mysession
  1. screen 会话内部,运行你的 Node.js 应用程序:
npm start
  1. 按下 Ctrl+A 然后按 D 键,以分离当前 screen 会话。你可以稍后通过以下命令重新连接:
screen -r mysession

使用 tmux

tmux 是另一个类似的工具,用于创建会话和窗口。它提供了一些比 screen 更强大的功能。

步骤:

  1. 安装 tmux(如果尚未安装):
sudo apt-get install tmux
  1. 创建一个新的 tmux 会话:
tmux new -s mysession
  1. tmux 会话内部,运行你的 Node.js 应用程序:
npm start
  1. 按下 Ctrl+B 然后按 D 键,以分离当前 tmux 会话。你可以稍后通过以下命令重新连接:
tmux attach -t mysession

以上就是几种解决 Node.js 应用程序在关闭 SSH 会话后终止的方法。

回到顶部