Git для развертывания небольших веб-приложений
Git может использоваться не только для версионирования, но также для развертывания сервисов и приложений на производственный сервер.
Как и в случае с выкаткой при помощи 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://[email protected]/var/repository/somesite.git
## Таких удаленных путей может быть несколько
Вот и все. После завершения разработки и проверки работоспособности веб-сайта (сервиса или приложения) все изменения автоматически развернутся на производственном сервере по команде:
git push production master
## Таким образом можно развернуть любую нужную ветку репозитория
По такому же принципу можно настроить тестовый сервер для проверки работоспособности приложения и даже перемещать разработки с тестового на производственный сервер.
Меры безопасности
Директория .git по умолчанию доступна всем пользователям сайта, так что ее нужно спрятать или закрыть к ней доступ для всех пользователей. Мы рекомендуем второй вариант. Для этого в файле конфигурации веб-сервера (Nginx в качестве примера) в секции http можно добавить:
location ~ /. {
deny all;
return 404;
}
## Запрет на доступ ко всем скрытым файлам
Теперь никто не сможет добраться до ваших исходников.
Самое главное
Возможно Git и не является лучшим решением для развертывания больших веб-приложения, тем более, что для этой цели существует много хороших сервисов. Но система идеально подходит для деплоймента небольшого сайта/приложения, проста в настройке и доступна даже начинающим разработчикам.
Сообщить об опечатке
Текст, который будет отправлен нашим редакторам: