Apache + mod_wsgi下两个Trac实例的异常行为
我正在尝试配置两个Trac实例,以便通过浏览器用不同的URL访问它们:
http://trac.domain.com/trac1
http://trac.domain.com/trac2
第一次访问时,Apache的响应很好,我可以通过/trac1访问第一个Trac,然后通过/trac2访问第二个。但是当我再次访问/trac1时,它却一直给我显示第二个Trac(/trac2)的内容。如果我对第一个的.wsgi配置文件(比如trac1.wsgi)做点修改,然后再用浏览器请求/trac1,我就能再次看到预期的内容。
反过来也是一样:先访问/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>
如果有人能提供其他配置建议或者其他解决办法,我会非常欢迎。谢谢!
Hector
2 个回答
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
2
我自己找到了答案,原来在Trac的文档里(“重要提示”部分),我之前居然没去看,真是太傻了 :P