【发布时间】:2014-07-03 12:14:47
【问题描述】:
我有一个 Django 应用程序,我尝试在 Debain Linux 上使用 mod_wsgi 和 Apache 网络服务器托管它。
代码在我的本地机器和使用 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 一起在应用程序文件夹中。
这是我的观点.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 中找不到任何内容?
是否有任何配置错误? 任何帮助都非常感谢!
最好的
【问题讨论】:
-
什么文件不存在? exact 错误是什么?为什么最后突然说在views.py中找不到函数——这和错误有什么关系?
-
为什么你的目录配置中有那个奇怪的
AddHandler行? -
AddHandler 有什么问题?
-
问题是拥有一个根本没有任何意义。您不希望 Apache 为该文件调用处理程序,您希望它用作 WSGI 应用程序,这就是 WSGIScriptAlias 的用途。 (但这不是问题的根源。)
-
我应该把views.py放在哪里?