Настройка сервера. Gitolite — хостинг git-репозиториев

Содержание:


В предыдущей статье я рассказал как создать свой бесплатный (в течении года) сервер на облаке от Amazon Web Services. Пришла пора настроить на нем среду для удобной разработки.

Ниже будет описано создание собственного Git репозитория с помощью Gitolite.

Note

Все инструкции в этой статье приводятся для системы Ubuntu Oneiric, пользователь ubuntu.

Начало работы

Первые мои команды на новом сервере:

# Обновление системы (да мне нравятся свежие пакеты)
sudo apt-get update
sudo apt-get upgrade

# Утилиты для сборки
$ sudo apt-get install build-essential

# Конфигурирование локалей
$ sudo locale-gen ru_RU.UTF-8
$ sudo locale-gen en_US.UTF-8
$ sudo dpkg-reconfigure locales

Установка Gitolite

Git распределенная система контроля версий и не нуждается в хостинг-сервере. Но в таком случае для доступа к репозиторию необходим доступ к файловой системе, в которой он расположен. В противном случае для синхронизации (команды разработчиков или кода на сервере) необходим Git хостинг с сетевым доступом.

Самые распространенные решения: Gitolite и Gitosis. Я предпочитаю Gitolite из-за удобства настройки и установки.

Для начала установим Git и Gitolite из пакетов:

# Установка git и gitolite
$ sudo apt-get install git gitolite

Теперь нужно создать владельца репозиториев. Обычно используется пользователь с логином: git. Создадим его и выполним под ним настройку Gitolite:

# Создание пользователя git
$ sudo useradd -m git

# Копируем свой публичный ssh rsa ключ из домашней директории
# для настройки управления репозиторием
$ sudo cp ~/.ssh/id_rsa.pub /home/git/admin.pub

# Заходим под пользователем git и заканчиваем настройку
$ sudo su git
$ cd
$ gl-setup admin.pub

В этот момент откроется Vim с настройками репозитория по-умолчанию. Сохраняя спокойствие, нажмите :x для сохранения и выхода из редактора. Нажмите Ctrl+D для окончания сеанса пользователя git. Поздравляю первый этап настройки закончен, можете закрыть соединение с сервером, дальнейшая настройка будет произведена на вашей локальной машине.

Управление Gitolite

Управление Gitolite осуществляется с помощью специального репозитория gitolite-admin который уже создан у вас на сервере. Добавление репозиториев и пользователей, изменения конфигурации производятся через стандартные Git операции (commit, push).

Скачаем этот репозиторий на ваш локальный компьютер:

Note

Здесь, и далее, я работаю с адресом моей созданной на Amazon VPS: awsdemo.us.to. Для вас он будет отличаться. Как создать и прикрепить свой домен было рассказано в прошлой статье.

# -- Ваша локальная машина --
# git clone git@<your_vps_domain>:gitolite-admin.git
git clone git@awsdemo.us.to:gitolite-admin.git

Если вы ничего не напутали с ключами и настройками, то gitolite-admin будет скопирован на ваш компьютер.

Note

gitolite-admin включает в себя две папки. Папка keys включает в себя файлы с публичными частями rsa ключей пользователей репозитория. Папка conf содержит файлы конфигурации gitolite.

Посмотрим на файл conf/gitolite.conf:

repo    gitolite-admin
        RW+     =   admin

repo    testing
        RW+     =   @all

Он говорит нам о том, что на нашем хостинге доступно два репозитория: gitolite-admin и testing, при чем к первому из них доступ на чтение и запись имеет только пользователь с ключом сохраненным в файле keys/admin.pub, а ко второму все пользователи.

Добавим еще одну запись для нашего будущего Django-проекта, я назову его awsdemo:

repo    gitolite-admin
        RW+     =   admin

repo    testing
        RW+     =   @all

repo    awsdemo
        RW+     =   admin

Сохраним изменения и отправим их на сервер:

$ git commit -am 'Add django repo'
$ git push origin master

Теперь можно создавать сам проект и привязывать его к удаленному хостингу:

# Создание директории для будущего проекта
$ mkdir -p ~/Projects/awsdemo
$ cd ~/Projects/awsdemo

# Создание репозитория
$ git init

# Привязываем его к нашему хостингу
$ git remote add origin git@awsdemo.us.to:awsdemo.git

# Первый коммит
$ touch README
$ git add .
$ git commit -am "Initial commit"

# Отправляем изменения на сервер
$ git push origin master

  Counting objects: 3, done.
  Writing objects: 100% (3/3), 210 bytes, done.
  Total 3 (delta 0), reused 0 (delta 0)
  To git@ec2-174-129-57-41.compute-1.amazonaws.com:django.git
    * [new branch]      master -> master

Все, новый репозиторий создан и доступен для клонирования из Gitolite


Источник github.com