【问题标题】:Multiple Trac sites on one domain using Apache2使用 Apache2 在一个域上的多个 Trac 站点
【发布时间】:2014-11-09 02:45:57
【问题描述】:

如何让一个域在 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>

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

【问题讨论】:

    标签: apache trac


    【解决方案1】:

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

    我的新虚拟主机配置如下。我通过删除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>
    

    感谢收听。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2012-05-10
      • 1970-01-01
      • 1970-01-01
      • 2017-03-15
      • 2015-03-04
      • 2016-12-01
      • 2015-01-17
      相关资源
      最近更新 更多