В данной заметке я покажу, как настроить простенькую конфигурацию для системы контроля версий измененных файлов и централизованного использования для последующего распространения аутентификационных файлов.
Произвожу обновление репозитариев применительно в системе Ubuntu 12.04 Desktop/Server:
ekzorchik@monitor:~$ sudo apt-get update
ekzorchik@monitor:~$ sudo apt-get install mercurial
ekzorchik@monitor:~$ sudo apt-get install apache2 -y
ekzorchik@monitor:~$ sudo nano /etc/apache2/apache2.conf
ServerName monitor
Далее создаю директорию, которая будет являться центральной по отношения к файлам которая будет основным хранилищем измененных файлов для Mercurial:
ekzorchik@monitor:~$ sudo mkdir -p /var/hg/repository
ekzorchik@monitor:~$ sudo chown -R www-data:www-data /var/hg/repository/
Далее копирую конфигурационный файл репозитариев:
ekzorchik@monitor:~$ cd /var/hg
Файл hgweb.cgi распространяется вместе с инсталляцией Mercurial’а – скопирую его в нашу папку /var/hg:
ekzorchik@monitor:/var/hg$ sudo cp /usr/share/doc/mercurial/examples/hgweb.cgi
и разрешу ему исполняться:
ekzorchik@monitor:/var/hg$ sudo chmod a+x hgweb.cgi
Далее укажу до файла hgweb.cgi для директивы config:
ekzorchik@monitor:/var/hg$ sudo nano /var/hg/hgweb.cgi
нужно заменить в директиве config (было: config = “/path/to/repo/or/config”) путь до каталога, вкотором располагается конфиг (стало: config = “/var/hg/hgweb.config”)
Далее создадим файл /var/hg/hgweb.config где пропишу путь до каталога на файловой системе где будут располагаться репозитарии:
ekzorchik@monitor:~$ sudo nano /var/hg/hgweb.config
[collections]
/var/hg/repository = /var/hg/repository
Финальным шагом, создам обработчик префикса /hg при обращении к которому Web-сервис Apache 2 будет исполнять скрипт ответственный за доступ к репозитарию:
ekzorchik@monitor:~$ sudo nano /etc/apache2/sites-available/default
ScriptAlias /hg "/var/hg/hgweb.cgi"
<Directory "/var/hg/hgweb.cgi">
AuthType Basic
AuthName "Mercurial repositories"
AuthUserFile /var/hg/hgusers
Require valid-user ekzorchik
</Directory>
</VirtualHost>
Создам файл с паролем для указанного пользователя:
ekzorchik@monitor:~$ sudo htpasswd -c /var/hg/hgusers ekzorchik
New password: 712mbddr@@
Re-type new password: 712mbddr@@
Adding password for user ekzorchik
Для применения внесенных изменений в apache, перезагружаю сервис:
ekzorchik@monitor:~$ sudo apache2ctl restart
Для того, чтобы ограничить права на запись (операция push) или на чтение я буду использовать файл hgrc:
ekzorchik@monitor:~$ sudo nano /etc/mercurial/hgrc
allow_push = *
push_ssl = false
Продемонстрирую работу всех выше проделанных настроек, для этого создам каталог testik и сделаю его репозитарием содержимого:
ekzorchik@monitor:~$ sudo mkdir -p /var/hg/repository/testik
ekzorchik@monitor:~$ cd /var/hg/repository/testik/
ekzorchik@monitor:/var/hg/repository/testik$ sudo hg init
Загрузить тестовый репозитарий через http можно следующим образом в любую директорию, в которую возникла надобность:
ekzorchik@monitor:/var/www$ sudo hg clone http://monitor/hg/testik
destination directory: testik
no changes found
updating to branch default
0 files updated, 0 files merged, 0 files removed, 0 files unresolved
ekzorchik@monitor:/var/www$ ls -l
total 8
-rw-r–r– 1 root root 177 Nov 27 22:36 index.html
drwxr-xr-x 3 root root 4096 Nov 28 12:47 testik – а вот и загруженный каталог с тестового репозитария.
Стоит также не забыть добавить разрешение в правила IPTables чтобы подключаться на 80 порт этой системы:
ekzorchik@monitor:~$ sudo iptables -A INPUT -s 192.168.1.0/24 -m state --state NEW -p tcp --dport 80 -j ACCEPT
Теперь попробую обратиться с другой станции в этой же сети по ссылке в браузере: 192.168.1.13/hg
Ввожу учетные данные:
User Name: ekzorchik
Password: 712mbddr@@
И передо мной предстоёт история работы с тестовым репозитарием:
Отлично, это же, что получается мы в одном каталоге складываем файлы (это могут быть ключ доступа к серверам, нужные файлы), а потом просто переходим в нужный каталог и с репозитария выкачиваем эти данные в нужный каталог.
В дальнейшем я покажу, что еще можно сделать с данным функционалом, а пока собственно и все, с уважением автор блога ekzorchik.