Доброго времени суток!
Мы знаем, как трудно разрабатывать большой программный продукт, а ведь еще сложнее разрабатывать его в команде. К счастью, нам на помощь пришли системы контроля версий, об одной из них мы сегодня и поговорим.
В настоящее время широкое распространение получила система Git. Многие программисты выбирают ее за гибкость и относительную легкость начала работы. В интернете есть множество ресурсов, предоставляющих услуги
В данной статье я расскажу процесс установки и настройки apache для работы git по протоколу webdav. Вся настройка будет производиться на сервере под управлением ОС Debian 7, но конфиги должны подойти и для других систем, даже windows.
Отговорки:
— подразумевается, что у вас уже обновлен список пакетов и сами пакеты
Итак, задача:
— запуск закрытого сервера Git с аутентификацией каждого пользователя с возможностью совместной работы над одним проектом
— использование протокола http + webdav
Для начала нам нужно установить web сервер apache2 и ядро git-core:
# apt-get install apache2 git-core
Включаем модуль dav-fs в web сервере, автоматически будет подключен модуль dav
# a2enmod web-fs
Репозиторий будем размещать на отдельном виртуальном хосте vhost.host.ru. Во всех конфигах вам нужно будет прописать свой адрес.
Для этого создадим файл виртуального хоста /etc/apache2/sites-available/vhost
<VirtualHost *:80> ServerName vhost.host.ru # ваш хост ServerAdmin admin@host.ru # необязательная директива, email адрес админа DocumentRoot /var/vhost # дириктория где расположен корень сайта SetEnv GIT_PROJECT_ROOT /var/vhost/ # дириктория где будут находиться репозитории, корень репозиториев SetEnv GIT_HTTP_EXPORT_ALL ScriptAlias / /usr/lib/git-core/git-http-backend/ <Directory /var/vhost/> AllowOverride All </Directory> <Location /> Options Indexes DAV on AuthType Basic AuthName "My Git" # сообщение при регистрации AuthUserFile /etc/apache2/gitpass # глобальный файл логинов и паролей для репозитория </Location> Include /etc/apache2/git.d/ # в этой папке будем хранить файл с конфигурацией доступов к репозиториям </VirtualHost>
Создадим файл паролей и добавим туда пользователей user1 и user2:
# htpasswd -c /etc/apache2/gitpass user1 # параметр -с нужно указывать только если файла нет
# htpasswd /etc/apache2/gitpass user2 # параметр -с нужно указывать только если файла нет
Создадим два репозитория, например repo1 и repo2:
# mkdir /var/vhost/repo1
# cd /var/vhost/repo1
# git init --bare
# mkdir /var/vhost/repo2
# cd /var/vhost/repo2
# git init --bare
Для хранения доступов к репозиториям создадим файл /etc/apache2/git.d/repos:
<Location /repo1.git> Require user user1 user2 </Location> <Location /repo2.git> Require user user2 </Location>
Таким образом мы указали, что к репозиторию repo1 будут иметь доступ два пользователя user1 и user2. А к репозиторию repo2 только один user2
Для того чтобы изменения вступили в силу, заставим web сервер перечитать файл настроек командой:
# /etc/init.d/apache2 reload
Послесловие
Пожалуй, самый первый вопрос, который может у вас возникнуть это «зачем прописывать доступы к репозиториям, почему не сделать по файлу .htaccess в каждом репозитории?»
Ответ. Потому, что при подключении webdav, дириктивы из этого файла начинают игнорироваться. Почему так происходит, не знаю. Если вы знаете, я буду рад узнать верный ответ.