Давайте дружить в Телеграме: рассказываем про новые фичи, общаемся в комментах, прислушиваемся к вашим идеям Подписаться

Как настроить автоматическое развертывание с помощью Git на VPS

Роман Андреев
Роман Андреев
Технический писатель
25 мая 2023 г.
542
5 минут чтения
Средний рейтинг статьи: 5

В статье расскажем о том, как организовать автоматическое развертывание приложений через Git на VPS. В сети предлагается немало способов настройки Git для этого, однако мы решили выбрать самый быстрый и легкий. Но перед тем, как работать и настраивать Git, его сначала нужно установить — эту процедуру мы тоже рассмотрим. В статье мы описываем установку на Ubuntu, но она также подойдет для Debian. 

Шаг 1. Устанавливаем Git

Чтобы установить Git на Ubuntu, сначала откройте терминал, нажав Ctrl + Alt + T, или найдите и запустите терминал через поиск Ubuntu. Далее через sudo или под пользователем root обновите каталог пакетов:

apt-get update

и введите свой пароль, когда система запросит его. Теперь установите Git, выполнив следующее:

apt-get install git

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

git --version

Эта команда должна вернуть версию Git, например:

git version 2.25.1

Также рекомендуется настроить ваше имя пользователя и email, что нужно для корректной работы с Git. Делается это следующим образом:

git config --global user.name "My name"
git config --global user.email "my_mail@mysite.ru"

Замените My name и my_mail@mysite.com на ваше реальное имя и email. Чтобы проверить правильность настроек, введите:

git config --global user.name
git config --global user.email

Каждая строка должна вернуть соответствующее значение, которое вы указали для имени и email. Готово! Теперь у вас есть установленный и настроенный Git.

Шаг 2. Настраиваем сервер

Допустим, у нас есть рабочее пространство с определенной директорией (путь: /var/www/mysite.ru) и репозиторием (путь: /var/repo/mysite.git). Наша задача запушить mysite.git, но при этом обеспечить доступ к /var/www/mysite.ru. Залогиньтесь на своем VPS и введите в командной строке:

cd /var && mkdir repo && cd repo && mkdir mysite.git && cd mysite.git && git init --bare

Обратите внимание на флаг --bare, который необходим, чтобы исключить добавление исходников в директорию: там будет исключительно контроль версий нашего ПО.

Шаг 3. Устанавливаем хуки

В репозитории вы найдете директорию, она называется hooks. Там содержатся файлы с примерами хуков, используемые для индивидуальной настройки. Задачи хуков заключаются в том, чтобы автоматизировать некоторые типичные процедуры. Здесь стоит заметить, что в ряде инструкций по Git в сети встречается название «крючки», что представляет собой дословный перевод этого слова с английского. Но такой перевод некорректен, и правильно говорить и писать именно «хуки». Согласно документации разработчиков сервиса, основных хуков 3:

  • pre-receive исполняется после получения push,
  • update же действует похожим образом, однако его отличие в том, что он исполняется единожды для каждой ветки проекта,
  • наконец, post-receive исполняется после полного завершения push.

Давайте настроим необходимый нам в данной инструкции post-receive. Для начала открываем список каталогов:

ls

и переходим в каталог хуков:

cd hooks

Далее создаем собственно post-receive, вот так:

cat > post-receive

Приведенная ниже команда создаст файл и запишет в него:

#!/bin/sh git --work-tree=/var/www/mysite.ru --git-dir=/var/repo/mysite.git checkout -f

После этого сохраняем наш ввод комбинацией Ctrl + D. Добавим, что если вы хотите установить иную директорию  для переноса файлов, используйте флаг --work-tree, как в инструкции выше. А на этом хуки для работы можно считать установленными: в нашем примере добавленный хук будет контролировать размещение в /var/www/mysite.ru после завершения отправки.

Шаг 4. Создаем локальный репозиторий

Сначала нам нужно разлогиниться на сервере:

exit

Теперь создаем локальный репозиторий на своем ПК. Открываем терминал (в Linux) или командную строку (в Windows). Переходим в папку, где хотим создать свой локальный репозиторий, используя команду cd, а затем вводим git init, чтобы инициализировать Git репозиторий в текущей папке. Эта команда создаст в каталоге скрытую папку .git, которая будет содержать все необходимые файлы и данные для работы с Git.

После этого настраиваем директорию для репо (замените путь, указанный после ssh://, на свой):

git remote add live ssh://login@host/var/repo/mysite.git

Заметьте, что путь должен вести именно на репо. Далее создаем файл:

echo 'Hello, world' > hello.txt

И добавляем коммит:

git add .
git commit -m "Готовый проект"

Точка означает добавление всех файлов, а -m (сокращение от message) необходим для добавления сообщения. Теперь давайте запушим всё на сервер в мастер-ветку:

git push live master

Шаг 5. Создаем бета-репозиторий

Не всегда хочется выполнять развертывание сразу: в некоторых случаях необходимо сначала провести тесты. Для этого снова логинимся на выделенном сервере и создаем такую директорию и репо:

mkdir -p /var/www/beta
cd /var/repo && mkdir beta.git && cd beta.git && git init --bare

Далее добавляем знакомый хук:

cd hooks && cat > post-receive

После этого:

#!/bin/sh git --work-tree=/var/www/mysite.ru --git-dir=/var/repo/mysite.git checkout -f

Теперь сохраняем наш ввод комбинацией Ctrl + D, а затем настраиваем разрешения, необходимые для исполнения файла, следующей инструкцией:

chmod +x post-receive

Возвращаемся в наш репо:

exit
cd /my/workspace/project

Настраиваем еще одну директорию (замените путь, указанный после ssh://, на свой):

git remote add beta ssh://login@host/var/repo/beta.git

Готово. Теперь перед развертыванием можно сначала запушить бету:

echo 'Hello, world' > hello.txt
git add .
git commit -m "Новая версия"
git push beta master

А уже затем можно развернуть и «боевой» вариант.

Заключение

Мы научились устанавливать Git, настраивать сервер, устанавливать хуки, а также создавать репозитории: локальный и бета для тестирования. Автоматическое развертывание Git на VPS значительно облегчит вам работу над проектом.

Также стоит добавить, что существуют и другие методы развертывания, в частности, без установленного Git на сервере, но при этом ПО должно быть развернуто на локальной машине, поэтому тем, кто предпочитает работать полностью в облаке, такой способ не подойдет. На этом всё, желаем успехов!

Зарегистрируйтесь и начните пользоваться
сервисами Timeweb Cloud прямо сейчас

15 лет опыта
Сосредоточьтесь на своей работе: об остальном позаботимся мы
165 000 клиентов
Нам доверяют частные лица и компании, от небольших фирм до корпораций
Поддержка 24/7
100+ специалистов поддержки, готовых помочь в чате, тикете и по телефону