Настройка mercurial сервера используя nginx и ssl. » IT FOundation – Поваренная книга системного администратора.
Только нужная и полезная документация. Регистрируйтесь, пишите, комментируйте!
21 декабря 2009

Настройка mercurial сервера используя nginx и ssl.

опубликовано в Linux |

Раньше или позже при работе коллектива программистов над одним проектом встает необходимость контролировать версионность программы и внесенные изменения. Одной из лучших программ для этого на мой взгляд является mercurial, написанная на python.
Будем считать что в системе уже стоит работаюшйи сервер nginx.
Установим mercurial, для Gentoo это будет выглядеть следующим образом:
# emerge mercurial
Все рабочие проекты мы будем держать в директории /home/hg
Создадим пользователя под которым будет работать сервер mercurial, назовем пользователя hg.
# useradd -m -d /home/hg hg
Далее создадим директорию в которой будут лежать проекты
sudo -u hg mkdir /home/hg/rep

После этого можно проинициализировать проект, все действия необходимо выполнять от созданного пользователя hg. Назовем наш проект к примеру project1.
# su hg
# hg init /home/hg/rep/project1

Теперь необходимо отредактировать файл отвечающий за публикацию проектов,
# vim /home/hg/rep/project1/hgweb.config
и внести в него путь к нашему репозитарию:
[collections]
/home/hg/rep = /home/hg/rep

Левая часть это префикс пути, который необходимо убрать из URL адреса, а правая часть это полный путь к каталогу, где содержатся репозиторий.
Если к примеру левая часть была бы равна “/”, то адрес для доступа к репозиторию выглядел бы следующим образом:

https://examplehg.org/home/hg/rep/project1

Теперь можно отредактировать файл отвечающий за доступ к репозиторию:
# vim /home/hg/rep/project1/.hg/hgrc
и внесем в него:

[web]
style = gitweb
push_ssl = false
allow_push = *

Этим самым мы отключаем встроенный механизм ssl, и разрешаем всем вносить изменения, так как аутентификация будет проходить средствами nginx.

Перейдем к настройке nginx.

# vim /etc/nginx/nginx.conf
и внесем в него:
server {
listen 443;
server_name example.org;
access_log /var/log/nginx/logs/hg/access.log;
error_log /var/log/nginx/logs/hg/error.log;

ssl on;
ssl_protocols SSLv3 TLSv1;
ssl_certificate /etc/ssl/ng/cert.pem;
ssl_certificate_key /etc/ssl/ng/cert.key;
ssl_session_timeout 5m;
ssl_prefer_server_ciphers on;
ssl_session_cache shared:SSL:1m;
ssl_ciphers ALL:!ADH:!EXPORT56:RC4+RSA:+HIGH:+MEDIUM:+LOW:+SSLv2:+EXP:+eNULL;

auth_basic "mercurial server";
auth_basic_user_file /etc/nginx/.hg.htpasswd;
location / {
proxy_pass http://127.0.0.1:8080;
}
}

Создадим файл аутентификации c пользователем hguser:
htpasswd -c /etc/nginx/.hg.htpasswd hguser

Теперь можно перезапустить nginx
# /etc/init.d/nginx restart

и запустить службу mercurial:
# sudo -u hg hg serve -E /tmp/hg --webdir-conf /home/hg/rep/project1/hgweb.config --address 127.0.0.1 --port 8080 --encoding utf8

Теперь можно протестировать сервер.



Написать комментарий


шесть × = 54