Django与Apache VirtualHost背后的WSGI给出了404

Pat*_*ssy 5 apache django virtualhost python-2.7

我正在尝试在使用WSGI的虚拟主机中的Apache服务器上运行Django应用程序.

我完全按照Django文档进行操作,但这里似乎还有一些问题.

据我所知,我已经正确配置了所有内容.

wsgi.py:

import os
import sys

path='/var/www/docs/'
sys.path.append(path)

os.environ["DJANGO_SETTINGS_MODULE"] = "DocsEngine.settings"

import django.core.handlers.wsgi
application = django.core.handlers.wsgi.WSGIHandler()
Run Code Online (Sandbox Code Playgroud)

虚拟主机文件:

Listen 8000

WSGIPythonPath /var/www/docs

<VirtualHost *:8000>
    WSGIScriptAlias / /var/www/docs/DocsEngine/wsgi.py

    ServerName myurl.com
    Alias /resources/ /var/www/docs/resources/

    <Directory /var/www/docs/DocsEngine>
        <Files wsgi.py>
            Require all granted
        </Files> 
    </Directory>

    CustomLog /var/log/apache2/wsgi-access.log combined  
    ErrorLog  /var/log/apache2/wsgi-error.log

</VirtualHost>
Run Code Online (Sandbox Code Playgroud)

导航到myurl.com:8000/它时会出现404页面.

  • 我的防火墙已打开端口8000
  • 这个vhost在apache中启用.
  • Apache已启用mod_wsgi
  • 当使用dev服务器在本地运行时,django应用程序可以正常工作.
  • 我的本地机器和服务器都运行python 2.7.6和django 1.7.3

我能够访问位于我的/resources目录中的东西,所以我知道apache可以识别其中的一部分.

几个小时以来,我一直在敲打我的头,任何帮助都会非常感激.

Pat*_*ssy 5

经过大约14个小时的Google-fu和很多失败,我终于找到了解决方案.显然,他们在Django 1.7和Apache 2.4中都做了无证的重大改变.

首先,我需要禁用mod_pythonApache.显然,当启用WSGI时,它会导致静默问题.一旦我禁用它,我的日志开始爆炸,感谢上帝.以下是我发现此解决方案的链接:http://marc-abramowitz.com/archives/2012/09/28/some-tips-for-setting-up-apache-and-mod_wsgi/

鉴于从禁用中发现的错误mod_python,我发现Django的WSGI.py文件需要以这种方式初始化,与文档中描述的不同:

from django.core.wsgi import get_wsgi_application
application = get_wsgi_application()
Run Code Online (Sandbox Code Playgroud)

https://www.pythonanywhere.com/forums/topic/1629/#id_post_11030

希望这可以帮助将来遇到这个问题的可怜的灵魂.