質問: { sethandler => "mod_python", pythoninterpreter => "main_interpreter", pythonhandler => "trac.web.modpython_frontend", pythonoption => $tracpath, pythonoption => $tracuri }; if ( $@ ) { warn $@ } return ok; } else { return declined; } }); </perl> それは私の初めてのperlスクリプトなので、よくわかりません。問題を解決するtracにcgiを使用することは可能ですが、mod_pythonよりも約100倍遅くなります。
回答: mod_pythonをmod_wsgiに変更します。この構成では、環境変数を使用してtrac_pathを設定できます。サンプルの静的構成からの抜粋: 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] rewriteruleのサブドメインまたはドメインを[e = ...]に取得する方法をテストして解決する必要があります。envを設定するときにpatternからの後方参照を使用できます([e=trac.env_path:%1]など。[e=trac.env_path:%{http_host}]などの他のenv変数を使用できるかどうかはわかりませんが、ドキュメントにはありません。これについて何か言ってください。あなたはそれができるはずだと思います。そうでない場合は、rewriterulesを使ったもう少し魔法が役立つかもしれません。参照用のtrac-stable.wsgi: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 後のアイデア-[e=trac.env_path:%{http_host}]を使用できない場合は、env変数を使用して必要なだけ渡し、trac-stable.wsgi内にenv.env_pathを作成できます。