🐹 CentOS 7: Установка и настройка Gitea.

Содержание:

1. Введение.

1.1. Что такое Gitea.
1.2. Аналоги.
1.3. Цели проекта.
1.4. Особенности проекта.
1.5. Системные требования.

2. Предварительная настройка сервера.
3. Установка и настройка системы баз данных MariaDB.
4. Создание базы данных MariaDB.
5. Подготовка среды Gitea.
6. Настройте рабочий каталог Gitea.
7. Установка Gitea.
8. Настройка брандмауэра.
9. Запуск Gitea.
10. Технический пользователь giteauser.
11. Настройки безопасности.

11.1. Защита файла конфигурации.
11.2. Отключение shell-оболочки.

12. Автоматический запуск Gitea.

12.1. Запуск в фоновом режиме.
12.2. Запуск в утилите screen.
12.3. Запуск в виде службы.

13. Перезапуск Gitea (без systemd).
14. Обновление Gitea.
15. Как начать пользоваться Gitea.
16. Оригиналы источников информации.


1. Введение.

1.1. Что такое Gitea.

Gitea — это альтернативная система управления версиями с открытым исходным кодом, работающая на Git. Gitea написана на Golang и является легким решением для любой платформы. По сути дела это программное обеспечение для хостинга IT-проектов и совместной разработки на базе Git. Поддерживает отслеживание ошибок, wiki и обзора кода. Gitea поддерживает самостоятельный хостинг, но также существует и бесплатный сервис.

Ссылка на проект: gitea.io.

Ссылка на документацию проекта: docs.gitea.io.

Ссылка на расположение актуальной версии Gitea для скачивания: dl.gitea.io/gitea/.

1.2. Аналоги.

Gitea является сильно упрощенным аналогом системы GitLab.

Ссылка: «CentOS 7: Установка и настройка GitLab».

1.3. Цели проекта.

Основной целью проекта Gitea является создание собственного сервиса Git, который чрезвычайно прост в установке, работает очень быстро, имеет хорошую установку и удобство работы с пользователем.

1.4. Особенности проекта.

  • Сроки поддержки событий.
  • Поддерживает протоколы SSH и HTTP/HTTPS.
  • Поддержка SMTP, LDAP и аутентификации пользователя обратного прокси.
  • Поддержка обратного прокси.
  • Поддержка пользователей, организаций и систем управления.
  • Поддержка добавления и удаления сотрудников склада.
  • Поддержка web-хуков на уровне хранилища и организации (включая интеграцию Slack).
  • Поддержка склада Git-хуков и ключей развертывания.
  • Поддержка складского заказа (выпуск), запрос на слияние (запрос на извлечение) и wiki.
  • Поддержка миграции и зеркалирования репозиториев и их wiki.
  • Поддержка онлайн редактирования файлов склада и вики.
  • Поддержка пользовательских источников Gravatar и Federated Avatar.
  • Служба поддержки почты.
  • Поддержка фоновой панели управления.
  • Поддержка баз данных MySQL, PostgreSQL, SQLite3, MSSQL и TiDB (экспериментальная поддержка).
  • Поддержка многоязычной локализации (21 язык).

Подробнее на сайте производителя программного обеспечения.

Ссылка: https://docs.gitea.io/en-us/.

1.5. Системные требования.

  • Минимальное требование к системному оборудованию — дешевый Raspberry Pi.
  • Если используется для командных проектов, рекомендуется использовать 2-ядерный процессор и 1 ГБ памяти.

2. Предварительная настройка сервера.

Полностью обновим операционную систему:

# yum -y update && yum -y upgrade

Установим актуальную версию Git.

Проверим какая версия Git на сервере:

# git --version

Ответ:

Установим репозиторий End Point Software Package Repositories.

Ссылка: «CentOS 7: Репозиторий End Point Software Package Repositories».

Удалим старую версию Git на сервере:

# yum -y remove git

или

# yum -y remove git-*

После установки репозитория End Point Software Package Repositories установим Git и прочие сопутствующие программы уже из него:

# yum -y install git wget mc

Проверим какая версия Git на сервере:

# git --version

Ответ:

3. Установка и настройка системы баз данных MariaDB.

Для хранения информации на сервере используется MariaDB — ответвление от системы управления базами данных MySQL.

Ссылка: «CentOS 7: Установка и настройка системы баз данных MariaDB. Создание базы данных».

4. Создание базы данных MariaDB.

После установки и завершения настройки, подключиться к MariaDB серверу.

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

# mysql -uroot -p

Придумываем имя для базы данных и создаем ее:

# CREATE DATABASE name_of_db character set utf8 collate utf8_bin;

Создаем пользователя для этой базы данных:

# CREATE USER user_of_db@localhost;

Устанавливаем ему пароль:

# SET PASSWORD FOR user_of_db@localhost=PASSWORD("password_of_db");

Делаем этого пользователя хозяином новоиспеченной базы:

# GRANT ALL PRIVILEGES ON name_of_db.* TO user_of_db@localhost IDENTIFIED BY 'password_of_db' WITH GRANT OPTION;

Перезапускаем привилегии базы:

# FLUSH PRIVILEGES;

Выходим из базы:

# exit

Готово!

5. Подготовка среды Gitea.

Создайте необходимую структуру каталогов для работы Gitea:

# mkdir -p /var/lib/gitea/{custom,data,indexers,public,log}
# mkdir -p /var/lib/gitea/data/{gitea-repositories,lfs}

# mkdir -p /etc/gitea

6. Настройте рабочий каталог Gitea.

Многие из следующих каталогов также могут быть настроены с использованием переменных среды! Следует отметить, что настройка GITEA_WORK_DIR укажет Gitea, где разместить свой рабочий каталог, а также упростит установку.

Примечание! Если вы планируете запускать Gitea как службу Linux, вы можете пропустить этот шаг, так как файл службы позволяет вам установить рабочий каталог. В противном случае рассмотрите возможность постоянной установки этой переменной среды (semi-), чтобы Gitea постоянно использовала правильный рабочий каталог.

# export GITEA_WORK_DIR=/var/lib/gitea/

7. Установка Gitea.

Двоичный файл Gitea можно загрузить, выполнив следующие команды.

Вы должны заменить ссылку ниже ссылкой на последнюю версию с этой страницы загрузки:

# cd /usr/local/bin/
# wget -O gitea https://dl.gitea.io/gitea/1.15.10/gitea-1.15.10-linux-amd64
# chmod +x gitea

Ссылка на расположение актуальной версии Gitea для скачивания: dl.gitea.io/gitea/.

Если вы скачали случайно этот файл в другое место, то просто перенесите двоичный файл gitea в /usr/local/bin/ местоположение:

# mv gitea /usr/local/bin/gitea

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

Настройте правила брандмауэра для Gitea, в зависимости от того, какой порт вы предпочтёте.

Разрешите трафик на порт Gitea по умолчанию порт 3000 в firewalld:

# firewall-cmd --add-port 3000/tcp --permanent
# firewall-cmd --reload

Внимание! Порт 3000 по умолчанию используется Grafana Server, если он у вас установлен. Eго можно легко поменять в главном файле настроек Grafana Server grafana.ini в каталоге /etc/grafana.

Ссылка: «CentOS 7: Установка и настройка Grafana Server».

Или поменяйте порт 3000 у Gitea.

Это возможно сделать с помощью ключа -p, например, /usr/local/bin/gitea web -p $PORT.

Для таких ошибок «702 runWeb()] [E] Failed to start server: listen tcp 0.0.0.0:3000: bind: address already in use», который уже используется, необходимо запустить Gitea на другом свободном порту.

Возможно, уже запущен другой экземпляр Gitea и нужно его закрыть.

9. Запуск Gitea.

Первый запуск Gitea выполняется вот такой вот комплексной командой:

# GITEA_WORK_DIR=/var/lib/gitea/ /usr/local/bin/gitea web -c /etc/gitea/app.ini -p 3000

Ответ:

Будет дано указание создать файл конфигурации по адресу /etc/gitea/app.ini. Этот путь и файл потом будет использован нами для создания systemd.

Заходим на web-интерфейс Gitea по IP-адресу сервера для первоначальной настройки:

# http://YOUR_SERVER_IP:3000

Нас поприветствует web-анкета первоначальной настройки Gitea.

Следуйте инструкциям на экране для завершения настройки Gitea.

Заполним анкету по смыслу:

Нажимаем Установить Gitea.

В начале нам покажут анимацию с зеленой кружкой, потом немного повисит ошибка соединения с сайтом:

И откроется страница приветствия Gitea:

# http://192.168.0.12:3000/admin

Вот такого вида:

Установка Gitea успешно завершена!

После первого запуска у нас формируется файл конфигурации /etc/gitea/app.ini, в котором будет содержаться вся наша первичная информация инициализации Gitea из анкеты первого запуска.

10. Технический пользователь giteauser.

Запуская бинарные программы непривилегированным техническим пользователем, вы автоматически усложняете процедуру вторжения в вашу систему потенциальных взломщиков.

Создайте технического пользователя для запуска Gitea:

# adduser --system --shell /bin/bash --comment 'Git Version Control' --user-group --home-dir /home/giteauser --create-home giteauser

Проверим пользователя и его группу:

# groups giteauser

Ответ:

Добавим права на использование каталогов Gitea пользователем giteauser:

# chown -R giteauser:giteauser /var/lib/gitea/
# chmod -R 750 /var/lib/gitea/

# chown giteauser:giteauser /etc/gitea/app.ini
# chmod 750 /etc/gitea/app.ini

11. Настройки безопасности.

11.1. Защита файла конфигурации.

Заходим в файл настроек /etc/gitea/app.ini и заменяем пользователя root на giteauser:

# mcedit /etc/gitea/app.ini

Было:

RUN_USER = root

Стало:

RUN_USER = giteauser

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

# chmod 640 /etc/gitea/app.ini

Если вы не хотите, чтобы web-установщик вообще мог записывать конфигурационный файл, также можно сделать конфигурационный файл доступным только для чтения для пользователя Gitea (owner/group root:git, mode 0640) и установить INSTALL_LOCK = true. В этом случае все детали конфигурации базы данных должны быть предварительно заданы в файле конфигурации, а также значения SECRET_KEY и INTERNAL_TOKEN. Смотрите документацию командной строки для получения информации об использовании gitea для создания секретного INTERNAL_TOKEN.

11.2. Отключение shell-оболочки.

Ранее мы создавали пользователя giteauser. Данную способность у пользователя giteauser нужно забрать, так как это прямая угроза в безопасности сервера.

Зайдем в системный файл, где хранятся все записи о пользователях:

# mcedit /etc/passwd

Найдем строку про нашего giteauser:

giteauser:x:1001:1001:Git Version Control:/home/giteauser:/bin/bash

Заменяем ее на эту строку по смыслу синтаксиса:

giteauser:x:1001:1001:Git Version Control:/home/giteauser:/sbin/nologin

Таким образом, если giteauser соберется воспользоваться консолью, то сервер ему это сделать не даст!

12. Автоматический запуск Gitea.

12.1. Запуск в фоновом режиме.

Можно запустить и просто в фоновом режиме:

# cd /home/giteauser

# su giteauser

# nohup /usr/local/bin/gitea web &

12.2. Запуск в утилите screen.

Можно воспользоваться утилитой screen.

Ссылка: «CentOS 7: Установка, настройка и эксплуатация утилиты screen».

12.3. Запуск в виде службы.

Можно создать файл службы:

# touch /etc/systemd/system/gitea.service

# mcedit /etc/systemd/system/gitea.service

Используя выбранный вами текстовый редактор, откройте этот вновь созданный файл и заполните его следующим текстом:

[Unit]
Description=Gitea (Git with a cup of tea)
After=syslog.target
After=network.target
###
# Don't forget to add the database service dependencies
###
#
#Wants=mysql.service
#After=mysql.service
#
Wants=mariadb.service
After=mariadb.service
#
#Wants=postgresql.service
#After=postgresql.service
#
#Wants=memcached.service
#After=memcached.service
#
#Wants=redis.service
#After=redis.service
#
###
# If using socket activation for main http/s
###
#
#After=gitea.main.socket
#Requires=gitea.main.socket
#
###
# (You can also provide gitea an http fallback and/or ssh socket too)
#
# An example of /etc/systemd/system/gitea.main.socket
###
##
## [Unit]
## Description=Gitea Web Socket
## PartOf=gitea.service
##
## [Socket]
## Service=gitea.service
## ListenStream=
## NoDelay=true
##
## [Install]
## WantedBy=sockets.target
##
###

[Service]
# Modify these two values and uncomment them if you have
# repos with lots of files and get an HTTP error 500 because
# of that
###
#LimitMEMLOCK=infinity
#LimitNOFILE=65535
RestartSec=3s
Type=simple
User=giteauser
Group=giteauser
WorkingDirectory=/var/lib/gitea/
# If using Unix socket: tells systemd to create the /run/gitea folder, which will contain the gitea.sock file
# (manually creating /run/gitea doesn't work, because it would not persist across reboots)
#RuntimeDirectory=gitea
ExecStart=/usr/local/bin/gitea web --config /etc/gitea/app.ini
Restart=always
Environment=USER=giteauser HOME=/home/giteauser GITEA_WORK_DIR=/var/lib/gitea
# If you install Git to directory prefix other than default PATH (which happens
# for example if you install other versions of Git side-to-side with
# distribution version), uncomment below line and add that prefix to PATH
# Don't forget to place git-lfs binary on the PATH below if you want to enable
# Git LFS support
#Environment=PATH=/path/to/git/bin:/bin:/sbin:/usr/bin:/usr/sbin
# If you want to bind Gitea to a port below 1024, uncomment
# the two values below, or use socket activation to pass Gitea its ports as above
###
#CapabilityBoundingSet=CAP_NET_BIND_SERVICE
#AmbientCapabilities=CAP_NET_BIND_SERVICE
###

[Install]
WantedBy=multi-user.target

Оригинал файла службы можно найти на сайте разработчика программного обеспечения.

Ссылка: https://github.com/go-gitea/gitea/blob/main/contrib/systemd/gitea.service.

Включите и запустите Gitea при загрузке:

# systemctl daemon-reload
# systemctl enable gitea.service
# systemctl start gitea.service

Убедитесь, что Gitea работает:

# systemctl status gitea.service

Заходим на web-интерфейс Gitea по IP-адресу сервера:

# http://YOUR_SERVER_IP:3000

Перезапуск Gitea с помощью systemd:

# systemctl restart gitea.service

13. Перезапуск Gitea (без systemd).

Установим специальную утилиту для прекращения процессов:

# yum -y install psmisc

Чтобы перезапустить ваш экземпляр Gitea, рекомендуется использовать сигнал SIGHUP.

Если вы знаете свой идентификатор Gitea, используйте kill -1 $GITEA_PID, в противном случае вы можете использовать use killall -1 gitea или pkill -1 gitea.

Чтобы аккуратно остановить экземпляр Gitea, достаточно простого kill $GITEA_PID или killall gitea.

Можно принудительно закрыть все сессии пользователя giteauser и прекратить все его сессии:

# killall -9 -u giteauser

Внимание! Не рекомендуется использовать сигнал SIGKILL (известный также как -9)! Можете принудительно останавливать некоторые внутренние задачи Gitea, и они не будут корректно остановлены (задачи в очередях, процессы индексаторов и так далее). В частности могут быть ошибки записи в базу данных и ей прейдёт критическое повреждение структур таблиц.

14. Обновление Gitea.

Внимание! Рекомендуется сделать резервную копию старого файла /usr/local/bin/gitea перед обновлением на новый файл /usr/local/bin/gitea!

Внимание! Имя двоичного файла /usr/local/bin/gitea не следует изменять во время обновления, чтобы избежать проблем обновления текущей базы данных Gitea от предыдущей версии файла /usr/local/bin/gitea.

Если вы выполнили шаги по установке, как описано выше, двоичный файл /usr/local/bin/gitea должен иметь обычное имя gitea. Не изменяйте его, то есть не включайте номер версии.

Вы можете обновить Gitea до новой версии:

  1. Остановите Gitea;
  2. Замените двоичный файл в /usr/local/bin/gitea и заново назначьте на него права;
  3. Перезапустив экземпляр Gitea.

15. Как начать пользоваться Gitea.

Как начать пользоваться Gitea я опишу чуть позднее и заменю этот текст.

16. Оригиналы источников информации.

  1. gitea.io «Gitea — Git with a cup of tea».
  2. cloudo3.com «Как установить Gitea на CentOS 7».
  3. russianblogs.com «CentOS 7 установить Gitea».
  4. vultr.com «How to Install Gitea on CentOS 7».
  5. computingforgeeks.com «Install Latest Git ( Git 2.x ) on CentOS 7».

Читайте также: