Допустим у нас есть хост с именем repo.example.com, на нём должен находиться наш репозиторий с исходными кодами, к которому мы будем обращаться по протоколу http.
Ранее я уже рассказывал, как реализовать подобное решение на apache2:
А вот краткая инструкция пользователя:
Ранее я уже рассказывал, как реализовать подобное решение на apache2:
А вот краткая инструкция пользователя:
Установка пакетов
Для настройки данного решения нам понадобится веб-сервер и система управления репозиторием mercurial:
apt-get instal nginx mercurial mercurial-server apache2-utils
Настройка Mercurial
Подправим файл конфигурации 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 при старте сервера
Чтобы не захламлять систему самописными init скриптами можно воспользоваться уже готовым решение на базе rc.local
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
Далее выполни настройку vhost'a 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
И так, у нас в конфигурации nginx указан vhost repo.example.com его можно для теста прописать в /etc/hosts, а потом, если это необходимо, на DNS-сервере.
sudo mcedit /etc/hostsДопишем в конец строку вида:
192.168.1.15 repo.example.comТеперь когда мы выполняем ping, видно, что адрес резолвится.
Настройка клиента Mercurial
Подправим нашу локальную конфигурацию:
mcedit ~/.hgrc
Добавил что-то типа:
[ui]
username = tux@laptop
Чтобы явно идентифицировать нас.
Тестируем
На удалённом хосте где расположен наш web-репозиторий:
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
Комментариев нет:
Отправить комментарий