В статье расскажем о том, как организовать автоматическое развертывание приложений через Git на VPS. В сети предлагается немало способов настройки Git для этого, однако мы решили выбрать самый быстрый и легкий. Но перед тем, как работать и настраивать Git, его сначала нужно установить — эту процедуру мы тоже рассмотрим. В статье мы описываем установку на Ubuntu, но она также подойдет для Debian.
Чтобы установить 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.
Допустим, у нас есть рабочее пространство с определенной директорией (путь: /
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
, который необходим, чтобы исключить добавление исходников в директорию: там будет исключительно контроль версий нашего ПО.
В репозитории вы найдете директорию, она называется 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
после завершения отправки.
Сначала нам нужно разлогиниться на сервере:
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
Не всегда хочется выполнять развертывание сразу: в некоторых случаях необходимо сначала провести тесты. Для этого снова логинимся на выделенном сервере и создаем такую директорию и репо:
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 на сервере, но при этом ПО должно быть развернуто на локальной машине, поэтому тем, кто предпочитает работать полностью в облаке, такой способ не подойдет. На этом всё, желаем успехов!