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

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

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

Рассмотрим процесс установки и настройки веб-инструмента жизненного цикла DevOps на Linux CentOS на примере версии 8. За основу взята официальная инструкция с сайта 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 openssh-server

Для отправки уведомлений, установим также 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. Мы должны увидеть страницу авторизации, на которой нас запросят сменить пароль для администратора. Вводим его дважды:

Меняем пароль для администратора 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

Сброс пароля 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 # Серверы
Дмитрий Моск — частный мастер
Была ли полезна вам эта инструкция?

Да            Нет