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 \ --disabled-password \ --home /home/git \ git |
3. Установка и настройка MySQL БД
Следующим этапом будет подготовка БД. Как одним из вариантов можно использовать MySQL.
Давайте его установим:
1 |
sudo apt install mysql-server |
Далее заходим в консольную утилиту mysql
1 |
mysql -u root -p |
*пароль пустой
Сразу же зададим пароль для 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 apt-get install nginx |
Теперь нужно отредактировать конфиг. Будем использовать nano. Это редактор более удобный и интуитивно понятный чем vi или vim.
1 |
nano /etc/nginx/sites-available/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_size 512M; proxy_pass http://localhost:3000; proxy_set_header Host $host; proxy_set_header X-Real-IP $remote_addr; proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for; proxy_set_header X-Forwarded-Proto $scheme; } } |
5. Установка и настройка Gitea
Переходим в эту директорию
1 |
cd /usr/local/bin |
Теперь качаем последнюю версию gitea
1 |
curl -s 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 +x gitea-1.20.4-linux-amd64 mv gitea-1.20.4-linux-amd64 gitea |
Далее нужно создаем структур папок и выставить для них доступы
1 2 3 4 5 6 7 |
sudo mkdir -p /etc/gitea /var/lib/gitea/{custom,data,indexers,public,log} sudo chown git:git /var/lib/gitea/{data,indexers,log} sudo chmod 750 /var/lib/gitea/{data,indexers,log} sudo chown root:git /etc/gitea sudo chmod 770 /etc/gitea sudo mkdir -p /usr/local/bin/data sudo chown -R git: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 web --config /etc/gitea/app.ini Restart=always Environment=USER=git HOME=/home/git GITEA_WORK_DIR=/var/lib/gitea [Install] WantedBy=multi-user.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 set -e git pull origin master npm install npm run prod |
8. Заключение
Данное решение не является панацеей, оно подойдет для небольшой фирмы или организации. Это всего лишь одни из вариантов как можно организовать совместную разработку продукта не используя сторонние сервисы.