我还没有能够让Apache使用我的Django应用程序,所以在我确实使用它之前,我在Linux服务器上使用runserver来演示应用程序。问题是每当我关闭与服务器的SSH连接时,runserver都会停止运行。当我说让笔记本电脑进入睡眠状态或丢失互联网连接时,如何让runserver继续运行?
P.S。我知道runserver不适合生产。
答案 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
再次登录到服务器后,使用
启动runservernohup python manage.py runserver 8080 &
runserver
次写入的所有输出(如调试信息等)将写入同一文件夹中名为nohup.out
的文件中。
要在使用nohup
后退出服务器,您需要保持显示的流程ID(pid),或者随后使用pid
,ps
或任何其他工具查找top
答案 1 :(得分:4)
由于runserver不打算在生产中运行/仅用于开发,因此没有办法内置。
即使产卵终端关闭,您也需要使用tmux
/ screen
或nohup
等工具来保持流程的有效性。
答案 2 :(得分:3)
$ nohup python manage.py runserver &
nohup
使命令忽略挂断信号,&
放入后台与stdout断开连接
答案 3 :(得分:1)
如果您通过SSH连接到服务器并在那里启动Django,请考虑使用服务器上的程序,例如tmux
。这将允许您的服务器端shell进程在断开连接后保持活动状态,并且您可以使用简单的
tmux attach
命令。