Предоставление web-интерфейса к Mercurial-репозиторию с помощью Apache, mod_wsgi с ограничением доступа
Ставим всё что надо, в убунту это выглядит примерно так:
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» используется «/».
3 коментарі
Підписатись на коментаріВідписатись від коментарів Коментарі можуть залишати тільки користувачі з підтвердженими акаунтами.