Пару хаков для запуска hgweb и Trac на lighttpd
Есть в lighttpd одна проблемка с переменной PATH_INFO. От параметра "broken-scriptfilename" почему-то толку 0 :.
Вот пару скриптов для запуска Trac и HGweb через fcgi:
- для запуска Trac в корневом каталоге сайта (нашёл в сети, хотя там была одна ошибка):
#!/usr/bin/env python try: from flup.server.fcgi import WSGIServer except ImportError: from trac.web._fcgi import WSGIServer from trac.web.main import dispatch_request import tempfile import os os.environ['PYTHON_EGG_CACHE'] = tempfile.gettempdir() def application(environ, start_request): environ['PATH_INFO'] = environ['SCRIPT_NAME'] + environ['PATH_INFO'] environ['SCRIPT_NAME'] = '' return dispatch_request(environ, start_request) if __name__ == '__main__': WSGIServer(application).run()
Для hgwebdir.cgi достаточно добавить что-то вроде:
os.environ['SCRIPT_NAME'] = "/hg"
hgwebdir.fcgi для запуска в корне сайта:
from mercurial import demandimport; demandimport.enable() from mercurial.hgweb.hgwebdir_mod import hgwebdir from flup.server.fcgi import WSGIServer def make_web_app(): return hgwebdir("hgweb.config") def wsgiapplication(app_maker): application = app_maker() def run_wsgi(env, respond): env['PATH_INFO'] = env['SCRIPT_NAME'] + env['PATH_INFO'] env['SCRIPT_NAME'] = '' return application(env, respond) return run_wsgi WSGIServer(wsgiapplication(make_web_app)).run()
Возможно кому-то пригодится