【问题标题】:Keep Django runserver alive when SSH is closed关闭 SSH 时保持 Django 运行服务器处于活动状态
【发布时间】:2015-11-07 18:53:40
【问题描述】:

我还不能让 Apache 与我的 Django 应用程序一起工作,所以在我让它工作之前,我会在我的 Linux 服务器上使用 runserver 来演示应用程序。问题是每当我关闭与服务器的 SSH 连接时,runserver 就会停止运行。当我说让我的笔记本电脑进入睡眠状态或失去互联网连接时,如何让 runserver 继续运行?

附:我知道 runserver 不适用于生产。

【问题讨论】:

    标签: python django ssh server


    【解决方案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) 或使用 pstop 或任何其他工具找到 pid

    【讨论】:

    • nohup python manage.py runserver 8080 & 为我工作:)
    【解决方案2】:

    如果您通过 SSH 连接到您的服务器并在那里启动 Django,请考虑使用服务器上的程序,例如 tmux。这将允许您的服务器端 shell 进程在断开连接后保持活动状态,并且您可以在下次登录时重新连接

    tmux attach
    

    命令。

    【讨论】:

      【解决方案3】:
      $ nohup python manage.py runserver &
      

      nohup 使命令忽略挂断信号,& 进入后台与标准输出断开连接

      【讨论】:

        【解决方案4】:

        由于 runserver 不打算在生产中运行/仅用于开发,因此无法内置。

        您需要使用tmux/screennohup 之类的工具来保持进程处于活动状态,即使生成终端关闭。

        【讨论】:

          猜你喜欢
          • 2020-04-12
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          • 2019-11-07
          • 2014-11-14
          • 1970-01-01
          相关资源
          最近更新 更多