2

我正在尝试配置两个 Trac 实例,以便通过浏览器访问它们,每个实例都有不同的 url:

http://trac.domain.com/trac1
http://trac.domain.com/trac2

第一次访问它们时,Apache 响应很好,我使用 /trac1 获得第一个 Trac,然后在 /trac2 中获得第二个 Trac。但是当我再次访问 /trac1 时,它不断给我第二个 Trac (/trac2) 的内容。如果我触摸第一个的 .wsgi 配置文件(比如 trac1.wsgi),然后使用浏览器再次请求 /trac1,我会再次获得预期的内容。

相反的情况是相同的:访问/trac2,然后是/trac1,然后/trac2 不断给出/trac1 的内容,直到我触摸trac2.wsgi...

所以看起来 Python、mod_wsgi 和/或 Apache 正在缓存结果或其他东西。我不是系统管理员,无法进一步解决这个问题。

Apache 的 .wsgi 文件和 http.conf:

trac1.wsgi

import os

os.environ['TRAC_ENV'] = '/home/myuser/trac/trac1'
os.environ['PYTHON_EGG_CACHE'] = '/tmp/'

import trac.web.main
application = trac.web.main.dispatch_request

trac2.wsgi

import os

os.environ['TRAC_ENV'] = '/home/myuser/trac/trac2'
os.environ['PYTHON_EGG_CACHE'] = '/tmp/'

import trac.web.main
application = trac.web.main.dispatch_request

http.conf

<VirtualHost trac.domain.com:8080>

    WSGIScriptAlias /trac1 /home/myuser/public_html/trac1/apache/trac1.wsgi
    WSGIScriptAlias /trac2 /home/myuser/public_html/trac2/apache/trac2.wsgi

    <Directory /home/myuser/public_html/trac1/apache>
        WSGIApplicationGroup %{GLOBAL}
        Order deny,allow
        Allow from all
    </Directory>

    <Location "/trac1">
        AuthType Basic
        AuthName "Trac1 Trac Auth"
        AuthUserFile /home/myuser/public_html/trac1/apache/trac1.htpasswd
        Require valid-user
    </Location>


    <Directory /home/myuser/public_html/trac2/apache>
        WSGIApplicationGroup %{GLOBAL}
        Order deny,allow
        Allow from all
    </Directory>

    <Location "/trac2">
        AuthType Basic
        AuthName "Trac2 Trac Auth"
        AuthUserFile /home/myuser/public_html/trac2/apache/trac2.htpasswd
        Require valid-user
    </Location>

</VirtualHost>

如果有人建议替代配置或其他配置,也将受到欢迎。谢谢!

赫克托

4

2 回答 2

2

我自己找到了解决方案,它在 Trac 文档(“重要说明”部分)中,我没有看,傻瓜:P

http://trac.edgewall.org/wiki/TracModWSGI

于 2009-10-08T18:40:17.917 回答
0

将您的鸡蛋缓存移动到单独的目录

跟踪1.wsgi:

import os

os.environ['TRAC_ENV'] = '/home/myuser/trac/trac1' 
os.environ['PYTHON_EGG_CACHE'] = '/tmp/trac1'

import trac.web.main 
application = trac.web.main.dispatch_request

跟踪2.wsgi:

import os

os.environ['TRAC_ENV'] = '/home/myuser/trac/trac2'
os.environ['PYTHON_EGG_CACHE'] = '/tmp/trac2'

import trac.web.main
application = trac.web.main.dispatch_request
于 2009-10-08T17:15:21.847 回答