使用Apache2在一个域上的多个Trac站点

时间:2014-09-15 14:24:57

标签: apache trac

如何让一个域在Apache2下提供多个站点。我想要的是这样的:
trac.mysite.net/project1
trac.mysite.net/project2

我现在的工作是这样的:
project1.mysite.net/
project2.mysite.net/
使用两个独立的虚拟主机,效果很好。但是,每次创建新项目时,我都必须更新DNS。

我想要的是让一个虚拟主机配置指向每个项目的不同目录。

我所尝试的是创造一个' trac'每个站点具有不同部分的虚拟主机。根据错误日志,它会尝试访问目录,但会拒绝访问。

[Sun Sep 14 16:50:59.022354 2014] [autoindex:error] [pid 9811] [client 10.1.1.112:58207] AH01276: Cannot serve directory /usr/share/trac/projects/project1/htdocs/: No matching DirectoryIndex (index.html,index.cgi,index.pl,index.php,index.xhtml,index.htm) found, and server-generated directory index forbidden by Options directive

我尝试使用Options -Indexes删除索引,但这并没有消除上面的错误。

这是我的虚拟主机配置:

<VirtualHost *:80>
    ServerName trac.mysite.net
    ServerAlias trac
    ServerAdmin vv@mysite.net

    # trac ####################################################################
    DocumentRoot /usr/share/trac/htdocs

    <Directory />
        Options FollowSymLinks
        AllowOverride None
    </Directory>

    <Directory /usr/share/trac/cgi-bin/>
        Options Indexes FollowSymLinks MultiViews
        AllowOverride None
        AuthType Digest
        AuthName login
        AuthUserFile /etc/apache2/loginpasswd
        Require valid-user
        Order allow,deny
        allow from all
    </Directory>

    Alias /chrome/common /usr/share/trac/htdocs/common
    Alias /chrome/site /usr/share/trac/htdocs/site

    <Directory /usr/share/trac/htdocs/>
        Order allow,deny
        allow from all
    </Directory>

    WSGIScriptAlias / /usr/share/trac/cgi-bin/trac.wsgi

    # project1 ###############################################################
    Alias /project1 /usr/share/trac/projects/project1/htdocs

    <Directory /usr/share/trac/projects/project1/htdocs/>
        Order allow,deny
        allow from all
    </Directory>

    <Directory /usr/share/trac/projects/project1/cgi-bin/>
        Options Indexes FollowSymLinks MultiViews
        AllowOverride None
        AuthType Digest
        AuthName login
        AuthUserFile /etc/apache2/loginpasswd
        Require valid-user
        Order allow,deny
        allow from all
    </Directory>

    Alias /project1/chrome/common /usr/share/trac/projects/project1/htdocs/common
    Alias /project1/chrome/site /usr/share/trac/projects/project1/htdocs/site

    WSGIScriptAlias /project1 /usr/share/trac/projects/project1/cgi-bin/trac.wsgi

    # project2 ################################################################
    Alias /project2 /usr/share/trac/projects/project2/htdocs
    <Directory /usr/share/trac/projects/project2/htdocs/>
        Options FollowSymLinks
        AllowOverride None
        Order allow,deny
        Allow from all
    </Directory>

    <Directory /usr/share/trac/projects/project2/cgi-bin/>
        Options Indexes FollowSymLinks MultiViews
        AllowOverride None
        AuthType Digest
        AuthName login
        AuthUserFile /etc/apache2/loginpasswd
        Require valid-user
        Order allow,deny
        Allow from all
    </Directory>

    Alias /project2/chrome/common /usr/share/trac/projects/project2/htdocs/common
    Alias /project2/chrome/site /usr/share/trac/projects/project2/htdocs/site

    WSGIScriptAlias /project2/ /usr/share/trac/projects/project2/cgi-bin/trac.wsgi

    # Possible values include: debug, info, notice, warn, error, crit,
    # alert, emerg.
    LogLevel warn

    ErrorLog ${APACHE_LOG_DIR}/trac_error.log
    CustomLog ${APACHE_LOG_DIR}/trac_access.log combined
</VirtualHost>

我知道这是可能的,我只是不确定如何。任何建议将不胜感激。

1 个答案:

答案 0 :(得分:2)

阿。我弄清楚我做错了什么。我为每个项目目录使用AliasAlias覆盖了WSGIScriptAlias。正是这个WSGIScriptAlias才是一切工作所必需的。它允许带有/ projectX /的URL成为trac.wsgi脚本的别名。

我的新vhost配置如下。我通过删除trac vhost的指令清除了一点,只留下了DocumentRoot

<VirtualHost *:80>
    ServerName trac.mysite.net
    ServerAlias trac
    ServerAdmin vv@mysite.net

    # trac ####################################################################
    DocumentRoot /usr/share/trac/htdocs

    # project1 ###############################################################
    <Directory /usr/share/trac/projects/project1/htdocs/>
        Order allow,deny
        allow from all
    </Directory>

    <Directory /usr/share/trac/projects/project1/cgi-bin/>
        Options Indexes FollowSymLinks MultiViews
        AllowOverride None
        AuthType Digest
        AuthName login
        AuthUserFile /etc/apache2/loginpasswd
        Require valid-user
        Order allow,deny
        allow from all
    </Directory>

    Alias /project1/chrome/common /usr/share/trac/projects/project1/htdocs/common
    Alias /project1/chrome/site /usr/share/trac/projects/project1/htdocs/site

    WSGIScriptAlias /project1 /usr/share/trac/projects/project1/cgi-bin/trac.wsgi

    # project2 ################################################################
    <Directory /usr/share/trac/projects/project2/htdocs/>
        Options FollowSymLinks
        AllowOverride None
        Order allow,deny
        Allow from all
    </Directory>

    <Directory /usr/share/trac/projects/project2/cgi-bin/>
        Options Indexes FollowSymLinks MultiViews
        AllowOverride None
        AuthType Digest
        AuthName login
        AuthUserFile /etc/apache2/loginpasswd
        Require valid-user
        Order allow,deny
        Allow from all
    </Directory>

    Alias /project2/chrome/common /usr/share/trac/projects/project2/htdocs/common
    Alias /project2/chrome/site /usr/share/trac/projects/project2/htdocs/site

    WSGIScriptAlias /project2/ /usr/share/trac/projects/project2/cgi-bin/trac.wsgi

    # Possible values include: debug, info, notice, warn, error, crit,
    # alert, emerg.
    LogLevel warn

    ErrorLog ${APACHE_LOG_DIR}/trac_error.log
    CustomLog ${APACHE_LOG_DIR}/trac_access.log combined
</VirtualHost>

感谢收听。