You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何在关闭SSH连接后保持EC2 Ubuntu上的Next.js项目持续运行?

这是个非常典型的问题——当你通过SSH启动的进程,默认会绑定当前终端会话,一旦关闭PuTTY(终止SSH连接),系统会给这个进程发送SIGHUP信号,导致进程终止。下面给你几个实用的解决方案,按生产环境适配度排序:

方法1:使用PM2(生产环境首选)

PM2是专门为Node.js应用设计的进程管理器,不仅能让进程在后台持续运行,还支持自动重启(比如服务器重启后)、日志管理、性能监控等功能,我平时部署Next.js项目全靠它。

步骤如下:

  1. 全局安装PM2:
    sudo npm install pm2 -g
    
  2. 进入你的Next.js项目根目录,用PM2启动应用:
    pm2 start npm --name "your-next-app" -- start
    
    这里"your-next-app"是你给项目起的别名,方便后续管理。
  3. 设置PM2开机自启(避免服务器重启后应用停止):
    pm2 startup ubuntu -u $USER
    pm2 save
    
  4. 常用管理命令:
    • 查看应用状态:pm2 status
    • 查看实时日志:pm2 logs your-next-app
    • 重启应用:pm2 restart your-next-app
    • 停止应用:pm2 stop your-next-app
方法2:使用nohup(临时测试场景)

如果只是临时让应用后台跑一阵,不想装额外工具,nohup是最快的方式。

步骤:

  1. 在项目根目录执行:
    nohup npm start &
    
    • nohup会让进程忽略SIGHUP信号,&让进程后台运行
  2. 应用的输出日志会默认存放在当前目录的nohup.out文件里,查看日志:
    tail -f nohup.out
    
  3. 要停止进程的话,先找到进程PID:
    ps aux | grep npm
    
    然后用kill <PID>终止进程(替换<PID>为实际进程号)
方法3:使用Screen/Tmux(会话管理,适合调试)

如果你需要随时回到终端查看应用输出(比如调试阶段),可以用会话管理工具,把进程放在独立的会话里,关闭SSH后会话依然存在。

用Screen的例子:

  1. 安装Screen:
    sudo apt update && sudo apt install screen -y
    
  2. 启动一个新会话:
    screen -S next-session
    
  3. 在会话里启动项目:
    npm start
    
  4. 按下Ctrl+A再按D,detach(脱离)当前会话,此时关闭PuTTY也不会影响进程
  5. 下次SSH连接后,重新进入会话:
    screen -r next-session
    
    如果忘记会话名,可以用screen -ls查看所有会话

用Tmux的话(更现代的替代工具):

步骤类似,安装命令是sudo apt install tmux -y,启动会话tmux new -s next-session,detach是Ctrl+B再按D,重新连接是tmux attach -t next-session。


内容的提问来源于stack exchange,提问作者farhan saifi

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.04.28 12:57:37