我有一个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中找不到任何内容?
是否有任何配置错误? 任何帮助都非常有用!
最佳
答案 0 :(得分:1)
错误消息告诉您到底发生了什么:没有任何东西可以匹配根URL /
。这应该在你的urls.py中很明显:你有&#34; admin&#34;,&#34; index&#34;,&#34; search-form&#34;并且&#34;搜索&#34;,但没有&#34;&#34;。
但是,您应该在部署之前诊断出这一点。当您使用开发服务器在本地计算机上运行它时,当您转到localhost:8000/
时发生了什么?您可能会看到完全相同的错误,然后您不会认为它与您的Apache配置有任何关系。