Django WSGI and Gunicorn

3

这可能是一个非常愚蠢的问题;我试图使用Gunicorn部署Django应用程序。但是,我只创建了一个名为wsgi.py的文件,它看起来像下面这样(wsgi.py在我的根项目文件夹中):

import os

os.environ.setdefault("DJANGO_SETTINGS_MODULE", "myproject.settings")

# This application object is used by any WSGI server configured to use this
# file. This includes Django's development server, if the WSGI_APPLICATION
# setting points here.
from django.core.wsgi import get_wsgi_application
application = get_wsgi_application()

# Apply WSGI middleware here.
# from helloworld.wsgi import HelloWorldApplication
# application = HelloWorldApplication(application)

现在我运行了:

python manage.py run_gunicorn

Gunicorn会自动选择使用这个wsgi.py文件吗?它是怎么工作的(不确定wsgi是在干什么)。还是我需要指定一些内容?

2个回答

2
如果您在Django设置模块的INSTALLED_APPS中列出了gunicorn,则命令为:
python manage.py run_gunicorn

不是您输入的命令。


谢谢指出。那只是打字错误。不过,我的问题是gunicorn如何选择wsgy.py..? - CIF
它不会。当您将'gunicorn'添加到INSTALLED_APPS中时,它会添加run_gunicorn管理命令,您运行它,据我所知,它完全忽略wsgi.py文件。 wsgi.py文件仅由希望直接使用WSGI脚本文件的WSGI服务器使用。您可以在直接运行'gunicorn wsgi:application'的情况下技术上使用它,并避免使用管理命令,在这种情况下,它将使用它,但您可能需要设置PYTHONPATH中的额外路径以便环境知道在哪里找到东西。 - Graham Dumpleton
找出答案的简单方法。将其重命名并运行命令。如果出现错误,则需要它,但我的理解是run_gunicorn管理命令不使用它。 - Graham Dumpleton
非常感谢!现在我遇到了这个错误:http://stackoverflow.com/questions/12084673/gunicorn-loading-static-file - CIF

1

我使用Gunicorn来托管我的Django网站,这是配置详细信息,希望这对您有所帮助。


为什么我们在这里需要nginx?我们不能简单地使用gunicorn来运行80端口吗?有点困惑为什么我们需要额外的服务器介于中间。 - CIF
你能解释一下在这里使用nginx的好处吗? - CIF
gunicorn是一个HTTP/WSGI服务器,旨在为快速的客户端或休眠的应用程序提供服务。也就是说,在缓冲前端服务器(如nginx)后面。 - Rakesh
仍不确定为什么我们应该将使用与NGINX相结合。 我对服务器的了解非常有限。 - CIF
最好使用Nginx来提供静态文件,并将非静态请求传递给gunicorn。这是因为Nginx在提供静态文件方面非常快。此外,如果您使用Nginx,可以在端口80上运行单个Django服务器,同时提供HTTP和HTTPS服务。 - Dustin Rasener

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接