我在amazon ec2 linux实例上托管了一个django项目。 为了在部分关闭时也运行我的应用程序,我使用了gunicorn,但是我遇到了一些错误和性能下降。 当我运行命令时:
python manage.py runserver
从终端运行都很好,但是当该部分关闭时,app无法正常工作。
在关闭会话的情况下,如何在后台永久运行命令“ python manage.py runserver”(直到我将其杀死)?
我知道有uWSGI,但我更喜欢直接使用django本机命令。
预先感谢
答案 0 :(得分:3)
这里发生的是,当您的会话关闭时,脚本被map1.html
信号中断。为了解决此问题,有一个名为SIGHUP
的工具不会将nohup
传递给它执行的程序/脚本。如下使用它:
SIGHUP
(最后请注意nohup python manage.py runserver &
,以便&
在后台而不是在前台运行)。
默认情况下,manage.py
重定向文件nohup
中的输出,因此您可以使用nohup.out
来查看Django应用的输出/日志。
不过,请注意,tail -f nohup.out
不应在生产中使用。对于生产,您确实应该使用适当的WSGI服务器,例如uWSGI或Gunicorn。
答案 1 :(得分:1)
如果即使关闭 SSH 和 mosh 后仍要在后台运行脚本,也可以安装并使用 tmux 。 strong>联系
$ sudo apt-get install tmux
然后使用命令$ tmux
运行它,只需执行命令即可打开一个新的外壳程序
$ python manage.py runserver 0.0.0.0:8000
0.0.0.0:8000 这里将自动获取您允许的主机。现在,您可以使用 CTRL + B 分离tmux会话以在后台运行它,然后按 D
现在您可以退出终端,但是您的命令继续在tmux中运行。只需从here
了解使用tmux的基本命令答案 2 :(得分:0)
为此,您可以使用屏幕,只需启动一个新屏幕并运行
python manage.py runserver