【发布时间】:2015-11-07 18:53:40
【问题描述】:
我还不能让 Apache 与我的 Django 应用程序一起工作,所以在我让它工作之前,我会在我的 Linux 服务器上使用 runserver 来演示应用程序。问题是每当我关闭与服务器的 SSH 连接时,runserver 就会停止运行。当我说让我的笔记本电脑进入睡眠状态或失去互联网连接时,如何让 runserver 继续运行?
附:我知道 runserver 不适用于生产。
【问题讨论】:
我还不能让 Apache 与我的 Django 应用程序一起工作,所以在我让它工作之前,我会在我的 Linux 服务器上使用 runserver 来演示应用程序。问题是每当我关闭与服务器的 SSH 连接时,runserver 就会停止运行。当我说让我的笔记本电脑进入睡眠状态或失去互联网连接时,如何让 runserver 继续运行?
附:我知道 runserver 不适用于生产。
【问题讨论】:
您可以在 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 python manage.py runserver 8080 &
runserver 写入的所有输出(如调试信息等)都将写入同一文件夹中名为 nohup.out 的文件。
要在使用 nohup 后退出服务器,您需要保持显示的进程 ID (pid) 或使用 ps、top 或任何其他工具找到 pid。
【讨论】:
nohup python manage.py runserver 8080 & 为我工作:)
如果您通过 SSH 连接到您的服务器并在那里启动 Django,请考虑使用服务器上的程序,例如 tmux。这将允许您的服务器端 shell 进程在断开连接后保持活动状态,并且您可以在下次登录时重新连接
tmux attach
命令。
【讨论】:
$ nohup python manage.py runserver &
nohup 使命令忽略挂断信号,& 进入后台与标准输出断开连接
【讨论】:
由于 runserver 不打算在生产中运行/仅用于开发,因此无法内置。
您需要使用tmux/screen 或nohup 之类的工具来保持进程处于活动状态,即使生成终端关闭。
【讨论】: