Установка 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-адрес было бы логично.
Для этого открываем настройки сетевых интерфейсов:
1 |
nano /etc/network/interfaces |
На моей виртуальной машине был всего один сетевой интерфейс – eth0, его настройки я и поменял:
1 2 3 4 5 |
allow-hotplug eth0 iface eth0 inet static address 192.168.1.51 netmask 255.255.254.0 gateway 192.168.0.1 |
Сохраняем изменения и выходим, остается только перезапустить сеть:
1 |
service networking restart |
Переподключаемся к серверу по новому адресу.
Подготовка хранилища
Хранилище GitLab может занимать достаточно большой объем, а потому более чем логично подготовить для него выделенное пространство. Для этого я просто подключил ещё один .vhdx-диск к своей виртуальной машине. Далее его надо было настроить.
Проверить подключенные диски в Debian вы можете командой lsblk. Она отображает список блочных устройств. Например вот так выглядит её вывод:
1 2 3 4 5 6 7 |
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 |
Создаем точку монтирования:
1 |
mkdir /mnt/storage01 |
Создаем файловую систему:
1 |
fdisk /dev/sdb |
После выполнения команды будет запрошен ввод данных от пользователя. Нужно последовательно ввести:
- n (означает создание нового раздела),
- сделать раздел первичным (ввести p)
- и записать данные на диск (w)
Если будут какие-либо сомнения, можно вызвать справку (m).
Далее форматируем диск командой:
1 |
mkfs –t ext4 /dev/sdb1 |
Проблема известна 3. Решение также есть: накатить на хост виртуализации обновление 4. Обходной вариант – просто уменьшить объем диска до <2TB.
UPD: 07.03.2017: совсем забыл об очень важной детали, исправляюсь.
Настроим автоматическое монтирование раздела, открыв fstab:
1 |
mkfs –t ext4 /dev/sdb1 |
Внизу добавляем строчку (между значениями обязательно табуляция, а не пробелы!):
/dev/sdb1 /mnt/storage01 ext4 defaults 0 0
Далее создаем необходимые каталоги:
1 |
mkdir –pv /mnt/storage01/gitlab/git-data |
На всякий случай назначаем права в точности как на каталогах хранилища GitLab по умолчанию:
1 |
chmod –R g=rwx,o= /mnt/storage01/gitlab/git-data/ |
Ну и меняем владельца:
1 |
chown -R git:root /mnt/storage01/gitlab/git-data/ |
На этом настройка дополнительного хранилища завершена, процесс его подключения будет рассмотрен ниже.
Установка GitLab
Доступны два варианта установки GitLab – из исходников 5 или из пакетов 6. Второй вариант лично для меня более удобен – меньше времени на изучение/установку/развертывание и обновление в будущем, а значит можно сразу приступить к изучению основного функционала продукта.
Документация имеет в своем арсенале инструкции для установки GitLab на разные операционные системы, что очень удобно.
Итак, перейдем сразу к делу. Для начала установим все пререквизиты:
1 2 3 4 |
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.
Далее выкачиваем и выполняем скрипт:
1 |
curl -sS https://packages.gitlab.com/install/repositories/gitlab/gitlab-ce/script.deb.sh | bash |
Запускаем установку:
1 |
apt-get install gitlab-ce |
И последний шаг – конфигурируем GitLab:
1 |
gitlab-ctl reconfigure |
Процесс может занять длительное время, особенно при слабом ЦП и небольшом объеме RAM. Установка на этом завершена.
Базовая настройка GitLab
Практически сразу после установки GitLab готов к работе, остается сделать лишь пару штрихов.
Первый вход
Веб-интерфейс GitLab доступен по ip-адресу сервера или по DNS-имени, если в вашей сети функционирует сервер DNS и на нем зарегистрировано нужное имя.
При первом входе необходимо задать пароль учетной записи администратора. Имя учетной записи – root.
Подключение хранилищ
Если вы не пролистали раздел Подготовка хранилище выше по тексту, то самое время это хранилище сейчас подключить. Сделать это можно в основном конфигурационном файле. Повторю, что в статье я работаю с GitLab, развернутым из пакетов. Если вы собирали все из исходников, сценарий внесения изменений в конфигурацию будет отличаться, читайте документацию 7.
Открываем для редактирования:
1 |
nano /etc/gitlab/gitlab.rb |
Изменяем существующую секцию или добавляем новую:
1 2 3 4 |
git_data_dirs({ "default" => "/var/opt/gitlab/git-data", "storage01" => "/mnt/storage01/gitlab/git-data" }) |
где storage01 – как раз новое хранилище.
Переконфигурируем GitLab:
1 |
gitlab-ctl reconfigure |
Дальше остается только выбрать новое хранилище через веб-интерфейс и применить изменения:
На этом установка и настройка GitLab завершена.
Notes:
- Omnibus GitLab documentation ↩
- debian-8.7.0-amd64-netinst.iso ↩
- Unable to create filesystem (mkfs.ext4) on large > 2TB GPT virtual disk using Linux VM ↩
- Windows Hyper-V improvement for Linux virtual machines that have file systems that are larger than 2 TB ↩
- Installation from source ↩
- Install a GitLab CE Omnibus package on ↩
- Repository storages ↩