2010-12-11 75 views
0

阿帕奇& mod_wsgi的配置是否正确帮助(我已经创建了一个招呼 世界的.html文件的Apache与 没有问题一个Hello World mod_wsgi的应用程序)。我现在需要我的Django应用程序来使用我的django.wsgi 文件。是什么让我觉得它不承认我的WSGI文件是我 走进我建立了我的django.wsgi文件,彻底删除所有的 文件中的代码,并重新启动Apache和它仍然给了我 同一页面(的列表。从Django应用程序,而不是我的实际 Django应用程序的文件配置Apache和mod_wsgi的真的很好 但我在如何解决这个亏损这里还有一些细节:我需要配置mod_wsgi的和Django的

这是我目前的Django的。 wsgi文件:

import os 
import sys 

sys.path.append('/srv/www/duckling.org/store/') 

os.environ['DJANGO_SETTINGS_MODULE'] = 'store.settings' 

import django.core.handlers.wsgi 

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

我试过几个不同版本的django.wsgi文件 (包括类似于http://www.djangoproject.com/的版本)。 这是我WSGI的版本就是从这里开始: http://library.linode.com/frameworks/django-apache-mod-wsgi/ubuntu-10 ...

而且,这里是我的下面的虚拟主机Apache的配置文件。我认为这些 是假设为我完成这项工作的主要文件。让我知道如果你看到我在做什么以及我可能会做什么来修复 这个错误,如果 。 Django的应用程序运行在内置的发展 服务器,所以我想它可能有的东西与我的路径Django的罚款。 我的apache error.log文件中也没有错误。它作为有 一点问题都没有,这是不是这样的......该项目没有加载, 就像我说的只是我的文件和我的Django 项目的目录清单。这是我的Apache的配置文件:

<VirtualHost 1.2.3.4:80> 
ServerAdmin [email protected] 
ServerName duckling.org 
ServerAlias www.duckling.org 

DocumentRoot /srv/www/duckling.org/store/ 

<Directory /srv/www/duckling.org/store/> 
Order Allow,Deny 
Allow from all 
</Directory> 

Alias /static/ /srv/www/duckling.org/store/static/ 

<Directory /srv/www/duckling.org/store/static> 
Order deny,allow 
Allow from all 
</Directory> 

WSGIScriptAlias store/ /srv/www/duckling.org/store/wsgi-scripts/django.wsgi 
<Directory /srv/www/wsgi-scripts> 
Order allow,deny 
Allow from all 
</Directory> 
</VirtualHost> 

这里是我使用的堆栈的版本,我看到过的,你都希望我使用 什么的版本 网站的mod_wsgi服务器:

Apache/2.2.14 (Ubuntu) PHP/5.3.2-1ubuntu4.5 with Suhosin-Patch 
mod_python/3.3.1 Python/2.6.5 mod_wsgi/2.8 

谢谢, j。

回答

0

一开始,你绝对不应该让你的DocumentRoot下你的Django文件。如你所见,目前的错误配置允许Apache直接提供文件:攻击者可以猜测并下载你的settings.py文件,并将其与数据库一起下载密码。

所以,摆脱DocumentRoot指令完全,以及第一个目录部分,它允许/srv/www/duckling.org/store/直接访问。 (你可能不需要提供/srv/www/wsgi-scripts的那个)。这应该会让事情好一点。

顺便说一句,这个配置将成为duckling.org/store下你的网站 - 是你想要的吗?如果你想要它的根,你应该只使用:

WSGIScriptAlias//srv/www/duckling.org/store/wsgi-scripts/django.wsgi 
+0

嗯,从我理解的DocumentRoot指令是强制性的。在我的/ etc/apache2/sites-available/default文件中还有另外一个,但我认为我应该使用虚拟主机来配置,并保留默认值。尽管这一点我可能只是困惑。 :D无论如何,这些更改后,我得到500内部服务器错误。 – jimmyc3po 2010-12-11 22:39:25

+0

它可能是强制性的,它不应该是你的Python代码的位置。如有必要,将其设置为静态目录。无论如何,你的Apache错误日志显示了什么? – 2010-12-11 22:48:20

+0

服务器日志中没有错误,这就是我所遇到的。它表现得像每件事都很好,但事实并非如此。尽管我会立即更改DocumentRoot指令,但我不想让我为所有人提供我的Python代码。 :/ – jimmyc3po 2010-12-11 22:54:52