关闭 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) 或使用 ps
、top
或任何其他工具找到 pid
。
【讨论】:
nohup python manage.py runserver 8080 &
为我工作:)【参考方案2】:
如果您通过 SSH 连接到您的服务器并在那里启动 Django,请考虑使用服务器上的程序,例如 tmux
。这将允许您的服务器端 shell 进程在断开连接后保持活动状态,并且您可以在下次登录时重新连接
tmux attach
命令。
【讨论】:
【参考方案3】:$ nohup python manage.py runserver &
nohup
使命令忽略挂断信号,&
进入后台与标准输出断开连接
【讨论】:
【参考方案4】:由于 runserver 不打算在生产中运行/仅用于开发,因此无法内置。
您需要使用tmux
/screen
或nohup
之类的工具来保持进程处于活动状态,即使生成终端关闭。
【讨论】:
以上是关于关闭 SSH 时保持 Django 运行服务器处于活动状态的主要内容,如果未能解决你的问题,请参考以下文章