24

我想出了如何通过sudo python /home/david/myproject/manage.py runserver 68.164.125.221:80. 但是,在我退出终端后,服务器停止运行。

我试图在后台运行这个进程,但是服务器在我执行后很快就关闭了sudo python /home/david/myproject/manage.py runserver 68.164.125.221:80 &

即使在终端中退出 ssh 会话后,如何保持 Django 应用程序运行?

PS - 对不起,如果这个问题让你觉得很初级。当前端 javascript 程序员必须以极快的速度转变为服务器管理员时,就会出现这种愚蠢的情况。

4

3 回答 3

32

满足屏幕

通过ssh连接,启动画面。这会在 ssh 提供的模拟器之上打开一个虚拟控制台模拟器。在那里启动你的服务器。

然后按 Ctrl-a,然后按 d。这将分离屏幕会话,使其在后台运行。

要 [R] 附加到它,请使用 screen -r。

如果未安装 screen 并且您无法安装它,您也可以通过在命令中添加 & 来在后台启动应用程序,就像您尝试的那样。但是你不应该关闭终端窗口;只需断开连接,使用 bash 命令退出或 Ctrl-d。

screen 的优点是您仍然可以从服务器读取输出,以防出现错误或任何情况。

Screen 是一个非常强大的工具,具有更多的命令。您可以使用 Ctrl-a 添加一个新的虚拟窗口,然后使用 c (for Create) ;使用 Ctrl-a 切换窗口,然后使用 n(下一个)或 p(上一个),...

但是您需要安装它才能使用它。由于您似乎具有 root 访问权限,因此这应该不是问题。

编辑:tmux是同一用例的另一个很好的解决方案。

于 2012-05-18T16:19:24.523 回答
15

用于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]
$
于 2016-02-24T11:52:11.007 回答
7

使用 nohup。更改您的命令如下:

nohup sudo python /home/david/myproject/manage.py runserver 68.164.125.221:80 &
于 2016-11-04T10:43:06.110 回答