在同一台服务器上使用iRedMail和django站点

时间:2013-05-06 23:48:52

标签: django apache mod-wsgi virtualhost

我正在尝试创建一个小型django网站并使用iRedMail进行电子邮件。我首先安装了iRedMail,并确保它有效。我可以访问www.domain.com/iredadmin和www.domain.com/mail,让它完美运行。我的下一步是安装我的django站点并配置Apache。不幸的是,这导致我的django网站尝试处理/ mail /和/ iredadmin /。我现在已经烦恼了几个小时的配置,并且不知道该怎么做。以下是设置:

apache2.conf:

# Defaults...

WSGIPythonPath /path/to/website.com/website

启用位点-/ website.com:

<VirtualHost *:80>
    ServerName website.in
    ServerAlias www.website.in
    ErrorLog ${APACHE_LOG_DIR}/error.log

    Alias /static /path/to/website.com/website/static
    Alias /media /path/to/website.com/website/media
    Alias /mail /usr/share/apache2/roundcubemail/
    Alias /admin /usr/share/apache2/iredadmin/


    <Directory /usr/share/apache2/roundcubemail/>
        Order allow,deny
        Allow from all
    </Directory>

    WSGIScriptAlias / /path/to/website.com/website/website.wsgi

    <Location "/">
            SetHandler python-program
            PythonHandler django.core.handlers.modpython
            SetEnv DJANGO_SETTINGS_MODULE website.settings
            PythonDebug Off
            PythonPath "['/path/to/website.com/website/']+sys.path"
    </Location>

    <Directory /path/to/website.com/website>
        <Files wsgi.py>
            Order deny,allow
            Allow from all
        </Files>
    </Directory>

    <Directory /path/to/website.com/website/static>
        Order allow,deny
        Allow from all
    </Directory>

    <Location /static/>
        SetHandler None
    </Location>

    <Directory /path/to/website.com/website/media>
        Order allow,deny
        Allow from all
    </Directory>

    <Location /media/>
        SetHandler None
    </Location>

</VirtualHost>

django网站显示正常,但我一直收到内部服务器错误。

1 个答案:

答案 0 :(得分:0)

您正在尝试同时使用mod_wsgi和mod_python来处理Django站点,并使用mod_python覆盖mod_wsgi。选择其中一个。由于不再开发或支持mod_python并且在Django中对它的支持已被弃用,因此可能不是继续使用它的好选择。

接下来的错误是:

Alias /mail /usr/share/apache2/roundcubemail/
Alias /admin /usr/share/apache2/iredadmin/

删除尾部斜杠:

Alias /mail /usr/share/apache2/roundcubemail
Alias /admin /usr/share/apache2/iredadmin

即使这样它仍然无效,因为在使用mod_python时你必须告诉mod_python不要处理这些路径。

<Location /mail/>
    SetHandler None
</Location>

<Location /admin/>
    SetHandler None
</Location>

您可能遇到的另一个问题是/ admin通常用于Django管理界面,而您正在覆盖它。