TinySQL

Git deploymentПОмимо контроля версий кода git можно использовать как простой инструмент развертывания сервисов и приложений на любой сервер. Есть несколько методов деплоймента с помощью git`a, я же опишу наиболее распространенный и корректный.

Простое решение

для небольших сайтов

  • 100% переносимость
  • Простой интерфейс
  • Скорость ограничена только возможностями HDD
  • API для тех, кто желает разнести UI и ServerSide (в разработке)

Используем git для деплоя

Git deploymentПОмимо контроля версий кода git можно использовать как простой инструмент развертывания сервисов и приложений на любой сервер. Есть несколько методов деплоймента с помощью git`a, я же опишу наиболее распространенный и корректный.

Git hooks По факту - хуки (hooks) это небольшие скрипты которые запускаются git-ом при наступлении различных событий, что создает возможность добавлять нестандартный функционал обычным командам git-a.

Итак, приступим. Для начала на сервере установим git-клиент и создадим необходимый репозиторий:

cd /var mkdir repository
cd repository mkdir somesite.git
cd somesite.git git init --bare

# Опция --bare создаст нам репозиторий

Далее создаем нужный нам hook. В Git также есть примеры скриптов-триггеров:

applypatch-msg.sample
pre-push.sample
commit-msg.sample
pre-rebase.sample
post-update.sample
prepare-commit-msg.sample
pre-applypatch.sample
update.sample
pre-commit.sample

# Хуки размещаются в дирректории ./hooks

Вариантов тут масса, но я использую хук post-receive. Вот примерно с таким содержанием

#!/bin/sh
cd /var/www/somesite.com
git checkout master
git pull

# Чекаут ветки master и pull ее содержимого

Такой скрипт можно написать на Bash, Perl, Python (главное, чтобы на сервере был установлен необходимый интерпретатов).

Также этому скрипту нужно установить флаги исполнения:

chmod +x hooks/post-receive
# Разрешаем исполнение скрипта

Теперь переходим к локальному git, который будет передавать данные на сервер.

Не забываем задать удаленный путь в git такой командой:

git remote add production ssh://[email protected]/var/repository/somesite.git
# Таких путей может быть несколько 

Вот и все. Теперь по выполнении команды git push на вашей локальной машине git выполнить переключение в ветку master и за-pull-ит все изменения на сервер.

git push production master


Создание сайта и поддержка проекта - ООО "Сайт!"