无法使用 mod-wsgi 在 Apache 上部署 django
Posted
技术标签:
【中文标题】无法使用 mod-wsgi 在 Apache 上部署 django【英文标题】:Cannot deploy django on Apache with mod-wsgi 【发布时间】:2014-11-24 12:12:10 【问题描述】:我一直在开发一个准备转移到生产服务器的 Django 应用程序。我安装了 Apache 和 mod_wsgi,我使用了一个测试来检查它是否一切正常,并且确实如此。但是现在我在让它与 Django 一起工作时遇到了问题。
我已经创建了 wsgi.py 文件:
import os
import os.path
import sys
sys.path.append('/var/www/html/mideastinfo/lib/python2.7/site-packages/django/bin/mideastinfo')
#os.environ['PYTHON_EGG_CACHE'] = 'path to a directory for egg cache'
os.environ['DJANGO_SETTINGS_MODULE'] = 'mideastinfo.settings'
import django.core.handlers.wsgi
application = django.core.handlers.wsgi.WSGIHandlers()
我通过 WGSIScriptAlias 将 http.conf 指向它。它不起作用,我知道它与 sys.path 有关,我不知道该怎么做。
我有一个开发环境,我在其中完成了所有构建。然后,我将所有项目依赖项安装到服务器用户 pip 和一个 requirements.txt 上。然后,我移动了我的项目文件。但我认为我把所有的映射和路径都弄错了。有任何想法吗?我觉得我离完成这件事只有一步之遥。
【问题讨论】:
application = django.core.handlers.wsgi.WSGIHandlers() [Mon Sep 29 19:13:07 2014] [error] [client 157.55.39.217] AttributeError: 'module' object has no attribute 'WSGIHandlers' 当你 >python manage.py shell 和 import django.core.handlers.wsgi 会发生什么? 没什么,没有反应 你在“通往项目根的路径”上放了什么?您的项目在 /var/www/html/mideastinfo/lib/python2.7/site-packages/django/bin/mideastinfo 内吗?你把 wsgi.py 放在哪里了? 是的,你引用的是我作为项目根目录的路径。我认为这就是问题所在。 wsgi.py 文件位于 var/www/html/wsgi.py 【参考方案1】:我将分享我如何配置一个简单的示例:
import os,sys
apache_configuration = os.path.dirname(__file__)
project = os.path.dirname(apache_configuration)
workspace = os.path.dirname(project)
sys.path.append(workspace)
sys.path.append('PATH TO YOUR PROJECT ROOT')
os.environ['DJANGO_SETTINGS_MODULE'] = 'mideastinfo.settings'
import django.core.handlers.wsgi
application = django.core.handlers.wsgi.WSGIHandler()
在 Apache 配置的 VirtualHost 指令上,您必须:
WSGIScriptAlias / /PATH/TO/YOUR/.wsgi
例子:
<VirtualHost *:80>
ErrorLog /home/user/logs/error.log
...
WSGIScriptAlias / /PATH/TO/YOUR/.wsgi
...
</VirtualHost>
【讨论】:
这有帮助。我移动了一些东西并收紧了项目路径。另外,我意识到对于我的版本,最后两行已被弃用,因此我使用 from django.core.wsgi import get_wsgi_application application = get_wsgi_application()以上是关于无法使用 mod-wsgi 在 Apache 上部署 django的主要内容,如果未能解决你的问题,请参考以下文章
centos6.5+python2.7+flask+apache+mod-wsgi部署
NameError:名称“TypeError”未在 Apache 日志中定义