Eu mudaria o mod_python para mod_wsgi. Nesta configuração você pode definir TRAC_PATH com uma variável env.
Alguns trechos da configuração estática de amostra:
WSGIDaemonProcess tracproc user=www-data group=www-data processes=1 threads=25
WSGIProcessGroup tracproc
<Directory /srv/wsgi>
WSGIProcessGroup tracproc
Order deny,allow
Allow from all
WSGIApplicationGroup %{GLOBAL}
</Directory>
<Location /trac>
Require valid-user
AuthType Basic
...
</Location>
WSGIScriptAlias /trac /srv/wsgi/trac-stable.wsgi
RewriteCond %{REQUEST_URI} ^/trac/ [OR]
RewriteCond %{REQUEST_URI} ^/trac$
RewriteRule . - [E=trac.env_path:/srv/tracenv]
Você teria que testar e descobrir como obter subdomínio ou domínio no RewriteRule para [E = ...].
Você pode usar referências anteriores de padrão ao definir o env (como [E=trac.env_path:%1]
. Não tenho certeza se você pode usar outras variáveis env como [E=trac.env_path:%{HTTP_HOST}]
, a documentação não diz Eu acho que você deveria ser capaz de fazer isso, se não, então um pouco mais de magia com o RewriteRules pode ajudar.
trac-stable.wsgi para referência:
import sys
sys.stdout = sys.stderr
# when Trac is not in default python sitedir
#import site
#site.addsitedir('/opt/trac-0.11/lib/python2.5/site-packages')
__requires__ = 'Trac=0.11.6'
from pkg_resources import load_entry_point
import os
os.environ['PYTHON_EGG_CACHE'] = '/srv/python_eggs'
os.environ['LC_TIME'] = 'pl_PL.UTF-8'
import trac.web.main
application = trac.web.main.dispatch_request
Idéia posterior - se não for possível usar [E=trac.env_path:%{HTTP_HOST}]
, você pode passar o quanto precisar com as variáveis env e construir o env.env_path dentro do trac-stable.wsgi.