Мне иногда попадаются заказчики использующие git для хранения своих проектов и, вместе с этим, выгружающие их на боевые серверы через FTP. Эта простая инструкция позволит попробовать деплоить свои проекты через git.

Если вы ранее не работали с git, то вам трудно будет понять что и как делать. Для использования данной инструкции необходимо уметь работать с git’ом.

Для начала нам нужен основной репозиторий проекта (master). Скорее всего он у вас уже есть. Если же нет, то создайте его и закоммитьте в него свой проект. В нем будет осуществляться вся разработка. Эта версия проекта будет работать на компьютере разработчика со всеми необходимыми настройками (данными для подключению к БД, кешами и т.д.). Чтобы другие разработчики могли участвовать в проекте, выложите master-ветку на один из git-сервисов, например, на github.com, bitbucket.org, свой gitlab-сервер и так далее.

Подготовка боевой версии проекта

Для боевой версии сайта создадим отдельную ветку – “production”. Её мы подготовим для работы с боевым сервером, то есть берем нашу master-ветку и выставляем все необходимые настройки: подключение к БД production-сервера, отключение вывода ошибок, отключения лишнего логирования, деактивация модулей тестирования и так далее. Проще говоря, ветка “production” будет представлять из себя полностью подготовленный проект для работы на боевом сервере. После подготовки выгружаем нашу новую ветку на git-сервер, где уже хранится master-ветка. Именно с этого git-сервера мы будем получать production-ветку для боевого сервера.

Первая выгрузка проекта на боевой сервер

Создаем репозиторий на боевом сервере и закачиваем в него нашу production-ветку. После этого проводим дополнительную настройку, например, обновляем библиотеки composer’a, активируем миграции и так далее. Вот пример того как это можно сделать:

Обновление проекта на боевом сервере

Сливаем master-ветку в production-ветку для обновления кода (переходим на ветку production и делаем merge с master). Проверяем все выставленные настройки, все ли нормально соединилось. Отправляем все изменения на git-сервер. Обновляем production-ветку на сервере с git-сервера через pull, вот так:

После обновления кода может потребоваться повторно обновить библиотеки composer’a, миграции и так далее.

Безопасность

Чтобы не допустить утечек исходников проекта, вам необходимо закрыть доступ к .git папке, так как в ней находятся исходники. Также желательно, чтобы корневая директория проекта (DocumentRoot имеется ввиду) вела на какую-нибудь публичную директорию без git.

Например:

Таким образом, ваш репозиторий окажется в большей безопасности. В разных проектах/cms/фреймворках “project_public_directory” называется по-разному, например, “public”, “web”, “www” и так далее. Эта директория нужна для размещения в ней публичных файлов (эти файлы предназначены для обычных пользователей и доступны всем), таких как фронт-контроллеры (index.php), css-стили, js-скрипты, изображения, шрифты и другие.

Другие способы разворачивания проектов

В сети вы можете найти большое количество различных туториалов по деплою проектов не только через git, но и через специальные инструменты наподобие Capistrano и Deployer.  Эти инструменты лучше использовать для крупных проектов, где процесс разворачивания и обновления требует большого количества действий, а для малых и небольших или личных проектов вполне подойдет эта инструкция.

Полезные ссылки:

Добавить комментарий