SSH关闭时,让Django runserver保持活动状态

时间:2015-08-14 13:32:23

标签: python django ssh server

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

P.S。我知道runserver不适合生产。

4 个答案:

答案 0 :(得分:6)

使用屏幕

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

开始屏幕会话
screen

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

python manage.py runserver 8080

在此之后,您可以使用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

再次登录到服务器后,使用

启动runserver
nohup python manage.py runserver 8080 &

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

要在使用nohup后退出服务器,您需要保持显示的流程ID(pid),或者随后使用pidps或任何其他工具查找top

答案 1 :(得分:4)

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

即使产卵终端关闭,您也需要使用tmux / screennohup等工具来保持流程的有效性。

答案 2 :(得分:3)

$ nohup python manage.py runserver &

nohup使命令忽略挂断信号,&放入后台与stdout断开连接

答案 3 :(得分:1)

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

重新连接下次登录
tmux attach

命令。