Материал подготовлен командой Simple-Server для администраторов VPS и выделенных серверов. Команды и пути проверяйте на тестовой машине перед production.
Кратко о задаче
Чтобы установить Git на Ubuntu, сначала откройте терминал, нажав Ctrl + Alt + T, или найдите и запустите терминал через поиск Ubuntu. Далее через sudo или под пользователем root обновите каталог пакетов:
и введите свой пароль, когда система запросит его. Теперь установите Git, выполнив следующее:
Подтвердите установку, нажав клавишу Y, и нажмите Enter. После завершения установки проверьте версию Git, чтобы убедиться, что установка прошла успешно:
Эта команда должна вернуть версию Git, например:
Также рекомендуется настроить ваше имя пользователя и 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. Для начала открываем список каталогов:
и переходим в каталог хуков:
Далее создаем собственно 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. Создаем локальный репозиторий
Сначала нам нужно разлогиниться на сервере:
Теперь создаем локальный репозиторий на своем ПК.__ Открываем терминал (в 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 commit -m "Готовый проект"Точка означает добавление всех файлов, а -m (сокращение от message) необходим для добавления сообщения. Теперь давайте запушим всё на сервер в мастер-ветку:
Шаг 5. Создаем бета-репозиторий
Не всегда хочется выполнять развертывание сразу: в некоторых случаях необходимо сначала провести тесты. Для этого снова логинимся на выделенном сервере и создаем такую директорию и репо:
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, а затем настраиваем разрешения, необходимые для исполнения файла, следующей инструкцией:
Настраиваем еще одну директорию (замените путь, указанный после 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 на сервере, но при этом ПО должно быть развернуто на локальной машине, поэтому тем, кто предпочитает работать полностью в облаке, такой способ не подойдет. На этом всё, желаем успехов!
Нужен сервер для практики? Закажите VPS на Simple-Server — root-доступ, NVMe, DDoS-защита и поддержка 24/7.