Вступительное слово
Изначально я разрабатывал этот проект для родной веб-студии. Я начинал разработку со следующими принципами:
- Среда должна разворачиваться максимально просто, с этим должен справиться любой новичок-стажер или даже менеджер, если понадобится.
- Среда должна обеспечивать меня и любого разработчика всем необходимым серверным ПО, при этом инкапсулируя его в виртуальной среде.
- Сами файлы проектов должны находиться в каталоге, разделяемом хостом и виртуальной машиной, а именно в каталоге проектов IDE. Даже если разработчик — ярый сторонник текстовых редакторов и поклялся на крови, что никогда его жесткий диск не примет в себя ни одной IDE, ему этот принцип так же будет на руку.
- Хост должен иметь доступ к СУБД, Memcache и Sphinx, запущенным на виртуальной машине, для проведения работ, не требующих «тяжелой артиллерии», а значит проводящихся прямо на машине разработчика — например, для разработки на Django или разработки утилит, общающихся с этими сервисами.
- Должен быть легкий способ сделать резервную копию данных, спрятанных в виртуальной машине.
Но позже я понял, что наши потребности не слишком расходятся с потребностями других веб-разработчиков, а значит, не будет лишним поделиться с народом этим проектом. К тому же, если к нему будет проявлен интерес, и я получу фидбек, а то и пул-реквесты (а я буду несказанно счастлив, если получу все это), это несомненно повысит качество разработки. К тому же, даже если кому-то сама данная разработка покажется неинтересной, описанные мной детали могут помочь в создании собственной среды на базе выбранных мной технологий.
Для достижения поставленных целей я выбрал Vagrant, так как нет по моему скромному мнению более удачной утилиты для распространения виртуальных машин для разработки. Из списка базовых боксов я выбрал машину на моем любимом и очень популярном Debian Wheezy, к тому же размер выбранного бокса всего 295 Мб.
Проект находится на GitHub'е и ждет своего часа. Он обеспечивает:
- Веб-сервер (Apache 2.2 + PHP 5.4),
- Xdebug с возможностями удаленной отладки, профилирования и создания трейсов по триггеру,
- СУБД: MySQL, PostgreSQL, Redis,
- Memcache,
- Sphinx с организацией удобной конфигурации с помощью
conf.d
.
Так же внутри установлены PHPUnit + DBUnit, Python 2, SQLite и еще некоторое количество приятных вещей. Этот набор сервисов обусловлен нашими потребностями, но если сообществу будет интересно видеть что-то еще — не думаю, что будет проблемой добавить это.
Не будет лишним упомянуть, что в каталоге bin имеются различные утилиты для повышения удобства работы и для управления состоянием виртуальной машины.
VagrantWebdev был протестирован на Windows и на Ubuntu 13.10, и я был бы очень благодарен за помощь в тестировании на других платформах.
Далее я хочу поделиться подробностями о разработке и возможностях VagrantWebdev, которые могут быть просто интересны, могут помочь в использовании или при разработке собственного проекта на базе тех же технологий.
Читать полностью »