2009-10-08 64 views
2

我试图以通过浏览器每一个具有不同的URL访问这些配置两个Trac的实例2种Trac的情况下,怪异的行为很好,我用/ trac1获得第一个Trac,然后在/ trac2获得第二个Trac。但是当我再次访问/ trac1时,它会一直给我第二个Trac(/ trac2)的内容。如果我触摸第一个.wsgi配置文件(称为trac1.wsgi),然后使用浏览器再次请求/ trac1,我会再次获得预期的内容。与下的Apache + mod_wsgi的

相反的情况相同的工作:访问/ TRAC2,然后/ TRAC1,然后/ TRAC2一直给/ TRAC1的内容,直到我摸trac2.wsgi ...

这么看来的Python,mod_wsgi的和/或Apache正在缓存结果或其他内容。我不是系统管理员,无法进一步处理这个问题。

的.wsgi文件,并为Apache的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> 

如果有人提出另一种结构或什么的,它会受到欢迎,以及。谢谢!

赫克托

回答

2

我找到了自己的解决方案,它是关于Trac文档(“重要注意事项”一节),并没有事件看看,傻瓜我:P

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

+3

这不是因为什么“重要提示”部分称,并通过自身它们描述应该不会导致出现问题的配置一样简单。所以,我实际上会不同意他们的具体例子。我建议你读“http://code.google.com/p/modwsgi/wiki/IntegrationWithTrac”和“http://code.google.com/p/modwsgi/wiki/ApplicationIssues#Application_Environment_Variables”。后者描述了使用os.environ的问题。对于Trac,只应该是混合TRAC_ENV和TRAC_ENV_PARENT_DIR的问题。避免问题的简短回答是使用mod_wsgi守护进程模式,如第一个链接所示。 – 2009-10-08 22:04:13

0

移动你的鸡蛋缓存分开迪尔斯

trac1.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 

trac2.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