Zam*_*tta 6 python apache django ubuntu
我按照使用mod_wsgi在Ubuntu 12.04上为应用程序提供服务的指示,为Apache上的Django设置WSGI.问题是,VirtualHost域现在返回一个令人困惑的奇怪的404错误:
[Mon Dec 16 19:53:49 2013] [error] [client 127.0.0.1] File does not exist: /etc/apache2/htdocs
Run Code Online (Sandbox Code Playgroud)
这令人困惑,因为...该目录甚至不存在.VirtualHost在/ var/www/main中设置,其中/ var/apache2/sites-available/default中的配置如下所示:
<VirtualHost *:80>
ServerName 127.0.0.1
ServerAlias coral
WSGIScriptAlias / /home/dfy/code/djdev/djdev/wsgi.py
</VirtualHost>
Run Code Online (Sandbox Code Playgroud)
我在编辑后重新加载了Apache.当我启动项目时,那个wsgi文件是Django生成的文件.我根据教程修改了它以匹配所需的内容:
import os
import sys # added from tutorial
sys.path.append('/home/dfy/code/djdev/djdev/') # added from tutorial
os.environ.setdefault("DJANGO_SETTINGS_MODULE", "djdev.settings")
from django.core.wsgi import get_wsgi_application
application = get_wsgi_application()
Run Code Online (Sandbox Code Playgroud)
对我来说,这一切看起来应该可行,但Apache正在查找不存在的目录中的静态文件(/ etc/apache2/htdocs).我一直在谷歌搜索几个小时试图弄清楚这里有什么问题,但还没有找到答案.我一时兴起chmod 777 wsgi.py,但没有改变任何东西,所以我确定这不是权限问题.我真的不知道出了什么问题.
但 Apache 正在不存在的目录中寻找静态文件
我不确定这里发生了什么,但我怀疑您的主要配置不正确。如果您不提供DOCUMENT_ROOT,Apache 将在默认位置(即 )中查找它htdocs。
根据django 部署文档,您需要为虚拟主机提供以下配置。您可以更改适用于您的设置的路径:
Alias /robots.txt /path/to/mysite.com/static/robots.txt
Alias /favicon.ico /path/to/mysite.com/static/favicon.ico
AliasMatch ^/([^/]*\.css) /path/to/mysite.com/static/styles/$1
Alias /media/ /path/to/mysite.com/media/
Alias /static/ /path/to/mysite.com/static/
<Directory /path/to/mysite.com/static>
Order deny,allow
Allow from all
</Directory>
<Directory /path/to/mysite.com/media>
Order deny,allow
Allow from all
</Directory>
WSGIScriptAlias / /path/to/mysite.com/mysite/wsgi.py
WSGIPythonPath /path/to/mysite.com
<Directory /path/to/mysite.com/mysite>
<Files wsgi.py>
Order deny,allow
Require all granted
</Files>
</Directory>
Run Code Online (Sandbox Code Playgroud)
请使用官方文档,该文档随着特定 django 版本的更改而更新。