【问题标题】:Django use 'python manage.py' runserver instead GunicornDjango 使用“python manage.py”运行服务器而不是 Gunicorn
【发布时间】:2019-02-16 17:59:25
【问题描述】:
我有一个托管在亚马逊 ec2 linux 实例上的 django 项目。
为了在部分关闭时运行我的应用程序,我使用 gunicorn 但我遇到了一些错误和性能下降。
当我运行命令时:
python manage.py runserver
从终端一切都很好,但是当部分关闭时,应用程序不起作用。
如何在关闭会话的情况下在后台运行命令“python manage.py runserver”以永久工作(直到我将其杀死)?
我知道有 uWSGI,但如果可能的话,我更喜欢直接使用 django 本机命令。
提前致谢
【问题讨论】:
-
不要这样做。 Django Docs 对 manage.py runsverver 非常具体:请勿在生产环境中使用此服务器
标签:
python
django
nginx
gunicorn
django-manage.py
【解决方案1】:
这里发生的情况是脚本在会话关闭时被SIGHUP 信号中断。为了克服这个问题,有一个名为nohup 的工具不会将SIGHUP 传递给它执行的程序/脚本。按如下方式使用:
nohup python manage.py runserver &
(注意最后的&,需要manage.py在后台而不是前台运行)。
默认情况下nohup 重定向文件nohup.out 中的输出,因此您可以使用tail -f nohup.out 来查看您的Django 应用程序的输出/日志。
但请注意,manage.py runserver不应在生产环境中使用。对于生产,您确实应该使用适当的 WSGI 服务器,例如 uWSGI 或 Gunicorn。
【解决方案2】:
如果您想在后台运行脚本,即使在关闭 SSH 和 mosh 之后也可以安装和使用 tmux强>连接
$ sudo apt-get install tmux
然后使用命令$ tmux 运行它,只需执行你的命令就会打开一个新的shell
$python manage.py runserver 0.0.0.0:8000
0.0.0.0:8000 此处将自动获取您允许的主机。现在您可以使用 CTRL + B 分离您的 tmux 会话以在后台运行它,然后按 D
现在您可以退出终端,但您的命令会继续在 tmux 中运行。只需从 here 学习使用 tmux 的基本命令
【解决方案3】:
为此,您可以使用 screen 只需启动一个新屏幕并运行
python manage.py runserver