Собственный хостинг репозиториев с помощью GitLab

Любая команда разработчиков рано или поздно сталкивается с необходимостью использования системы контроля версий. Иначе отслеживать изменения в коде проектов становится сложно. Причем чем крупнее проекты и команды — тем сложнее. Сегодня систем контроля версий существует великое множество, одна лучше другой. Так что же выбрать? Наша команда остановилась на GitLab.

gitlab-projectGitLab — это веб-приложение для хостинга исходного кода проектов, основанное на системе контроля версий Git. Своим функционалом GitLab очень напоминает GitHub, однако заточен под командную работу, в то время как GitHub отдает предпочтение индивидуальной работе.

Страница прав доступа к проекту

Страница прав доступа к проекту

Техническая справка

Git — распределённая система управления версиями файлов. Проект был создан Линусом Торвальдсом для управления разработкой ядра Linux. Git используют такие проекты, как Chromium, jQuery, PHP, MediaWiki и прочие. Программа является свободной и выпущена под лицензией GNU GPL версии 2.

Статья о Git на Википедии

GitLab существует как в виде SAAS — веб-сайта с открытой регистрацией, так и в качестве индивидуального решения — GitLab Community Edition, которое можно установить на свой сервер и настроить под собственные нужды. Процесс установки достаточно долгий и требует root-доступа к серверу. Для стабильной работы GitLab требует от сервера как минимум двухъядерный процессор и 2 Гб ОЗУ. Такая конфигурация обеспечит быструю работу приложения и поддержку до 500 пользователей. GitLab поддерживает множество различных дистрибутивов Linux, но инструкция по установке расчитана на Debian/Ubuntu.

Установка

Установку можно разбить на несколько этапов:

  • установка необходимых системных утилит
  • установка Ruby
  • создание пользователя для SSH-подключений к GitLab
  • установка и настройка GitLab Shell
  • установка и настройка базы данных
  • установка и настройка самого GitLab
  • установка и настройка Nginx

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

Установка необходимых системных утилит

Для установки и настройки всех компонент, необходимых для работы GitLab, нам понадобятся: утилита sudo, набор библиотек для компиляции Ruby, актуальная версия Git и почтовый сервер.

Перед установкой каких-либо пакетов через утилиту apt-get, следует обновить список источников и существущие пакеты, выполнив в консоли такие команды:

Здесь и далее команды нужно выполнять от имени пользователя root.

Первой в списке необходимых компонент идет утилита sudo. Она установлена на большинстве эксплуатируемых серверов. Но если вдруг ваш сервер совсем чист и непорочен, для ее установки необходимо выполнить в консоли следущую команду:

Теперь установим библиотеки для компиляции Ruby:

Убедитесь, что на сервере установлен git, и его версия не ниже 1.7.10:

Если установлена устаревшая версия, нужно удалить ее:

Если git не установлен либо был удален предыдущей командой, нужно скачать и скомпилировать его:

Обратите внимание на версию git. На момент написания это версия 1.9.0. Уточнить, какая версия git является актуальной, можно на официальной странице проекта.

И наконец, если не установлен почтовый сервер, вот команда для его установки:

В процессе установки почтовый сервер попросит себя сконфигурировать. Для этого нужно выбрать на появившемся экране пункт «Internet Site» и указать правильное имя хоста — IP-адрес или доменное имя.

Установка Ruby

Для работы GitLab требуется Ruby 2.1.6. Если у вас уже установлен Ruby 1.8, его необходимо удалить перед установкой новой версии:

Теперь скачаем и скомпилируем Ruby 2.1.6:

Помимо самого Ruby нам понадобится библиотека bundler:

Создание пользователя для SSH-подключений к GitLab

Создадим для SSH-подключений пользователя git:

Установка и настройка GitLab Shell

GitLab Shell — это отдельная утилита для управления SSH-доступом и репозиториями. Для ее установки необходимо выполнить следущие команды:

После выполнения команд нужно отредактировать файл config.yml. В нем в настройке gitlab_url нужно указать будущий адрес GitLab, например:

Теперь устанавливаем и инициализируем утилиту:

Установка и настройка базы данных

Для работы GitLab требует базу данных. Разработчики GitLab рекомендуют использовать PostgreSQL, однако поддержка MySQL также присутствует. Для установки PostgreSQL, выполните:

Для установки MySQL:

Во время установки необходимо будет придумать и ввести пароль root пользователя MySQL.

Теперь нужно создать саму базу данных для работы GitLab. Для этого нужно выполнить несколько SQL-запросов. Начнем с PostgreSQL. В командной строке это делается так:

Теперь MySQL (не забудьте вместо $password поставить хороший, крепкий пароль):

 

Установка и настройка самого GitLab

Этот этап самый сложный, поэтому будем выполнять его пошагово. Первый шаг — загрузка исходников GitLab. Делается это через git и выглядит примерно вот так:

 

Обратите внимание на флаг -b 6-8-stable во второй команде. На момент написания этой статьи актуальным является GitLab версии 6.8. Однако рекомендую перед установкой уточнить эту информацию на официальном сайте проекта и подставить в эту команду правильную версию. Кроме того, вместе с GitLab периодически обновляется и GitLab Shell, это также нужно учесть.

Второй шаг — развертывание и настройка. Сюда входят создание необходимых файлов конфигурации, создание необходимых приложению папок и установка прав доступа на уже существующие папки:

После выполнения команд нужно отредактировать файл config/gitlab.yml. В нем нужно указать следующие настройки:

Настройка Раздел Описание Пример
host gitlab Cюда надо вписать адрес, по которому будет доступен GitLab gitlab.example.com
email_from gitlab Тут нужно прописать email, с которого будет отправляться почта gitlab@example.com
support_emal gitlab Адрес тех. поддержки. Если его закомментировать, будет использован адрес из email_from support@example.com
bin_path git Установите значение /usr/local/bin/git, если компилировали git вручную на первом этапе установки /usr/local/bin/git

E-mail адрес из email_from также нужно установить в конфигурации git:

Теперь нужно сконфигурировать базу данных. Для PostgreSQL:

Для MySQL:

Не забудьте указать в файле config/database.yml логин и пароль для доступа к вашей базе данных. Следущий шаг — установка зависимостей. Делается это одной простой командой. Если вы используете PostgreSQL:

Если используете MySQL:

Теперь нужно инициализировать приложение. Сюда входят инициализация базы данных и установка ротации логов:

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

Корректно установленное приложение должно выдавать примерно следущее:

Страница файлов проекта в GitLab

Страница файлов проекта в GitLab

gitlab-env-infoЕсли все хорошо — приложение можно запускать:

Установка и настройка Nginx

Последний этап установки GitLab — установка и настройка сервера Nginx. Установка выглядит так:

Копируем конфигурационный файл Nginx из дистрибутива GitLab:

Не забудьте указать правильный адрес вашего GitLab в файле /etc/nginx/sites-available/gitlab в настройке server_name раздела server. Мне также пришлось указать IP-адрес сервера в настройке listen раздела server. Теперь нужно перезапустить сервер:

Готово! Установка и настройка GitLab окончена. Убедитесь, что все правильно настроено, выполнив команду:

Если все пункты списка зеленые — значит, приложение установлено и настроено верно и можно начинать работу. Для этого зайдите по адресу приложения и авторизуйтесь, используя данные по умолчанию:

Не забудьте сменить пароль после авторизации! Приятной работы!

P.S. Еще более подробно написано о настройке gitlab в статье: https://www.linode.com/docs/applications/development/how-to-install-and-configure-gitlab-on-ubuntu-14-04-trusty-tahr

 

Источник: http://popel-studio.com/blog/article/sobstvenniy-hosting-repozitoriev-s-pomoshyu-gitlab.html

Разработка и создание сайтов, интернет-магазинов, веб-приложений, порталов, лэндингов, мобильных приложений (Киев)

Добавить комментарий

Ваш e-mail не будет опубликован. Обязательные поля помечены *