Если вам необходимо развернуть собственную систему управления версиями на своих серверах, то обратите внимание на Gitflic.

Если не знаете, что такое Gitflic, то изучите информацию в интернете. В данной статье не будем рассматривать возможности данной системы, так как о них вы можете узнать зарегистрировавшись на официальном сайте и «пощупаd» их вживую. В статье мы рассмотрим установку решения на собственные сервера.

Gitflic бесплатен. Плата потребуется за дополнительный определённый функционал. Если без этого функционала вы не можете обойтись, то можете рассмотреть систему Gitea установка которой описана в статье Установка Gitea на CentOS с помощью Snap.

Используемые технологии:

  • Rocky Linux 9 (близнецы: Red Hat, CentOS, AlmaLinux).
  • PostgreSQL 15+. Установка описана в отдельной статье.
  • Redis.
  • RabbitMQ

При необходимости установите отсутствующие программы:

sudo yum install unzip -y
sudo yum install java -y

Скачайте дистрибутив последней версии Gitflic с официального сайта.

В статье описываю установку RabbitMQ, который нужен для Enterprise версии Gitflic. Если версия не Enterprise, то она работает без RabbitMQ и у неё нет даже настроек подключения к нему. Поэтому вы можете пропустить этот шаг, только удалите из файла gitflic.service упоминание RabbitMQ — rabbitmq-server.service. Если вам это не важно, то оставьте всё как есть и выполните все шаги из статьи.

Настройка базы данных

Установите расширения и дополнения для PostgreSQL выполнив команду:

sudo yum install postgresql-contrib -y

Команда может отличаться если у вас установлено несколько экземпляров PostgreSQL. Пример:

sudo yum install postgresql-contrib-15 -y

Создадим базу данных и установим расширение pgcrypto:

su - postgres
psql -c "CREATE DATABASE gitflic;"
psql -c "CREATE ROLE gitflic LOGIN SUPERUSER PASSWORD 'gitflic';"
psql -d gitflic -c "CREATE EXTENSION if not exists "pgcrypto" SCHEMA public;"

Проверка, что расширение в базе установлено:

psql -d gitflic -c "\dx pgcrypto;"
Расширение pgcrypto

Выйти из-под учётной записи postgres:

exit

Изменение SSH порта

Gitflic использует стандартный 22 порт для подключения к репозиторию по SSH (запускает собственный ssh-сервер на данном порту). Его можно изменить, но тогда потребуются дополнительные настройки прокси, поэтому мы этого делать не будем, а изменим порт для sshd с 22 на 2222, для подключения и администрирования системы по SSH. Для этого в файле /etc/ssh/sshd_config необходимо расскоментировать строку:

# Port 22

И указать порт 2222:

Port 2222

Сохранить файл. Разрешить в SELinux работу ssh по порту отличному от 22:

sudo semanage port -a -t ssh_port_t -p tcp 2222
sudo systemctl restart sshd

Открыть порты в firewalld:

sudo firewall-cmd --zone=public --add-port=2222/tcp –permanent
sudo firewall-cmd --zone=public --add-port=22/tcp --permanent
sudo firewall-cmd --reload

Установка Redis

sudo yum install redis -y
sudo systemctl enable redis
sudo systemctl start redis

Больше не нужно никаких настроек.

Если у вас возникли проблемы с установкой, то смотрите другие варианты установки на официальном сайте Redis https://redis.io/docs/install/install-redis/

Установка RabbitMQ

Создадим файл с описанием репозитория RabbitMQ.

sudo touch /etc/yum.repos.d/rabbitmq.repo

Внести в файл /etc/yum.repos.d/rabbitmq.repo следующие данные:

# Содержимое файла /etc/yum.repos.d/rabbitmq.repo

## Erlang RPM

[modern-erlang]
name=modern-erlang-el9
# uses a Cloudsmith mirror @ yum.novemberain.com.
# Unlike Cloudsmith, it does not have any traffic quotas
baseurl=https://yum1.novemberain.com/erlang/el/9/$basearch
        https://yum2.novemberain.com/erlang/el/9/$basearch
        https://dl.cloudsmith.io/public/rabbitmq/rabbitmq-erlang/rpm/el/9/$basearch
repo_gpgcheck=1
enabled=1
gpgkey=https://github.com/rabbitmq/signing-keys/releases/download/3.0/cloudsmith.rabbitmq-erlang.E495BB49CC4BBE5B.key
gpgcheck=1
sslverify=1
sslcacert=/etc/pki/tls/certs/ca-bundle.crt
metadata_expire=300
pkg_gpgcheck=1
autorefresh=1
type=rpm-md

[modern-erlang-noarch]
name=modern-erlang-el9-noarch
# uses a Cloudsmith mirror @ yum.novemberain.com.
# Unlike Cloudsmith, it does not have any traffic quotas
baseurl=https://yum1.novemberain.com/erlang/el/9/noarch
        https://yum2.novemberain.com/erlang/el/9/noarch
        https://dl.cloudsmith.io/public/rabbitmq/rabbitmq-erlang/rpm/el/9/noarch
repo_gpgcheck=1
enabled=1
gpgkey=https://github.com/rabbitmq/signing-keys/releases/download/3.0/cloudsmith.rabbitmq-erlang.E495BB49CC4BBE5B.key
       https://github.com/rabbitmq/signing-keys/releases/download/3.0/rabbitmq-release-signing-key.asc
gpgcheck=1
sslverify=1
sslcacert=/etc/pki/tls/certs/ca-bundle.crt
metadata_expire=300
pkg_gpgcheck=1
autorefresh=1
type=rpm-md

[modern-erlang-source]
name=modern-erlang-el9-source
# uses a Cloudsmith mirror @ yum.novemberain.com.
# Unlike Cloudsmith, it does not have any traffic quotas
baseurl=https://yum1.novemberain.com/erlang/el/9/SRPMS
        https://yum2.novemberain.com/erlang/el/9/SRPMS
        https://dl.cloudsmith.io/public/rabbitmq/rabbitmq-erlang/rpm/el/9/SRPMS
repo_gpgcheck=1
enabled=1
gpgkey=https://github.com/rabbitmq/signing-keys/releases/download/3.0/cloudsmith.rabbitmq-erlang.E495BB49CC4BBE5B.key
       https://github.com/rabbitmq/signing-keys/releases/download/3.0/rabbitmq-release-signing-key.asc
gpgcheck=1
sslverify=1
sslcacert=/etc/pki/tls/certs/ca-bundle.crt
metadata_expire=300
pkg_gpgcheck=1
autorefresh=1


## RabbitMQ Server

[rabbitmq-el9]
name=rabbitmq-el9
baseurl=https://yum2.novemberain.com/rabbitmq/el/9/$basearch
        https://yum1.novemberain.com/rabbitmq/el/9/$basearch
        https://dl.cloudsmith.io/public/rabbitmq/rabbitmq-server/rpm/el/9/$basearch
repo_gpgcheck=1
enabled=1
# Cloudsmith's repository key and RabbitMQ package signing key
gpgkey=https://github.com/rabbitmq/signing-keys/releases/download/3.0/cloudsmith.rabbitmq-server.9F4587F226208342.key
       https://github.com/rabbitmq/signing-keys/releases/download/3.0/rabbitmq-release-signing-key.asc
gpgcheck=1
sslverify=1
sslcacert=/etc/pki/tls/certs/ca-bundle.crt
metadata_expire=300
pkg_gpgcheck=1
autorefresh=1
type=rpm-md

[rabbitmq-el9-noarch]
name=rabbitmq-el9-noarch
baseurl=https://yum2.novemberain.com/rabbitmq/el/9/noarch
        https://yum1.novemberain.com/rabbitmq/el/9/noarch
        https://dl.cloudsmith.io/public/rabbitmq/rabbitmq-server/rpm/el/9/noarch
repo_gpgcheck=1
enabled=1
# Cloudsmith's repository key and RabbitMQ package signing key
gpgkey=https://github.com/rabbitmq/signing-keys/releases/download/3.0/cloudsmith.rabbitmq-server.9F4587F226208342.key
       https://github.com/rabbitmq/signing-keys/releases/download/3.0/rabbitmq-release-signing-key.asc
gpgcheck=1
sslverify=1
sslcacert=/etc/pki/tls/certs/ca-bundle.crt
metadata_expire=300
pkg_gpgcheck=1
autorefresh=1
type=rpm-md

[rabbitmq-el9-source]
name=rabbitmq-el9-source
baseurl=https://yum2.novemberain.com/rabbitmq/el/9/SRPMS
        https://yum1.novemberain.com/rabbitmq/el/9/SRPMS
        https://dl.cloudsmith.io/public/rabbitmq/rabbitmq-server/rpm/el/9/SRPMS
repo_gpgcheck=1
enabled=1
gpgkey=https://github.com/rabbitmq/signing-keys/releases/download/3.0/cloudsmith.rabbitmq-server.9F4587F226208342.key
gpgcheck=0
sslverify=1
sslcacert=/etc/pki/tls/certs/ca-bundle.crt
metadata_expire=300
pkg_gpgcheck=1
autorefresh=1
type=rpm-md

Обратите внимание на то, что файл создан для Red Hat подобных систем 9-й версии. Если вы настраиваете всё на версии выше 9-й, то в файле измените в требуемых местах на требуемую вам версию.

Выполнить команды:

sudo yum update -y
sudo yum install socat logrotate -y
sudo yum install -y erlang rabbitmq-server
sudo systemctl enable rabbitmq-server
sudo systemctl start rabbitmq-server

Если у вас возникли проблемы с установкой, то смотрите другие варианты установки на официальном сайте RabbitMQ https://www.rabbitmq.com/docs/install-rpm

Установка Gitflic

Поместить скачанный архив с дистрибутивом в каталог /tmp.

Для простоты восприятия статьи у меня архив будет называться gitflic.zip без указания версий. Вы же при написании команд ориентируйтесь на то название архива, который вами был скачан с сайта поставщика решения.

Распаковываем архив:

unzip /tmp/gitflic.zip -d /tmp
rm /tmp/gitflic.zip

В каталоге tmp появится каталог gitflic. Устанавливаем:

sudo chmod a+x /tmp/gitflic/install.sh
cd /tmp/gitflic/
sudo ./install.sh

В течении 6 секунд успейте на запрос ввести Y и установка произойдёт мгновенно:

Далее необходимо сконфигурировать систему:

cd /opt/gitflic/
sudo chmod a+x /opt/gitflic/gitflic.sh
sudo /opt/gitflic/gitflic.sh configure

При конфигурировании, если оставляем значение по умолчанию, нажимаем Enter без ввода данных. На скриншоте выделил изменяемые значения или же значение по умолчанию, если их не менял:

Настройка gitflic
Настройка gitflic
Настройка gitflic

Когда ранее создавали базу данных PostgreSQL, то была создана учётная запись по умолчанию, поэтому при настройке всё оставили по умолчанию. Если вы какие-то порты и учётки изменяли, а также если у вас Redis или PostgreSQL находятся на других серверах, то указывайте их данные.

Откроем порт подключения к Gitflic, который указали при настройке:

sudo firewall-cmd --zone=public --add-port=80/tcp --permanent
sudo firewall-cmd --reload

Настройка автозапуска

Настроим службу для автозапуска системы, после перезагрузки системы.

sudo touch /usr/lib/systemd/system/gitflic.service
sudo chmod 664 /usr/lib/systemd/system/gitflic.service

В файл /usr/lib/systemd/system/gitflic.service  внести следующие данные:

[Unit]
Description=Startup unit for run Gitflic service
Documentation=https://docs.gitflic.space/setup/users_docs/systemd
Requires=sshd.service redis.service network.target postgresql.service
After=sshd.service redis.service network.target rabbitmq-server.service postgresql.service

[Service]
Type=simple
User=root
Group=root

WorkingDirectory=/opt/gitflic/
ExecStart=/usr/bin/java -jar /opt/gitflic/gitflic.jar --spring.config.additional-location=file:/etc/gitflic/
ExecStop=/bin/kill -s 15 $MAINPID
Restart=on-failure
RestartSec=30

[Install]
WantedBy=multi-user.target

Прописать и запустить службу:

sudo systemctl daemon-reload
sudo systemctl enable gitflic.service
sudo systemctl start gitflic.service

Сервис стартует не мгновенно, поэтому после запуска необходимо пару минут подождать.

Работа с системой

После настройки переходим по URL сервера, на котором развернули Gitflic. Пример, http://192.168.31.124, проходим авторизацию и настраиваем систему под свои нужды.

Стандартный логин и пароль:

Почта: adminuser@admin.local
Пароль: qwerty123

Официальная документация https://docs.gitflic.space

Хранение настроек

Настройки хранятся в файле /etc/gitflic/application.properties

Если в момент настройки системы через скрипт вы где-то ошиблись или хотите поменять в будущем какие-либо настройки, то правьте данный файл. В нём же можно изменить настройки email для уведомлений.

Файлы

Прикладываю архив с файлами rabbitmq.repo и gitflic.service.