Предоставление web-интерфейса к Mercurial-репозиторию с помощью Apache, mod_wsgi с ограничением доступа
dengerОпубликовано 2.04.2009 в Разработка, Статьи
Ставим всё что надо, в убунту это выглядит примерно так:
aptitude install libapache2-mod-wsgi mercurial
Требуемые файлы:
- wsgi-скрипт меркуриала
- конфиг для wsgi-скрипта, здесь задаются адреса репозитариев
- конфиг апача, у меня /etc/apache2/sites-enabled/hgwebdir
- один или несколько репозитариев mercurial
hgwebdir.wsgi — где-то в файловой системе
#!/usr/bin/python
import os
os.environ['HGENCODING'] = 'utf-8'
from mercurial.hgweb.hgwebdir_mod import hgwebdir
from mercurial.hgweb.request import wsgiapplication
path = os.path.dirname(os.path.abspath(__file__))
application = hgwebdir(path+'/hgwebdir.config')
hgwebdir.config — в той же папке, что и hgwebdir.wsgi
[web]
style = coal
[paths]
pybb = /home/denger/work/pybb
byteflow = /home/denger/work/byteflow
Апач у меня почти дефолтный, ставился из пакетов. Файл default в папке sites-enabled я переименовал (на самом деле там сделано через симлинки, но это не важно).
<VirtualHost *:80>
ServerAdmin webmaster@localhost
DocumentRoot /var/www/
WSGIProcessGroup hgdir
WSGIDaemonProcess hgdir user=denger group=www-data threads=2 maximum-requests=1000
WSGIScriptAlias /hg /home/denger/work/hgwebdir.wsgi
<Location /hg>
AuthType Basic
AuthName "Restricted Files"
AuthUserFile /home/denger/hgpasswd
Require valid-user
</Location>
</VirtualHost>
Создаётся файл с паролями примерно так:
denger@bioreactor:~$ htpasswd -c hgpasswd denger
New password:
Re-type new password:
Adding password for user denger
denger@bioreactor:~$ htpasswd hgpasswd user
New password:
Re-type new password:
Adding password for user user
Пароль запрашивается как через браузер, так и при работе с репозитарием из командной строки.
denger@bioreactor:~/tmp$ hg clone http://localhost/hg/pybb/
destination directory: pybb
http authorization required
realm: Restricted Files
user: anonymous
password:
abort: authorization failed
denger@bioreactor:~/tmp$ hg clone http://localhost/hg/pybb/
destination directory: pybb
http authorization required
realm: Restricted Files
user: denger
password:
requesting all changes
adding changesets
adding manifests
adding file changes
added 141 changesets with 816 changes to 310 files
updating working directory
145 files updated, 0 files merged, 0 files removed, 0 files unresolved
denger@bioreactor:~/tmp$ cd pybb
denger@bioreactor:~/tmp/pybb$ hg inc
comparing with http://localhost/hg/pybb/
http authorization required
realm: Restricted Files
user: denger
password:
searching for changes
no changes found
Можно использовать без авторизации, просто удаляется весь блок из конфига апача (файл с паролями разумеется тоже не требуется). Можно ставить в корень сайта, тогда в директивах WSGIScriptAlias /hg … и вместо “/hg” используется “/”.
Понравилась статья? Подпишись на обновления по RSS/E-mail

(5 голосов, средний: 4.8 из 5)
Странная статья. Ни цели действий, ни задач, которые решаются. Даже на методичку (howto) не тянет…
Цель — удобный доступ к репозитариям.
Задача – веб-интерфейс к нескольким репозитариям, с возможностью коммита.
Немного допишу, как только смогу зайти через openid, сейчас не пускает:(
Огромное спасибо – очень пригодилось!