【问题标题】:I need help on configuring mod_wsgi and Django我需要有关配置 mod_wsgi 和 Django 的帮助
【发布时间】:2011-05-24 01:54:07
【问题描述】:

Apache 和 mod_wsgi 配置正确(我创建了一个 hello world .html apache 文件和一个 hello world mod_wsgi 应用程序 没问题)。我现在需要我的 Django 应用程序来使用我的 django.wsgi 文件。是什么让我认为它无法识别我的 wsgi 文件是我 进入我创建的 django.wsgi 文件并完全删除了所有 文件中的代码并重新启动Apache,它仍然给了我 同一页面(来自 Django 应用程序的文件列表,不是我的实际 Django 应用程序。配置 Apache 和 mod_wsgi 非常顺利 但我不知道如何解决这个问题。以下是一些细节:

这是我当前的 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...

另外,下面是我的 vhost apache 配置文件。我认为这些 是应该为我完成这项工作的主要文件。如果.......请告知我们 你看到我正在做的任何错误以及我可能会做些什么来修复 这。 django 应用程序在 django 的内置开发中运行良好 服务器,所以我认为它可能与我的路径有关。 我的 apache error.log 文件中也没有错误。它的行为就像那里一样 完全没有问题,事实并非如此......项目没有加载, 就像我说的只是我的 Django 的文件和目录的列表 项目。这是我的 apache 配置文件:

<VirtualHost 1.2.3.4:80>
ServerAdmin hi@duckling.org
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.

【问题讨论】:

    标签: django apache mod-wsgi


    【解决方案1】:

    首先,您绝对不应该将 Django 文件保存在 DocumentRoot 下。它们不需要在那里,这是一个潜在的安全风险 - 正如您所看到的,您当前的错误配置允许 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
    

    【讨论】:

    • 嗯,据我了解,DocumentRoot 指令是强制性的。在我的 /etc/apache2/sites-available/default 文件中还有另一个,但我想我应该使用虚拟主机来配置东西并保留默认值。不过,我可能只是在这一点上感到困惑。 :D 无论如何,在这些更改之后,我得到 500 Internal Server Error。
    • 这很可能是强制性的,它不应该是您的 Python 代码的位置。如有必要,将其设置为静态目录。无论如何,您的 Apache 错误日志显示什么?
    • 服务器日志中没有错误,这就是杀死我的原因。它表现得好像每件事都很好,但事实并非如此。不过,我会立即更改 DocumentRoot 指令,我不想让我为那里的每个人提供我的 Python 代码。 ://
    猜你喜欢
    • 2020-06-18
    • 2022-01-10
    • 1970-01-01
    • 2015-10-13
    • 1970-01-01
    • 2021-12-09
    • 1970-01-01
    • 2011-07-23
    • 1970-01-01
    相关资源
    最近更新 更多