Vagrant — единое окружение для разработки

Преамбула

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

В современном мире WEB-разработки, разработчики уже давно перестали устанавливать окружение для разработки: PHP, WEB-сервер, СУБД и т.д. на свой локальный компьютер, на котором производят разработку.

Во-первых, установка и настройка занимает драгоценное время и силы.

Во-вторых, если разработчик работает на нескольких компьютерах (компьютер в офисе, дома, ноутбук), то достаточно проблематично настроить идентичное окружение везде и синхронизировать его настройку между всеми своими компьютерами. Эта проблема называется проблемой идентичности состояния, когда предполагается, что состав, версии и конфигурация всего ПО должна быть максимально идентичной.

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

В четвертых, состояние окружения вашего рабочего компьютера скорее всего не совпадает и не может совпадать с состоянием окружения вашего боевого (продакшн) сервера. Ведь у вас же Windows со всеми его причудами в конфигурировании, а на боевом сервере что-то однозначно другое.

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

Избежать этого хаоса вам поможет виртуализация окружения разработки. Вам нужна виртуальная машина, которая бы разворачивалась по заданному вами сценарию, чтобы ее можно было развернуть одним кликом на любом компьютере под любой операционной системой. Пока вы будете пить кофе, ваша виртуальная машина будет готова. Также вам нужны какие-то средства для быстрого и простого управления такой виртуальной машиной (запуск, остановка, реконфигурация). И еще было бы здорово, если бы в файловой системе этой виртуальной машины был каталог, который отображался с каталога вашей локальной машины. Например, чтобы каталог локальной машины D:\myProjects, где хранятся ваши проекты, соответствовал каталогу виртуальной машины /var/myProjects или подобному. Еще хотелось бы иметь возможность выполнять настоящую отладку с использованием PHP-xDebug, причем приложение должно выполняться в виртуальной среде, на виртуальной машине, а управлять им вы могли с локальной. Уже нравится? Идем дальше! Читать далее Vagrant — единое окружение для разработки