django,mod_wsgi和apache配置中的文件不存在错误

时间:2014-07-03 12:14:47

标签: django apache mod-wsgi

我有一个Django应用程序,我试图在Debain Linux上使用mod_wsgi和Apache webserver托管。

使用Django开发网络服务器,代码在我的本地计算机和Live服务器上运行良好。我可以成功浏览到127.0.0.1:8000/index

当我尝试通过Apache运行时, 这是我收到的错误(Apache错误日志)

[Fri Jul 04 10:46:17 2014] [error] [client ] File does not exist: /var/www/mydomain.com/htdocs/DataAnalysis/DataAnalysisSite/wsgi.py/index

我已阅读并尝试了以下文章中的所有组合 - webpython.codepoint.net/wsgi_tutorial - docs.djangoproject.com/en/dev/topics/install/ - library.linode.com/frameworks/django-apache-mod-wsgi/ubuntu-10.04-lucid - stackoverflow.com/questions/11380214/why-doesnt-apache-display-404-errors-with-django-and-mod-wsgi - blog.dscpl.com.au/2010/03/improved-wsgi-script-for-use-with.html

这是我的目录结构

.
 DataAnalysis
 ├── Application
 │   ├── admin.py
 │   ├── admin.pyc
 │   ├── __init__.py
 │   ├── __init__.pyc
 │   ├── models.py
 │   ├── models.pyc
 │   ├── tests.py
 │   ├── views.py
 │   └── views.pyc
 ├── DataAnalysisSite
 │    ├── Alt.pkl
 │   ├── __init__.py
 │   ├── __init__.pyc
 │   ├── settings.py
 │   ├── settings.pyc
 │   ├── urls.py
 │   ├── urls.pyc
 │   ├── Wann.pkl
 │   ├── wsgi.py
 │   └── wsgi.pyc
 ├── manage.py
 ├── templates
 │   └── search_form.html
 └── wsgi.py

这是我的apache配置文件:

<Directory /var/www/mydomain.com/htdocs>
    Options ExecCGI Indexes
    Order deny,allow
    Allow from all
    AddHandler  /var/www/mydomain.com/htdocs/DataAnalysis/DataAnalysisSite/wsgi.py .py
</Directory>

<VirtualHost xx.xxx.xxx.xx:80>
    ServerName mydomain.com
    ServerAdmin webmaster@mydomain.com

    ErrorLog "/var/log/apache2/mydomain.com-error.log"
    CustomLog "/var/log/apache2/dmydomain.com-access.log" combined

    WSGIScriptAlias / /var/www/mydomain.com/htdocs/DataAnalysis/DataAnalysisSite/wsgi.py

</VirtualHost>

这是我的Wsgi.py文件:

import sys
import site
import os
import django.core.handlers.wsgi

# we add currently directory to path and change to it
pwd = os.path.dirname(os.path.abspath(__file__))
os.chdir(pwd)
sys.path = [pwd] + sys.path

sys.path.insert(0, '/var/www/mydomain.com/htdocs/DataAnalysis')
      sys.path.insert(1,'/var/www/mydomain.com/htdocs/DataAnalysis/DataAnalysisSite')

sys.path.append('/var/www/mydomain.com/htdocs/DataAnalysis')
  sys.path.append('/var/www/mydomain.com/htdocs/DataAnalysis/DataAnalysisSite')

os.environ.setdefault("DJANGO_SETTINGS_MODULE", "DataAnalysisSite.settings")

#from django.core.wsgi import get_wsgi_application
#application = get_wsgi_application()

import django.core.handlers.wsgi
application = django.core.handlers.wsgi.WSGIHandler()

这是我的urls.py文件:

from django.conf.urls import patterns, include, url
from Application import views
from django.contrib import admin
admin.autodiscover()

urlpatterns = patterns('',
# Examples:
# url(r'^$', 'form_test.views.home', name='home'),
# url(r'^blog/', include('blog.urls')),

url(r'^admin/', include(admin.site.urls)),
url(r'^index/$', views.index),
url(r'^search-form/$', views.search_form),
url(r'^search/$', views.search),
)

我正在使用pycharm,views.py与unit.py,admin.py models.py和test.py一起位于应用程序文件夹中。

这是我的views.py:

from django.shortcuts import render
from django.http import HttpResponse
from django.views.decorators.csrf import csrf_exempt
from sklearn.naive_bayes import GaussianNB
from sklearn import cross_validation
from sklearn.feature_extraction import DictVectorizer
from sklearn.externals import joblib
import os

import csv

@csrf_exempt
def index(request):
    return HttpResponse('welcome to python django')

为什么我的wsgi文件在views.py中找不到任何内容?

是否有任何配置错误? 任何帮助都非常有用!

最佳

1 个答案:

答案 0 :(得分:1)

错误消息告诉您到底发生了什么:没有任何东西可以匹配根URL /。这应该在你的urls.py中很明显:你有&#34; admin&#34;,&#34; index&#34;,&#34; search-form&#34;并且&#34;搜索&#34;,但没有&#34;&#34;。

但是,您应该在部署之前诊断出这一点。当您使用开发服务器在本地计算机上运行它时,当您转到localhost:8000/时发生了什么?您可能会看到完全相同的错误,然后您不会认为它与您的Apache配置有任何关系。