Странное поведение с двумя экземплярами Trac под Apache + mod_wsgi

Я пытаюсь настроить два экземпляра Trac для доступа к ним через браузер, каждый из которых имеет свой URL:

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

В первый раз, когда я получаю к ним доступ, Apache отвечает нормально, я получаю первый Trac с /trac1, затем второй в /trac2. Но когда я снова получаю доступ к /trac1, он продолжает давать мне содержимое второго Trac (/trac2). Если я прикасаюсь к файлу конфигурации.wsgi для первого (скажем, trac1.wsgi), а затем снова запрашиваю / trac1 в браузере, я снова получаю ожидаемое содержимое.

Противоположный случай работает одинаково: access /trac2, затем /trac1, затем / trac2 продолжает выдавать содержимое /trac1, пока я не коснусь trac2.wsgi...

Таким образом, кажется, что Python, mod_wsgi и / или Apache кешируют результаты или что-то в этом роде. Я не сисадмин и не могу получить больше по этому вопросу.

Файлы.wsgi и http.conf для Apache:

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

Переместите тайник с яйцами в отдельные каталоги

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
Другие вопросы по тегам