Настройка собственного Git сервера с помощью Gitea

1.Немного о Gitea

Gitea — это удобная система управления репозиториями Git, которая предлагает простой пользовательский интерфейс и все необходимые функции для эффективной разработки и сотрудничества над проектами. Если вы знакомы с другими системами Git, такими как GitHub, Bitbucket или GitLab, то Gitea будет знакомым и удобным решением для вас.

Почему именно Gitea? Она абсолютна бесплатна по сравнению с другими системами. Ее легко настроить под свои задачи. В этой статье, я расскажу об этом.

2. Настройка Ubuntu Server

И так начнем. Тут все просто. Выбираем какой нить виртуальный сервер, на него ставим Ubuntu Server. Заходим по ssh и ставим обнову.

1

2

sudo apt update

sudo apt upgrade

Далее нам нужно создать пользователя под которым будет работать gitea.

1

2

3

4

5

6

7

8

sudo adduser\

   system\

   shell/bin/bash\

   gecos‘Git Version Control’\

   group\

   disabledpassword\

   home/home/git\

   git

3. Установка и настройка MySQL БД

Следующим этапом будет подготовка БД. Как одним из вариантов можно использовать MySQL.

Давайте его установим:

1

sudo apt install mysqlserver

Далее заходим в консольную утилиту mysql

1

mysqlurootp

*пароль пустой

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

1

ALTER USER‘root’@‘localhost’IDENTIFIED BY‘12345678’;

Теперь нам нужно создать БД

1

CREATE DATABASE gitea;

Создаем пользователя для работы с БД

1

CREATE USER‘gitea’@‘localhost’IDENTIFIED BY‘12345678’;

Дадим ему права для доступа к БД

1

GRANT ALL PRIVILEGES ON`gitea`.*TO‘gitea’@‘localhost’;

И обновим привилегии:

1

FLUSH PRIVILEGES;

Все готово! для выхода из консольной утилиты пишем exit

4. Установка и настройка Nginx

Для того что бы мы могли получить доступ к gitea через web интерфейс, нам нужно установить и настроить Nginx.

Выполняем команду

1

sudo aptget install nginx

Теперь нужно отредактировать конфиг. Будем использовать nano. Это редактор более удобный и интуитивно понятный чем vi или vim.

1

nano/etc/nginx/sitesavailable/default

Вставляем туда вот эти настройки:

1

2

3

4

5

6

7

8

9

10

11

12

server{

    server_name domen.ru www.domen.ru;

    location/{

        client_max_body_size512M;

        proxy_pass http://localhost:3000;

        proxy_set_header Host$host;

        proxy_set_headerXRealIP$remote_addr;

        proxy_set_headerXForwardedFor$proxy_add_x_forwarded_for;

        proxy_set_headerXForwardedProto$scheme;

    }

}

5. Установка и настройка Gitea

Переходим в эту директорию

1

cd/usr/local/bin

Теперь качаем последнюю версию gitea

1

curls  https://api.github.com/repos/go-gitea/gitea/releases/latest |grep browser_download_url  |  cut -d ‘»‘ -f 4  | grep ‘\linux-amd64$’ | wget -i —

Установим права на выполнение файла и переименуем его

1

2

chmod+xgitea1.20.4linuxamd64

mv gitea1.20.4linuxamd64 gitea

Далее нужно создаем структур папок и выставить для них доступы

1

2

3

4

5

6

7

sudomkdirp/etc/gitea/var/lib/gitea/{custom,data,indexers,public,log}

sudo chown git:git/var/lib/gitea/{data,indexers,log}

sudochmod750/var/lib/gitea/{data,indexers,log}

sudo chown root:git/etc/gitea

sudo chmod770/etc/gitea

sudo mkdirp/usr/local/bin/data

sudo chownRgit:git/usr/local/bin/data

Из под пользователя root gitea не запуститься. По этому создадим службу для запуска gitea под пользователем git, которого мы создали ранее.

Создаем файл gitea.service

1

nano/etc/systemd/system/gitea.service

И копируем туда следующие настройки:

1

2

3

4

5

6

7

8

9

10

11

12

13

14

15

[Unit]

Description=Gitea

After=syslog.target

After=network.target

[Service]

RestartSec=3s

Type=simple

User=git

Group=git

WorkingDirectory=/var/lib/gitea/

ExecStart=/usr/local/bin/gitea webconfig/etc/gitea/app.ini

Restart=always

Environment=USER=git HOME=/home/git GITEA_WORK_DIR=/var/lib/gitea

[Install]

WantedBy=multiuser.target

Далее активируем и запускаем сервис

1

2

sudo systemctl enable gitea

sudo systemctl start gitea

И проверяем его статус

1

sudo systemctl status gitea

Если все ок, то увидим следующее

6. Первый запуск

Перезапускаем nginx

1

sudo systemctl restart nginx

Открываем в браузере адрес который указали в конфиге.

Если все ок, то увидим следующее

Указываем БД имя пользователя и пароль которые мы создали ранее.

И не забываем про настройки админа(имя admin зарезервировано, так что придумайте что то другое)

Остальное не трогаем!

Нажимаем на кнопку Установить Gitea и ждем когда завершиться установка.

Поздравляю, теперь у вас есть git сервер.

7.Настройка автодеплоя

У Gitea есть поддержка веб-хуков. А это значит мы можем запустить свой скрипт, привязавшись к какому-нибудь событию. Например когда был сделан мердж в ветку master.

Для этого нужно зайти в раздел веб-хуки. Указать url обработчика, секретный ключ(придумываем сами) и ветку к которой будем привязываться.

Вот пример кода на PHP в котором показывается как реализовать обработчик.

К примеру мы можем запустить sh скрипт.

И вот пример deploy.sh

1

2

3

4

5

#!/bin/sh

sete

git pull origin master

npm install

npm run prod

8. Заключение

Данное решение не является панацеей, оно подойдет для небольшой фирмы или организации. Это всего лишь одни из вариантов как можно организовать совместную разработку продукта не используя сторонние сервисы.