Простейший автоматический деплой сайта из git-репозитория на веб-сервер

Простейший автоматический деплой сайта из git-репозитория на веб-сервер

При разработке сайтов часто встаёт задача наладить автоматическую выгрузку файлов сайта на веб-сервер. Быстрое гугление по данной теме приводит сложные и запутанные решения, я же поделюсь очень простым. Предполагается, что у вас уже есть базовые знания Linux и Git.

Итак, у вас имеется локальный сайт, git-репозиторий и удалённый сервер с debian-подобным линуксом. Допустим, на сервере сайт лежит в папке /var/www/site/.

Сначала необходимо создать в репозитории новую ветку, например, deploy. Всё, что попадёт в неё, будет выгружено на сервер.

Теперь переходим к серверу. Если не установлен гит, устанавливаем:

sudo apt-get install git

Затем клонируем репозиторий в папку с сайтом (из-за особенностей гита она должна быть пуста):

cd /var/www/site/
git clone АДРЕС_РЕПОЗИТОРИЯ .

Система попросит логин и пароль.

Переключаемся на нашу специальную ветку:

git checkout deploy

Теперь можно при помощи команды git pull обновлять сайт. Но ведь это не очень похоже на полностью автоматический способ, верно? Идём дальше.

Во-первых, чтобы каждый раз не вводить логин и пароль, выполняем следующую команду:

git config credential.helper store

Во-вторых, настроим выполнение команды git pull раз в минуту. Для этого создаём скрипт обновления:

nano /var/www/deploy.sh

Вставляем в него следующий текст:

#!/bin/sh
cd /var/www/site/
git pull > /dev/null

Не забываем разрешить выполнение скрипта:

chmod +x /var/www/deploy.sh

Добавляем скрипт в крон:

crontab -e

В конец файла копируем строчку:

* * * * * /var/www/deploy.sh

Собственно, на этом всё. Пушите ваш код в ветку deploy — он автоматически заливается на удалённый сервер.