Categories: Шпаргалки

Установка веб-инструмента 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.remontka.com’

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

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

gitlab-ctl reconfigure

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

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

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

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

cat /etc/gitlab/initial_root_password | grep Password:

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

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

Настройка GitLab

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

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

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

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

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

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

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

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

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

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

* в данном примере мы создаем проект с названием Test , url до него будет http://gitlab.remontka.com/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.remontka.com/root/test.git

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

git push origin master

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

Настройка SSL

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

vi /etc/gitlab/gitlab.rb

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

external_url ‘http://gitlab.remontka.com’

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

на:

external_url ‘https://gitlab.remontka.com’

* мы просто добавили 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.remontka.localnet»
gitlab_rails[‘smtp_port’] = 465
gitlab_rails[‘smtp_user_name’] = «gitlab@remontka.com»
gitlab_rails[‘smtp_password’] = «gitlab_remontka_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@remontka.com’
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: ‘remontka’)

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

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

user.password = ‘password123’

user.password_confirmation = ‘password123’

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

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

user.save!

Готово.

admin

Recent Posts

Что такое Zulip

Zulip — программное обеспечение для реализации корпоративного чата. Разработан в 2012 году, в 2014 был…

2 месяца ago

Что такое Zookeeper

Zookeeper — cервис-координатор, который позволяет обеспечить контроль синхронизации данных. Разработан на Java компанией Apache Software…

2 месяца ago

Что такое Zimbra

Zimbra — программное обеспечение для реализации почтового сервиса или, если сказать точнее, автоматизации совместной деятельности…

2 месяца ago

Что такое Zabbix

Zabbix — бесплатная система мониторинга. Позволяет отслеживать состояние сетевых узлов, компьютеров и серверов. Возможности: Поддержка…

2 месяца ago

Что такое YouTube

YouTube — компания-владелец одноименного портала для просмотра и хранения видео. Чтобы пользоваться данным порталом достаточно…

2 месяца ago

Что такое yota

Yota — провайдер, предоставляющий доступ к сети Интернет по беспроводной связи. Впервые, сервис начал работать…

2 месяца ago