Ранее я уже рассказывал, как реализовать подобное решение на apache2:
А вот краткая инструкция пользователя:
Установка пакетов
apt-get instal nginx mercurial mercurial-server apache2-utils
Настройка Mercurial
sudo mcedit /var/lib/mercurial-server/repos/hgwebdir.conf
Добавим в него:
[web]
style = coal
allow_push = *
push_ssl = no
[paths]
/ = /var/lib/mercurial-server/repos/*
Теперь сгенерируем файл паролей, в котором будут храниться наши пользователи:
sudo htpasswd -c /var/lib/mercurial-server/repos/.htpasswd username
Теперь пофиксим права доступа:
sudo chown -R hg:hg /var/lib/mercurial-server
Автоматический запуск Mercurial при старте сервера
sudo mcedit /etc/rc.local
Добавим следующую строку (перед словом exit внизу):
/usr/bin/hg serve -d -A /var/log/hg_access.log -p 8080 -a 127.0.0.1 --pid-file /var/run/hgserver.pid --encoding utf8 --webdir-conf /var/lib/mercurial-server/repos/hgwebdir.conf
Чуть поподробнее о ключах:
- Режим serve - (это не ошибка, он так называется) работать в режиме web-сервера
- -d - Демонизация, то есть программа отпустит консоль и уйдёт в фоновый режим
- -p - Порт
- -a - На каком сетевом интерфейсе демон будет работать
- --pid-file - Тут будет храниться его pid
- --encoding - Кодировка по умолчанию
- --webdir-conf - Конфигурация репозиториев
Ну и запустим сам сервер, чтобы не перезапускать компьютер:
sudo /usr/bin/hg serve -d -A /var/log/hg_access.log -p 8080 -a 127.0.0.1 --pid-file /var/run/hgserver.pid --encoding utf8 --webdir-conf /var/lib/mercurial-server/repos/hgwebdir.conf
Конфигурация Nginx
sudo mcedit /etc/nginx/sites-available/repo
Добавим в него следующую конфигурацию:
server
{
listen 80;
server_name repo.example.com;
client_max_body_size 128M;location /
{
proxy_pass http://127.0.0.1:8080;
auth_basic "Restricted";
auth_basic_user_file /var/lib/mercurial-server/repos/.htpasswd;
}
}
Теперь активируем её:
sudo ln -s /etc/nginx/sites-available/repo /etc/nginx/sites-enabled/
Теперь рестартуем сервер:
sudo /etc/init.d/nginx restart
или (на любителя)
sudo service nginx restart
Правки DNS
sudo mcedit /etc/hosts
Допишем в конец строку вида:
192.168.1.15 repo.example.com
Теперь когда мы выполняем ping, видно, что адрес резолвится.
Настройка клиента Mercurial
mcedit ~/.hgrc
[ui]
username = tux@laptop
Тестируем
sudo su -l hg
cd repos
hg init testrepo
exit
На локальной машине:
hg clone http://repo.example.com/testrepoecho 'asd' > test.txthg statushg addremovehg commit -m 'тестовая запись'hg push