Git для развертывания небольших веб-приложений

Git может использоваться не только для версионирования, но также для развертывания сервисов и приложений на производственный сервер. Git deployment

Как и в случае с выкаткой при помощи SVN, существует несколько методов для более удобного и простого деплоймента на базе Git, но мы рассмотрим самый корректный и распространенный.

Git hooks

Система разрабатывалась как более современная и удобная альтернатива Subversion, так что многие полезные свойства SVN были использованы на благо разработчиков. Hooks одна из таких фич. И работают хуки по тому же принципу, что и в svn, ведь это тоже небольшие скрипты, которые автоматически запускаются по определенным событиям.

Но для начала на производственном сервере нужно установить 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

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

Подходов может быть несколько, но мы рекомендуем создать новый хук post-receive с похожим содержанием:

#!/bin/sh
GIT_WORK_TREE=/var/www/somesite.com git checkout -f

# Чекаут последней версии в существующую директорию сайта

Учтите, что скрипт может быть написан на любом понятном серверу языке, будь то Bash, Python, Ruby и т.д. Новому файлу нужно выдать необходимые разрешения:

chmod +x hooks/post-receive

# Разрешает выполнение скрипта

Далее возвращаемся к локальному репозиторию git, который будет передаваться на сервер. Системе нужно задать удаленный путь:

git remote add production ssh://root@somesite.com/var/repository/somesite.git

# Таких удаленных путей может быть несколько

Вот и все. После завершения разработки и проверки работоспособности веб-сайта (сервиса или приложения) все изменения автоматически развернутся на производственном сервере по команде:

git push production master

# Таким образом можно развернуть любую нужную ветку репозитория

По такому же принципу можно настроить тестовый сервер для проверки работоспособности приложения и даже перемещать разработки с тестового на производственный сервер.

Меры безопасности

Директория .git по умолчанию доступна всем пользователям сайта, так что ее нужно спрятать или закрыть к ней доступ для всех пользователей. Мы рекомендуем второй вариант. Для этого в файле конфигурации веб-сервера (Nginx в качестве примера) в секции http можно добавить:

location ~ /\. {
		deny all;
		return 404;
}

# Запрет на доступ ко всем скрытым файлам

Теперь никто не сможет добраться до ваших исходников.

Самое главное

Возможно Git и не является лучшим решением для развертывания больших веб-приложения, тем более, что для этой цели существует много хороших сервисов. Но система идеально подходит для деплоймента небольшого сайта/приложения, проста в настройке и доступна даже начинающим разработчикам.


Подпишитесь на Хайлоад с помощью Google аккаунта
или закройте эту хрень