Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/django/19.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Python Django和mod_wsgi根URL配置_Python_Django_Mod Wsgi_Django Urls - Fatal编程技术网

Python Django和mod_wsgi根URL配置

Python Django和mod_wsgi根URL配置,python,django,mod-wsgi,django-urls,Python,Django,Mod Wsgi,Django Urls,我在使用Apache和mod_wsgi为Django项目提供服务时遇到了一个非常奇怪的问题。当请求URL时,mod_wsgi和Django似乎完全忽略了我的ROOT_URLCONF指令,只使用我的应用程序中的URL.py。但是,当我运行纯Django web服务器时,它运行正常 这是我的基本项目结构: ├── myproject/ │ ├── config/ │ ├── __init__.py │ ├── settings.py │ └── urls.py <-- this

我在使用Apache和mod_wsgi为Django项目提供服务时遇到了一个非常奇怪的问题。当请求URL时,mod_wsgi和Django似乎完全忽略了我的ROOT_URLCONF指令,只使用我的应用程序中的URL.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
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>

此外,不会为我的配置目录中的url.py文件生成编译的字节码。很明显,Django甚至都没有触及它。

在config、myapp和myproject中是否有_uinit____;.py文件?Apache用户将没有对代码文件目录的写访问权来创建.pyc文件。@GrahamDumpleton它似乎有访问权,并且所有其他.pyc文件都正确生成。除了url.py之外,每个.py文件都有一个对应的.pyc文件。这是否意味着代码目录被设置为Apache用户所有,或者目录被设置为世界可写?通常情况下,默认Apache用户不能写入目录。删除其他一些.pyc文件,然后重新运行Apache,看看是否重新创建了它们。这将确认.pyc文件是否因为Django开发服务器而存在。@GrahamDumpleton您完全正确-这些是运行开发服务器的遗留文件。我应该抓住那个。。。谢谢虽然我仍然不确定为什么它不遵守我在config/url.py中设置的规则
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>