Четверг, 12 Февраль 2009
git: создаем хостинг
Как оказалось, в современном debian создать хостинг для git репозитория, не просто просто, а очень просто.
Начнем мы ставить, на сервере, софт. Понадобиться нам gitosis git-core. Говорим волшебное заклинание:
sudo aptitude install gitosis git-core
Следующим шагом надо создать gitosis хостинг:
sudo -H -u gitosis gitosis-init < .ssh/authorized_keys2
Да, авторизация будет происходить только по ключам.
Дальше, надо разрешить выполненение post-update хука:
sudo chmod 755 /srv/gitosis/repositories/gitosis-admin.git/hooks/post-update
Теперь нам нужен git-daemon, который бы раздовал все что мы делаем (этот шаг нужен, если мы хотим разрешить всем read only доступ):
sudo update-inetd --group OTHER --add 'git\tstream\ttcp\tgitosis\tgitosis\t/usr/bin/git\tgit daemon --inetd --export-all --base-path=/srv/gitosis/repositories/'
Все, на этом настройка сервера закончена. Теперь начинаем настраивать, собственно, хостинг. Прелесть этой системы в том что все управление делается через git :).
Давайте, для начала, возьмем себе административный репозиторий:
git clone gitosis@SERVER:gitosis-admin.gi
Мы получим репозиторий, в котором будет лежать директория keydir
. В ней лежат публичные ключи людей, которые имеют доступ к нагему хостингу. В качестве имени файла используется его имя из открытого ключа. Т.е. что бы добавить человека нужно, просто, добавить его ключ.
Для премера, мы создадим группу developer и testers, группа developers будет иметь доступ к двум проектам на запись (project1-dev и project2-dev) и к проекту группы testers на чтение. Группы testers наоборот.
[group quux]
members = joe@joe smith@smith
writable = projeect1-dev project2-dev
readonly = testers
[group quux]
members = max@max john@john
writable = testers
readonly = projeect1-dev project2-dev
Теперь осталось только сделать commit…
Если сделать доступ, через git-daemon, то любой, сможет прочитать эти проекты.
Комментарии
Хочу обратить внимание, что все действия с репозиториями нужно совершать от имени пользователя gitosis иначе ssh все запросы перенаправит в домашние директории других пользователей.
Более подробный вариант статьи: http://scie.nti.st/2007/11/14/hosting-git-repositories-the-easy-and-secure-way [EN]
Вообще я думал что понятно всем, что надо работать с репозиторием от пользователя gitosis, т.е. перенося доступ с системы на gitosis.
Форма комментирования для «git: создаем хостинг»