我想出了如何通过sudo python /home/david/myproject/manage.py runserver 68.164.125.221:80
运行我的Django应用程序。但是,在我退出终端后,服务器停止运行。
我尝试在后台运行此过程,但服务器在执行sudo python /home/david/myproject/manage.py runserver 68.164.125.221:80 &
后很快就会关闭。
即使我在终端中退出ssh会话后,如何让Django应用程序保持运行?
PS - 对不起,如果这个问题让你感到沮丧。当前端javascript程序员必须以惊人的速度变成服务器管理员时,就会出现这种愚蠢。
答案 0 :(得分:28)
见screen。
通过ssh连接,启动屏幕。这将在ssh提供的虚拟控制台模拟器之上打开。在那里启动你的服务器。
然后按Ctrl-a,然后按d。这将分离屏幕会话,使其在后台运行。
要[R] e-attach,请使用screen -r。
如果未安装屏幕而您无法安装它,您还可以通过添加&和/或在后台启动应用程序。你试过的那个命令。但是你不应该关闭终端窗口;只需断开连接,使用bash命令退出,或按Ctrl-d。
屏幕的优点是,您仍然可以从服务器读取输出,以防出现错误或任何错误。
Screen是一个非常强大的工具,有更多命令。您可以使用Ctrl-a添加新的虚拟窗口,然后使用c(对于Create);使用Ctrl-a切换窗口,然后是n(下一个)或p(上一个),...
但您需要安装才能使用它。由于您似乎具有root访问权限,因此这应该不是问题。
编辑:tmux是同一个用例的另一个很好的解决方案。
答案 1 :(得分:7)
使用screen
创建一个新的虚拟窗口,并在那里运行服务器。
$ screen
$ python manage.py runserver
您将看到Django服务器已开始运行。
现在按Ctrl+A
,然后按D
键从该屏幕分离。它会说:
$ [detached from ###.pts-0.hostname]
您现在可以安全地从终端注销,重新登录终端,在其他目录中执行其他编码,去度假,做任何你想做的事情。
要返回已分离的屏幕,
$ screen -r
要立即杀死django服务器,只需按下Ctrl+C
,就像您已正常完成一样。
要从此屏幕terminate
到当前屏幕而不是detaching
,请使用Ctrl+D
。它会说:
$ [screen is terminating]
$
答案 2 :(得分:6)
使用nohup。按如下方式更改命令:
nohup sudo python /home/david/myproject/manage.py runserver 68.164.125.221:80 &