Рассмотрим процесс установки и настройки веб-инструмента жизненного цикла DevOps на Linux Ubuntu Server на примере версий 18.04 и 20.04. За основу взята официальная инструкция с сайта GitLab. В нашей инструкции приведен пример установки как платной. так и бесплатной версий программы.
Подготовка сервера
В качестве предварительный настроек, мы обновим список пакетов в репозиториях, настроим правильное время и откроем порты в брандмауэре.
1. Обновление списков пакетов
Выполняем команду:
apt-get update
При желании обновить установленные пакеты, также можно выполнить:
apt-get upgrade
2. Время
Установим часовой пояс:
timedatectl set-timezone Europe/Moscow
* данная команда задаст настройки для московского времени. Все файлы с временными зонами находятся в каталоге /usr/share/zoneinfo.
Для автоматической синхронизации времени ставим пакет:
apt-get install chrony
И разрешаем автозапуск сервиса:
systemctl enable chrony
3. Настройка брандмауэра
По умолчанию, в Ubuntu брандмауэр настроен на то, чтобы принимать любые пакеты. Но если у нас он настроен на блокировку, нужно добавить порты 80 и 443.
iptables -A INPUT -p tcp --dport 80 -j ACCEPT
iptables -A INPUT -p tcp --dport 443 -j ACCEPT
И чтобы сохранить правила, устанавливаем iptables-persistent:
apt-get install iptables-persistent
… и выполняем команду:
netfilter-persistent save
Установка GitLab
Установку выполним в два шага — установка необходимых компонентов и, собственно, установка GitLab.
1. Необходимые компоненты
apt-get install curl openssh-server ca-certificates
Для отправки уведомлений, установим также postfix:
apt-get install postfix
При запросе типа конфигурации, выбираем Internet Site (если уведомления должны отправляться наружу) или Local only (уведомления в пределах сервера):
* при получении других запросов во время установки postfix можно ответить по умолчанию, нажимая Enter.
2. Установка GitLab
Установим репозиторий.
а) для платной версии:
curl https://packages.gitlab.com/install/repositories/gitlab/gitlab-ee/script.deb.sh | sudo bash
б) для бесплатной:
curl https://packages.gitlab.com/install/repositories/gitlab/gitlab-ce/script.deb.sh | sudo bash
После установки репозитория, устанавливаем сам GitLab.
а) платную версию:
apt-get install gitlab-ee
б) бесплатную:
apt-get install gitlab-ce
Если установка прошла успешно, мы должны увидеть:
It looks like GitLab has not been configured yet; skipping the upgrade script.
*. *.
*** ***
***** *****
.****** *******
******** ********
,,,,,,,,,***********,,,,,,,,,
,,,,,,,,,,,*********,,,,,,,,,,,
.,,,,,,,,,,,*******,,,,,,,,,,,,
,,,,,,,,,*****,,,,,,,,,.
,,,,,,,****,,,,,,
.,,,***,,,,
,*,.
_______ __ __ __
/ ____(_) /_/ / ____ _/ /_
/ / __/ / __/ / / __ `/ __
/ /_/ / / /_/ /___/ /_/ / /_/ /
____/_/__/_____/__,_/_.___/
Thank you for installing GitLab!
3. Конфигурируем веб-адрес
Для запуска и корректной работы портала мы должны задать 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. Мы должны увидеть страницу авторизации, на которой нас запросят сменить пароль для администратора. Вводим его дважды:
После система попросит ввести логин и пароль — вводим логин root и пароль, который только-что придумали.
Настройка GitLab
Приведем некоторые примеры настроек, которые могут оказаться полезными.
Русский интерфейс
По умолчанию, портал устанавливается с интерфейсом на английском. Для смены языка, кликаем по иконке в правом верхнем углу и выбираем Settings:
В меню слева нажимаем по Preferences:
В подразделе Localization выбираем нужный нам язык и первый день недели:
Сохранияем настройки и перезапускаем страницу для применения нового языка.
Создание репозитория и подключение к нему
Попробуем создать проект и подключиться к нему из Linux. Также для теста мы создадим файл и закинем его в наш репозиторий.
В веб-интерфейсе GitLab создаем новый проект:
Задаем имя проекта, оставляем или редактируем URL, выбираем уровень доступа. После кликаем по кнопке Создать проект:
* в данном примере мы создаем проект с названием 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
Переходим на веб-страницу нашего проекта — мы должны увидеть наш файл:
Настройка 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
Задаем пароль для пользователя root дважды:
user.password = 'password123'
user.password_confirmation = 'password123'
где password123 — созданный для пользователя root новый пароль.
Созраняем изменения для пользователя:
user.save!
Готово.
Источник: https://www.dmosk.ru/miniinstruktions.php?mini=gitlab-ubuntu