Установка веб-инструмента GitLab на Rocky

Обновлено Обновлено: Опубликовано Опубликовано:

Используемые термины: GitLab, CentOS, Rocky Linux.

Рассмотрим процесс установки и настройки веб-инструмента жизненного цикла DevOps на Linux CentOS/Rocky на примере версий 8 и 9. За основу взята официальная инструкция с сайта GitLab. В нашей инструкции приведен пример установки как платной. так и бесплатной версий программы.

Подготовка сервера

В качестве предварительный настроек, мы обновим список пакетов в репозиториях, настроим правильное время и откроем порты в брандмауэре.

1. Время

Установим часовой пояс:

timedatectl set-timezone Europe/Moscow

* данная команда задаст настройки для московского времени. Все файлы с временными зонами находятся в каталоге /usr/share/zoneinfo.

Для автоматической синхронизации времени ставим пакет:

yum install chrony

Разрешаем автозапуск сервиса и стартуем его:

systemctl enable chronyd --now

2. Настройка брандмауэра

Нам нужно добавить порты 80 и 443.

firewall-cmd --permanent --add-service=http{,s}

Применяем настройки: 

firewall-cmd --reload

3. Необходимые компоненты

Для работы 

dnf install curl policycoreutils

* где:

  • curl — утилита для отправки запросов по http. В нашем случае нужна для загрузки файлов.
  • policycoreutils — набор утилит для работы с подситемами безопасности, в частности, SELinux.

Для отправки уведомлений, установим также postfix:

dnf install postfix

Установка GitLab

1. Установка и настройка сервиса

Установим репозиторий.

а) для бесплатной:

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

б) для платной версии:

curl https://packages.gitlab.com/install/repositories/gitlab/gitlab-ee/script.rpm.sh | sudo bash

После установки репозитория, устанавливаем сам GitLab.

а) бесплатную:

dnf install gitlab-ce

б) платную версию:

dnf install gitlab-ee

Если установка прошла успешно, мы должны увидеть:

It looks like GitLab has not been configured yet; skipping the upgrade script.

       *.                  *.
      ***                 ***
     *****               *****
    .******             *******
    ********            ********
   ,,,,,,,,,***********,,,,,,,,,
  ,,,,,,,,,,,*********,,,,,,,,,,,
  .,,,,,,,,,,,*******,,,,,,,,,,,,
      ,,,,,,,,,*****,,,,,,,,,.
         ,,,,,,,****,,,,,,
            .,,,***,,,,
                ,*,.
  

     _______ __  __          __
    / ____(_) /_/ /   ____ _/ /_
   / / __/ / __/ /   / __ `/ __ \
  / /_/ / / /_/ /___/ /_/ / /_/ /
  \____/_/\__/_____/\__,_/_.___/
  

Thank you for installing GitLab!

2. Конфигурируем веб-адрес

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

vi /etc/gitlab/gitlab.rb

Нам нужно только изменить параметр external_url:

external_url 'http://gitlab.dmosk.ru'

* данная настройка говорит, что наш веб-инструмент будет отвечать на запросы, которые пришли на узел gitlab.dmosk.ru — это значит, что данное имя должно быть зарегистрирована в DNS или прописано в локальный файл hosts.

Выполняем конфигурирование:

gitlab-ctl reconfigure

Данная операция займет какое-то время.

Вход в веб-интерфейс

Открываем браузер и вводим наш адрес, который мы указали в настройках в опции external_url — в данном примере, http://gitlab.dmosk.ru. Мы должны увидеть страницу авторизации, на которой нас запросят пароль для администратора.

Посмотреть пароль, который был назначен пользователю после установки можно в файле /etc/gitlab/initial_root_password:

cat /etc/gitlab/initial_root_password | grep Password:

Вводим в качестве пользователя root и пароль, который посмотрели в файле:

Меняем пароль для администратора gitlab

После система попросит ввести логин и пароль — вводим логин root и пароль, который только-что придумали.

Настройка GitLab

Приведем некоторые примеры настроек, которые могут оказаться полезными.

Русский интерфейс

По умолчанию, портал устанавливается с интерфейсом на английском. Для смены языка, кликаем по иконке в правом верхнем углу и выбираем Settings:

Переходим к настройкам в GitLab

В меню слева нажимаем по Preferences:

Кликаем по пункту меню Preferences

В подразделе Localization выбираем нужный нам язык и первый день недели:

Выбираем языковые настройки для интерфейса GitLab

Сохранияем настройки и перезапускаем страницу для применения нового языка.

Создание репозитория и подключение к нему

Попробуем создать проект и подключиться к нему из Linux. Также для теста мы создадим файл и закинем его в наш репозиторий.

В веб-интерфейсе GitLab создаем новый проект:

Кликаем по кнопке Новый проект

Задаем имя проекта, оставляем или редактируем URL, выбираем уровень доступа. После кликаем по кнопке Создать проект:

Заполняем поля для создания нового проекта в GitLab

* в данном примере мы создаем проект с названием Test, url до него будет http://gitlab.dmosk.ru/root/test. Уровень доступа мы задаем «Приватный» — доступ к репозиторию будет только у авторизованного пользователя.

Для примера попробуем подключиться с компьютера Linux к нашему репозиторию и закинуть на него тестовый файл.

Для начала установим git на компьютер с Linux:

а) Если используем CentOS / Red Hat:

yum install git-core

б) Если используем Ubuntu / Debian:

apt-get install git

Создаем папку для тестового проекта:

mkdir -p /projects/test

Переходим в нее:

cd /projects/test

Создаем репозиторий:

git init

Создаем файл:

vi testfile.txt

Добавляем в него все файлы (то есть, наш единственный файл):

git add .

Делаем коммит:

git commit -m "Очередное изменение проекта" -a

Подключаемся к созданному репозиторию:

git remote add origin http://gitlab.dmosk.ru/root/test.git

Заливаем в него закоммиченный файл:

git push origin master

Переходим на веб-страницу нашего проекта — мы должны увидеть наш файл:

В проекте на нашем GitLab появился файл, который мы закинули в репозиторий с Linux

Настройка SSL

В данном примере мы сконфигурируем наш сервер для возможности работы по https и получения сертификата от Let's Encrypt. Все настройки выполняются в конфигурационном файле:

vi /etc/gitlab/gitlab.rb

Меняем настройку:

external_url 'http://gitlab.dmosk.ru'

* где gitlab.dmosk.ru — url для нашего портала, который мы задали при первом конфигурировании.

на:

external_url 'https://gitlab.dmosk.ru'

* мы просто добавили s к http.

Также настраиваем получение сертификата от Let's Encrypt:

letsencrypt['enable'] = true

И задаем опции для автоматического обновления сертификата:

letsencrypt['auto_renew'] = true
letsencrypt['auto_renew_hour'] = "22"
letsencrypt['auto_renew_minute'] = "50"
letsencrypt['auto_renew_day_of_month'] = "*/7"

* где:

  • auto_renew — разрешает автоматическое обновление.
  • auto_renew_hour — время в часах, когда нужно запускать задание на обновление сертификата.
  • auto_renew_minute — время в минутах, когда нужно запускать задание на обновление сертификата.
  • auto_renew_day_of_month — день месяца. В данном примере, раз в 7 дней.

Применяем новую конфигурацию:

gitlab-ctl reconfigure

В процессе переконфигурирования мы можем получить ошибку получения сертификата. Пробуем запустить команду:

gitlab-ctl renew-le-certs

Отправка почты

Для Gitlab очень важно иметь возможность корректно отправлять почту, так как посредством почтовых рассылок отправляются приглашения новым пользователям.

Мы рассмотрим 2 варианта — использование локального транспортного агента (MTA) на базе Postfix и отправку через сторонний сервер почты.

1. Используем локальный Postfix

Устанавливаем MTA командой:

dnf install postfix

Открываем конфигурационный файл нашего mta:

vi /etc/postfix/main.cf

Находим не закомментированную строку:

inet_interfaces = localhost

* значение для inet_interfaces может быть не только localhost.

... и меняем ее значение на:

inet_interfaces = all

Также находим:

inet_protocols = all

И меняем на:

inet_protocols = ipv4

* однако, если мы используем IPv6, то менять значение не нужно.

Указываем серверу передавать сообщения по зашифрованному каналу:

smtp_use_tls = yes

После внесения настроек перезапускаем postfix для их применения:

systemctl restart postfix

2. Сторонний почтовый сервер

Мы можем использовать выделенный почтовый сервер для отправки почты. Для настройки открываем конфигурационный файл:

vi /etc/gitlab/gitlab.rb

Находим группу настроек, начинающихся на smtp_ и задаем из нужные значения, например:

gitlab_rails['smtp_enable'] = true
gitlab_rails['smtp_address'] = "relay.dmosk.localnet"
gitlab_rails['smtp_port'] = 465
gitlab_rails['smtp_user_name'] = "gitlab@dmosk.ru"
gitlab_rails['smtp_password'] = "gitlab_dmosk_password"
gitlab_rails['smtp_authentication'] = "plain"
gitlab_rails['smtp_ssl'] = true
gitlab_rails['smtp_force_ssl'] = true

* где:

  • smtp_enable — разрешить или запретить использование внешнего SMTP-сервера.
  • smtp_address — адреса почтового сервера для переслки сообщений.
  • smtp_port — порт, на котором слушает служба smtp.
  • smtp_user_name — учетная запись пользователя для авторизации.
  • smtp_password — пароль для учетной записи.
  • smtp_authentication — метод аутентификации.
  • smtp_ssl — для подключения к почтовому релею использовать шифрованный SSL канал.

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

gitlab_rails['gitlab_email_from'] = 'gitlab@dmosk.ru'
gitlab_rails['gitlab_email_display_name'] = 'Dmosk Gitlab'

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

gitlab-ctl reconfigure

Сброс пароля root

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

Подключаемся к консоли управления gitlab с помощью команды:

gitlab-rails console -e production

Создаем переменную, которая будет вести на ссылку с учетной записью root (идентификатор 1):

user = User.where(id: 1).first

Найти идентификатор для определенного пользователя можно командой:

User.find_by(username: 'dmosk')

* где dmosk — логин пользователя, для которого мы найдем идентификатор.

Задаем пароль для пользователя root дважды:

user.password = 'password123'

user.password_confirmation = 'password123'

где password123 — созданный для пользователя root новый пароль.

Созраняем изменения для пользователя:

user.save!

Готово.

# CentOS # DevOps # Rocky Linux # Серверы # Gitlab
Дмитрий Моск — частный мастер
Была ли полезна вам эта инструкция?

Да            Нет