2009-10-08 63 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