关闭 SSH 时保持 Django 运行服务器处于活动状态

Posted

技术标签:

【中文标题】关闭 SSH 时保持 Django 运行服务器处于活动状态【英文标题】:Keep Django runserver alive when SSH is closed 【发布时间】:2015-11-07 18:53:40 【问题描述】:

我还不能让 Apache 与我的 Django 应用程序一起工作,所以在我让它工作之前,我会在我的 Linux 服务器上使用 runserver 来演示应用程序。问题是每当我关闭与服务器的 SSH 连接时,runserver 就会停止运行。当我说让我的笔记本电脑进入睡眠状态或失去互联网连接时,如何让 runserver 继续运行?

附:我知道 runserver 不适用于生产。

【问题讨论】:

【参考方案1】:

使用屏幕

您可以在 screen 会话中运行 runserver。从该会话中分离后,它将继续运行。通过 ssh 登录并通过

启动屏幕会话
screen

它将看起来像您常用的终端。现在,运行服务器

python manage.py runserver 8080

之后,您可以使用Ctrl+a Ctrl+d 与会话分离。现在,即使您退出 ssh 会话,您的应用也应该可用。

如果您想取消runserver,您可以重新附加到您的屏幕会话。获取现有会话列表

screen -ls

There is a screen on:
    10989.pts-1.hostname (Detached)
1 Socket in /run/screens/S-username.

然后,您可以使用命令重新连接

screen -R 10989

使用 nohup

再次,登录到您的服务器后,启动运行服务器

nohup python manage.py runserver 8080 &

runserver 写入的所有输出(如调试信息等)都将写入同一文件夹中名为 nohup.out 的文件。

要在使用 nohup 后退出服务器,您需要保持显示的进程 ID (pid) 或使用 pstop 或任何其他工具找到 pid

【讨论】:

nohup python manage.py runserver 8080 & 为我工作:)【参考方案2】:

如果您通过 SSH 连接到您的服务器并在那里启动 Django,请考虑使用服务器上的程序,例如 tmux。这将允许您的服务器端 shell 进程在断开连接后保持活动状态,并且您可以在下次登录时重新连接

tmux attach

命令。

【讨论】:

【参考方案3】:
$ nohup python manage.py runserver &

nohup 使命令忽略挂断信号,& 进入后台与标准输出断开连接

【讨论】:

【参考方案4】:

由于 runserver 不打算在生产中运行/仅用于开发,因此无法内置。

您需要使用tmux/screennohup 之类的工具来保持进程处于活动状态,即使生成终端关闭。

【讨论】:

以上是关于关闭 SSH 时保持 Django 运行服务器处于活动状态的主要内容,如果未能解决你的问题,请参考以下文章

Windows ssh - 如何在断开连接后保持进程运行

保持SSH会话活动[关闭]

游戏处于运行模式时如何保持灯亮? [复制]

如何在关闭ssh连接的情况下,让程序继续运行?

如何使用 django 保持 tensorflow 会话在内存中运行

vagrant ssh -c 并在连接关闭后保持后台进程运行