Установка GitLab

Установка GitLab представляет из себя достаточно простой процесс, особенно в тестовой среде, и упирается всего лишь в несколько команд. Тем не менее, есть некоторые рекомендованные практики, которые я обязательно рассмотрю. Также подробно будут рассмотрены все сложности развертывания GitLab на Debian в виртуализованной среде Hyper-V.


Если вам интересна тематика Debian и связанных с ним приложений, рекомендую обратиться к тегу Debian на моем блоге.


Установка GitLab

Я планирую разворачивать Omnibus GitLab 1. Это наиболее простой в установке и настройке дистрибутив, который позволяет сразу приступить к использованию продукта. Собственно так и написано в его описании:

Omnibus is a way to package different services and tools required to run GitLab, so that most of developers can install it without laborious configuration

Итак, приступим.

Настройка окружения

В качестве площадки для развертывания GitLab использовалась виртуальная машина второго поколения на базе гипервизора Windows 8.1 Hyper-V. Напомню, что безопасная загрузка для unix-like ОС пока не поддерживается (это реализовано лишь в Windows Server 2016/Windows 10) и потому её надо обязательно отключать в свойствах ВМ:

Гостевой ОС выбран Debian последней на момент написания статьи версии (дистрибутив debian-8.7.0-amd64-netinst.iso 2). Установка представляет из себя стандартный процесс, который был описан в одной из моих давних статей (Debian. Установка системы на виртуальную машину).

Подготовка ОС

Подготовка операционной системы в моем случае упиралась в два этапа — настройка сети и подготовка хранилища. Этапы не являются обязательными и могут быть пропущены, особенно это касается тестовой среды.

Настройка сети

Поскольку на виртуальной машине будет крутиться веб-сервер, использовать статический ip-адрес было бы логично.

Для этого открываем настройки сетевых интерфейсов:

nano /etc/network/interfaces

На моей виртуальной машине был всего один сетевой интерфейс — eth0, его настройки я и поменял:

allow-hotplug eth0
iface eth0 inet static
address 192.168.1.51
netmask 255.255.254.0
gateway 192.168.0.1

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

service networking restart

Переподключаемся к серверу по новому адресу.

Подготовка хранилища

Хранилище GitLab может занимать достаточно большой объем, а потому более чем логично подготовить для него выделенное пространство. Для этого я просто подключил ещё один .vhdx-диск к своей виртуальной машине. Далее его надо было настроить.

Проверить подключенные диски в Debian вы можете командой lsblk. Она отображает список блочных устройств. Например вот так выглядит её вывод:

NAME MAJ:MIN RM SIZE RO TYPE MOUNTPOINT
sda 8:0 0 127G 0 disk
├─sda1 8:1 0 512M 0 part /boot/efi
├─sda2 8:2 0 126G 0 part /
└─sda3 8:3 0 508M 0 part [SWAP]
sdb 8:16 0 127G 0 disk
sr0 11:0 1 1024M 0 rom

Создаем точку монтирования:

mkdir /mnt/storage01

Создаем файловую систему:

fdisk /dev/sdb

После выполнения команды будет запрошен ввод данных от пользователя. Нужно последовательно ввести:

  • n (означает создание нового раздела),
  • сделать раздел первичным (ввести p)
  • и записать данные на диск (w)

Если будут какие-либо сомнения, можно вызвать справку (m).

Далее форматируем диск командой:

mkfs –t ext4 /dev/sdb1

Примечание: В Hyper-V 2012 R2/8.1 есть очень неприятный баг, связанный с дисками объемом более 2ТБ на виртуальных машинах второго поколения с гостевой ОС Linux: не получается отформатировать диск в нужной файловой системе. После выполнения команды mkfs –t ext4 /dev/sdb1 идет зависание системы, ЦП грузится на 50%, идет постепенное заполнение системного диска до полного объема, в то время как с нужным диском изменений не происходит.

Проблема известна 3. Решение также есть: накатить на хост виртуализации обновление 4. Обходной вариант — просто уменьшить объем диска до <2TB.


UPD: 07.03.2017: совсем забыл об очень важной детали, исправляюсь.

Настроим автоматическое монтирование раздела, открыв fstab:

mkfs –t ext4 /dev/sdb1

Внизу добавляем строчку (между значениями обязательно табуляция, а не пробелы!):

/dev/sdb1 /mnt/storage01 ext4 defaults 0 0


Далее создаем необходимые каталоги:

mkdir –pv /mnt/storage01/gitlab/git-data

На всякий случай назначаем права в точности как на каталогах хранилища GitLab по умолчанию:

chmod –R g=rwx,o= /mnt/storage01/gitlab/git-data/

Ну и меняем владельца:

chown -R git:root /mnt/storage01/gitlab/git-data/

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

Установка GitLab

Доступны два варианта установки GitLab — из исходников 5 или из пакетов 6. Второй вариант лично для меня более удобен — меньше времени на изучение/установку/развертывание и обновление в будущем, а значит можно сразу приступить к изучению основного функционала продукта.

Документация имеет в своем арсенале инструкции для установки GitLab на разные операционные системы, что очень удобно.

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

apt-get install curl openssh-server ca-certificates postfix

Во время установки Postfix попросить выбрать конфигурацию, рекомендуют остановиться на Internet Site:

If you install Postfix to send email please select ‘Internet Site’ during setup. Instead of using Postfix you can also use Sendmail or configure a custom SMTP server and configure it as an SMTP server.

Примечание: переконфигурировать Postfix вы можете в любое удобное время, в том числе и после развертывания GitLab. Достаточно запустить команду dpkg-reconfigure postfix. Для меня это был боле удобный и прозрачный способ.

Далее выкачиваем и выполняем скрипт:

curl -sS https://packages.gitlab.com/install/repositories/gitlab/gitlab-ce/script.deb.sh | bash

Запускаем установку:

apt-get install gitlab-ce

И последний шаг — конфигурируем GitLab:

gitlab-ctl reconfigure

Процесс может занять длительное время, особенно при слабом ЦП и небольшом объеме RAM. Установка на этом завершена.

Базовая настройка GitLab

Практически сразу после установки GitLab готов к работе, остается сделать лишь пару штрихов.

Первый вход

Веб-интерфейс GitLab доступен по ip-адресу сервера или по DNS-имени, если в вашей сети функционирует сервер DNS и на нем зарегистрировано нужное имя.

При первом входе необходимо задать пароль учетной записи администратора. Имя учетной записи — root.

Подключение хранилищ

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

Открываем для редактирования:

nano /etc/gitlab/gitlab.rb

Изменяем существующую секцию или добавляем новую:

git_data_dirs({
 "default" => "/var/opt/gitlab/git-data",
 "storage01" => "/mnt/storage01/gitlab/git-data"
})

где storage01 — как раз новое хранилище.

Переконфигурируем GitLab:

gitlab-ctl reconfigure

Дальше остается только выбрать новое хранилище через веб-интерфейс и применить изменения:

Установка GitLab

На этом установка и настройка GitLab завершена.

comments powered by HyperComments