Поиск:

Поиск по:

Результаты поиска по запросу «»
Найдено совпадений
По вашему запросу ничего не найдено
.
Показать еще

Настройка gitolite на хостинге NetAngels

В данной статье рассматривается разворачивание и настройка системы управления проектами git на базе gitolite на тарифах shared-хостинга.

Если вас интересуют базовые сведения по работе с git на нашем хостинге, рекомендуем статью Работа с git на хостинге NetAngels.

Что такое gitolite

Предположим, вы уже давно используете git в своей работе и у вас есть несколько репозиториев git, с которыми вы работаете в составе вашей команды. Рано или поздно у вас возникает необходимость разделить права доступа к разным репозиториям между членами команды. Поскольку стандартными средствами git в рамках одной учетной записи на удаленном сервере этого никак не достичь, на помощь приходит gitolite.

Один аккаунт, два ключа. Как быть?

Обычно для развертывания gitolite используется отдельный аккаунт на сервере и у этого аккаунта при настройке gitolite отзывается возможность обычного входа по ssh, а вместо этого ssh сессия устанавливается с gitolite. В случае shared хостинга такой подход скорее всего не применим, потому что у вас всего один аккаунт для входа на сервер и если действовать стандартным методом по официальной документации, то у вас либо будет ssh для входа в консоль сервера, либо ssh для gitolite. А можно ли сделать так, чтобы было и то, и другое? Да, но для этого вам потребуется создать для gitolite отдельную пару ssh-ключей.

Создаем ключ администратора

Авторизация в gitolite завязана на ssh-ключи, поэтому для работы вам потребуется для каждого участника вашей команды сгенерировать пару ключей: публичный и приватный.

Если вы пользуетесь Windows и программой PuTTY, о том, как сгенерировать соответствующую пару ключей вы можете прочитать в статье: ssh-доступ к аккаунту. Приватную часть сгенерированного ключа вам необходимо положить в папку .ssh вашей домашней директории в файл id_rsa если вы пользуетесь консольной версией git из официального пакета (Git Bash).

Если вы являетесь пользователем unix-систем, например Linux или Mac OS, то сгенерировать пару ключей можно в консоли командой:

user@mac:~$ ssh-keygen -f .ssh/gitolite
Generating public/private rsa key pair.
Enter passphrase (empty for no passphrase):
Enter same passphrase again:
Your identification has been saved in .ssh/gitolite.
Your public key has been saved in .ssh/gitolite.pub.
The key fingerprint is:
8e:21:9b:04:37:df:96:f9:c9:17:2f:26:25:2b:8e:93 user@mac.local

У вас запросят пароль для доступа к ключу. Можно либо указать какой-либо пароль, тогда для всех операций с этим ключом потребуется его вводить для подтверждения своих полномочий, либо не указывать никакого пароля и тогда работа с этим ключом никакого ввода паролей не потребует.

Вы наверняка обратили внимание, что в отличие от windows версии мы назвали нашу пару вновь сгенерированных ключей не id_rsa, а gitolite. Это сделано намеренно, потому что id_rsa у вас наверняка уже используется для доступа к серверам, а нам нужен отдельный ключ для gitolite. В случае Windows программа PuTTY хранит свои ключи не в папке .ssh, а в реестре, поэтому там коллизии при использовании разных ключей для PuTTY и Git Bash не возникает.

Копируем ключ администратора на сервер хостинга

С помощью любой программы передачи файлов нужно скопировать публичную часть вашего ключа на сервер хостинга. В данном случае для удобства на сервере мы называем копию нашего публичного ключа - admin.pub, хотя у нас на компьютере этот файл называется gitolite.pub. Так же Вы можете назвать ваш ключ в соответствии с вашим ником, если планируется что администраторов в вашем gitolite будет несколько, например vasily_pupkin.pub.

Для linux/mac скопировать ключ можно так:

user@mac:~$ rsync -av .ssh/gitolite.pub uXXXXX@uXXXXX.netangels.ru:admin.pub

Прячем наш основной ключ от gitolite

Если у вас на сервере хостинга уже размещен ваш основной публичный ключ ssh, он наверняка был вами положен в файл .ssh/authorized_keys. В этот же файл gitolite будет складывать и свои ключи. Поэтому, чтобы отделить ключи gitolite от ключей для доступа в консоль мы просто предлагаем переименовать файл .ssh/authorized_keys в .ssh/authorized_keys2. Все ключи для консоли теперь будут храниться в authorized_keys2.

Инициализируем gitolite на сервере хостинга

Для инициализации gitolite необходимо зайти на сервер хостинга по ssh, вызвать команду gl-setup и передать ей ключ администратора, который мы скопировали на сервер на предыдущем этапе:

user@mac:~$ ssh uXXXXX@uXXXXX.netangels.ru
uXXXXX@beN:~$ gl-setup admin.pub
The default settings in the rc file (/home/uXXXXX/.gitolite.rc) are fine for most
people but if you wish to make any changes, you can do so now.

hit enter...
creating gitolite-admin...
Initialized empty Git repository in /home/uXXXXX/repositories/gitolite-admin.git/
creating testing...
Initialized empty Git repository in /home/uXXXXX/repositories/testing.git/
[master (root-commit) 00f8a05] start
 2 files changed, 6 insertions(+), 0 deletions(-)
 create mode 100644 conf/gitolite.conf
 create mode 100644 keydir/admin.pub

Вам будет предложено отредактировать конфигурационный файл gitolite (мы рекомендуем ничего в нем не менять и просто нажать Ctrl+x для выхода из редактора nano), после чего gitolite создаст папку repositories и в ней два репозитория: gitolite-admin.git и testing.git.

На этом настройка серверной части gitolite закончена. Остается настроить ваш компьютер так, чтобы он автоматически подставлял правильный ключ при заходе на сервер по ssh и при работе с репозиториями в gitolite.

Настраиваем разделение ключей

Чтобы отделить ключ для консоли от ключа для gitolite мы просто воспользуемся стандартными возможностями ssh. А именно: мы будем по ssh на сервер заходить по адресу uXXXX.netangels.ru, а с gitolite работать по имени любого из ваших доменов. Лучше всего создать в панели управления хостингом в разделе DNS отдельную A-запись в вашем домене с ip-адресом таким же как у сервера хостинга и назвать ее, например, git.yourdomain.ru (где yourdomain.ru - это какой-то ваш домен).

Если вы являетесь пользователем linux/mac, то теперь вам необходимо в файл ~/.ssh/config написать следующие строки:

Host uXXXXX.netangels.ru
    User uXXXXX
    IdentityFile /Users/user/.ssh/id_rsa

Host git.yourdomain.ru
    User uXXXXX
    IdentityFile /Users/user/.ssh/gitolite

Host *
    IdentitiesOnly yes

В случае если вы пользуетесь Windows и используете PuTTY и Git Bash, файл ~/.ssh/config вам не потребуется.

Работаем с административным репозиторием gitolite-admin.git

Первым делом для работы с gitolite-admin.git вам необходимо склонировать его к себе на комьютер. Для этого выполняем:

user@mac:~/Dev$ git clone git.yourdomain.ru:gitolite-admin.git
Cloning into 'gitolite-admin.git'...
remote: Counting objects: 6, done.
remote: Compressing objects: 100% (4/4), done.
remote: Total 6 (delta 0), reused 0 (delta 0)
Receiving objects: 100% (6/6), done.

Готово. Теперь можно создать новый проект в gitolite. Для этого редактируем файл conf/gitolite.conf и добавляем в него строки:

repo    myproject
        RW+ = @all

После чего фиксируем наши изменения и отправляем их на сервер в gitolite:

user@mac:~/Dev/gitolite-admin.git$ git add .
user@mac:~/Dev/gitolite-admin.git$ git commit -m 'new project myproject'
[master 2324608] new project myproject
 1 file changed, 3 insertions(+)
user@mac:~/Dev/gitolite-admin.git$ git push
Counting objects: 7, done.
Delta compression using up to 4 threads.
Compressing objects: 100% (3/3), done.
Writing objects: 100% (4/4), 376 bytes, done.
Total 4 (delta 1), reused 0 (delta 0)
remote: creating myproject...
remote: Initialized empty Git repository in /home/uXXXXX/repositories/myproject.git/
To git.yourdomain.ru:gitolite-admin.git
   00f8a05..2324608  master -> master

Вот и все, теперь мы можем работать со вновь созданным проектом. В дальнейшем управлять пользователями и их правами доступа к проектам в рамках gitolite вы будете через внесение изменений в репозиторий gitolite-admin.git.

Заключение

Мы произвели все настройки, разобрались как администрировать gitolite, в частности как создавать новые репозитории и как наделять наших коллег правами к этим репозиториям. Осталось понять как клонировать вновь созданные репозитории к себе на компьютер и как же теперь заходить по ssh.

Клонирование репозиториев делается аналогично клонированию репозитория gitolite-admin.git, а именно:

$ git clone git.yourdomain.ru:myproject.git

Обратите внимание, что мы обращаемся к репозиторию по адресу git.yourdomain.ru.

Для входа по ssh для linux/mac мы используем другой адрес: uXXXXX.netangels.ru не смотря на то, что фактически это один и тот же аккаунт:

$ ssh uXXXXX.netangels.ru

Имя пользователя указывать уже не обязательно, потому что оно прописано у нас в .ssh/config.

Регистрация доменов

в зонах .RU .РФ

от 200 рублей Зарегистрировать домен

SSL сертификаты

Подтверждение сайта и надежная защита

передаваемых данных

Купить сертификат

Облачные VDS

дешевле чашки кофе

Процессорных ядер: 4, Память: 4 Гб, Диск: 20 Гб SSD, Резервное копирование

от 35 р/день Заказать VDS

Все, что нужно от хостинга

Простое решение для вашего сайта

Подробнее

Хранилище данных

Храни что хочешь по смешным ценам

Почасовая оплата за размещенные данные.

Заказать хранилище