【问题标题】:How can I deploy Django Gunicorn under Apache proxy?如何在 Apache 代理下部署 Django Gunicorn?
【发布时间】:2014-11-24 20:21:38
【问题描述】:
我浏览了文档并一遍又一遍地访问相同的页面。目前我已经找到了运行现有 myapp.wsgi 文件的文档,但是关于如何制作合适的 wsgi 文件的文档比较难找到。
如果我想在旧版本的 Gunicorn 等上制作由 Apache 代理的等价物:
python manage.py run_gunicorn 0.0.0.0:8888
我应该怎么做才能提供 WSGI 文件:
gunicorn project.wsgi:application
谢谢,
【问题讨论】:
标签:
python
django
apache
deployment
gunicorn
【解决方案1】:
为什么你认为你需要一个特殊的 wsgi 文件?您只需使用与任何其他部署完全相同的版本即可。
【解决方案2】:
我假设您不是在询问 wsgi 文件的内容(这通常是非常标准的),而是如何组装一个 gunicorn 命令行以允许 gunicorn 为您的项目查找/使用 wsgi 文件?
在部署到临时服务器时,我记得在设置 Python 路径时遇到问题,以便 gunicorn 可以为我的应用程序找到正确的 wsgi 文件。这是我最终使用的 gunicorn 命令的精简版本:
gunicorn --pythonpath /some_path/my_app/my_app my_app.wsgi:application
用简单的英语,从右边开始,向后工作:
-
wsgi.py 文件中有一个名为 application 的函数
-
wsgi.py 文件位于名为 my_app 的模块内(在本例中是包含 __init__.py 文件的目录)
-
my_app 模块位于 /some_path/my_app/my_app,因此它需要位于 PYTHONPATH 上。
所以wsgi.py 的完整路径是:
/some_path/my_app/my_app/my_app/wsgi.py.
在与wsgi.py 相同的目录中有一个__init__.py 文件,这会导致Python 将该目录识别为一个模块。