На днях припекло и я решил-таки выставить в сеть репозитории в сеть по http.

Ясное дело, что выставлять их read-write - не кошерно, в мире много тупых ублюдков, которым лишь бы сломать что и нагадить.

Итак, что нам понадобится, чтобы репозиторий стал доступен? Нам понадобится сам репозиторий, Apache и mod_wsgi, ну и конечно работающий hg.

Я не буду описывать как настраивать nginx, чтобы он запроксировал запросы в апач, ибо предполагаю, что эта тема уже известная.

В апаче достаточно прописать вот такой сниппет:

WSGIScriptAlias /hg "/var/www/htdocs/hg/hgweb.wsgi"

<Directory /var/www/htdocs/hg>
        Require all granted
        AllowOverride All
        AddHandler wsgi-script .wsgi
</Directory>

Далее, репозиторий надо разместить не в docroot сервера, соответственно, в /var/www/htdocs/hg мы кладём 2 файлика.

/var/www/htdocs/hg/hgweb.config:

[paths]
/ = /путь/до/кататлога/с/репозиториями/*

[web]
baseurl = /hg

/var/www/htdocs/hg/hgweb.wsgi:

# -*- coding: utf-8 -*-
config = "/var/www/htdocs/hg/hgweb.config"

# Uncomment to send python tracebacks to the browser if an error occurs:
#import cgitb; cgitb.enable()

# enable demandloading to reduce startup time
from mercurial import demandimport; demandimport.enable()

from mercurial.hgweb import hgweb
application = hgweb(config)

Перезапускаем Апач и вуаля, репозиторий доступен по http://web.site/hg

Next Post