Django和mod_wsgi根URL配置

时间:2014-07-24 22:56:17

标签: python django mod-wsgi django-urls

我在使用Apache和mod_wsgi服务Django项目时遇到了一个非常奇怪的问题。当请求URL时,mod_wsgi和Django似乎完全忽略了我的ROOT_URLCONF指令,只使用了我的应用程序中的urls.py。但是,当我运行纯Django Web服务器时,它运行正常。

这是我的基本项目结构:

├── myproject/
│   ├── config/
│   ├── __init__.py
│   ├── settings.py
│   └── urls.py <-- this is somehow ignored when run with mod_wsgi
├── myapp/
│   ├── __init__.py
│   ├── models.py
│   ├── tests.py
│   ├── urls.py <-- this is default when run with mod_wsgi
│   └── views.py
├── __init__.py
├── manage.py
└── wsgi.py

编辑:每个.py文件在服务器运行时获取相应的.pyc文件 urls.py - 这些是来自的文件在开发模式下运行。

在settings.py中:

ROOT_URLCONF = 'config.urls'

wsgi.py:

import os
os.environ.setdefault("DJANGO_SETTINGS_MODULE", "config.settings")
from django.core.wsgi import get_wsgi_application
application = get_wsgi_application()

Apache config(/etc/httpd/conf.d/myproject.conf):

WSGIScriptAlias /myproject /opt/django/myproject/wsgi.py
WSGIPythonPath /opt/django/myproject
WSGIPassAuthorization Off

WSGISocketPrefix /var/lib/django/myproject
WSGIDaemonProcess myproject python-path=/opt/django/myproject processes=2 threads=8
WSGIProcessGroup myproject

<Directory /opt/django/myproject/>
<Files wsgi.py>
AuthType None
Order deny,allow
Allow from all
</Files>
</Directory>

此外,我的config目录中的urls.py文件没有生成编译后的字节码。这显然它甚至没有被Django触及。

0 个答案:

没有答案