Окружение для разработки — одна из самых обсуждаемых тем в последнее время. И это неспроста. Технологии развиваются, процессы автоматизируются, все более ускоряя процесс разработки, и тратить время на рутинные операции — это уже непозволительная роскошь.
В эру облачных решений локальная разработка уже не единственный возможный вариант, но и списывать ее со счетов еще рано.
Vagrant — это инструмент для быстрого развертывания окружения для разработки на основе систем виртуализации. Vagrant — универсальное, удобное и хорошо зарекомендовавшее себя решение, которое пригодится любому разработчику. Vagrant разработан в соответствии с принципами unix-way и управляется из командной строки.
Vagrant доступен для всех популярных операционных систем (ОС), и работает со всеми популярными виртуальными машинами (ВМ). В моем случае это были macOS и Parallels, но процесс не будет сильно отличаться для других платформ.
Установка Vagrant
Нам понадобятся:
- виртуальная машина: VirtualBox, VMware или Parallels
- сам Vagrant
- опционально: плагины для Vagrant (в моем случае понадобился плагин vagrant-parallels)
Процесс установки предельно прост, подробно на нем останавливаться не будем.
В качестве основы Vagrant использует специально собранные образы операционных систем — боксы. Найти их можно, например, тут. Для Drupal-разработчиков подойдет практически любой дистрибутив Linux. Если вы уже увидели свой любимый дистрибутив, то вы всего в двух командах от того, чтобы развернуть виртуальную ОС. Но есть более интересная возможность — это использовать скрипты для автоматической конфигурации окружения.
Конфигурация Vagrant
На самом деле есть боксы с уже настроенным окружением, но у автоматической конфигурации есть важное преимущество: конфигурацию можно передать, например, через системы контроля версий, и ваш коллега, да или вы сами в будущем, сможете быстро развернуть нужное окружение.
Конфигурация виртуальной ОС определяется файлом vagrantfile
, для генерации которого тоже есть несколько инструментов. Я использовал PuPHPet — очень классный и понятный конфигуратор.
В качестве ОС я использовал Ubuntu 14.04 LTS, а в качестве web-стека — классический LAMP. PuPHPet позволяет настроить множество параметров: веб сервер, сервер БД, версия PHP и т.д. Приятный бонус для работы с Drupal — это возможность установки Drush.
В конце вы получите возможность скачать архив с файлом конфигурации и всеми необходимыми скриптами. Его нужно распаковать в папку, в которой вы собираетесь вдальнейшем вести разработку. Vagrant сделает ее доступной внутри виртуальной ос.
В моем случае понадобилось одно движение надфилем, связанное со спецификой Parallels, в vagrantfile
, в секцию:
config.vm.provider 'parallels' do |v|
надо добавить флаг:
v.update_guest_tools = true
чтобы выполнить обновление Parallels Tools.
Запуск Vagrant
Вот мы и подошли к самому интересному моменту. Запуск ВМ производится командой:
vagrant up
Eе нужно запускать из папки, в которой у вас находится vagrantfile
. Первый запуск может занять некоторое время, в моем случае понадобилось около 5 минут. Vagrant сам скачивает нужный бокс, проверяет обновления, запускает скрипты и делает всю необходимую работу.
Работа с Vagrant
Теперь можно скопировать файлы вашего проекта в подпапку, которую вы указали в PuPHPet, как директорию для виртуального хоста веб сервера. В качестве примера я взял свежеиспеченную на момент написания статьи, Drupal 8 beta 1.
Подключение к ОС осуществляется через SSH, командой:
vagrant ssh
Так же нужно в основной ОС направить выбранный домен на IP адрес виртуальной машины, чтобы иметь доступ к нему из браузера. Для этого надо добавить директиву в файл /etc/hosts
:
192.168.58.101 drupal-8.dev
Остановка и перезапуск ВМ производятся соответственно командами:
vagrant halt
vagrant reload
Вот и все, окружение настроено и готово к работе.
Итог
У Vagrant есть множество преимуществ, что порождает множество различных сценариев его использования. К ним относятся:
- Стандартизация окружения;
- Переносимость;
- Быстрое развертывание;
- Автоматическое конфигурирование;
- Обновление и удобное удаление ВМ;
- Низкое потребление ресурсов.
Если вы работаете локально, и ваша ОС — это не Linux Server, то Vagrant — это для вас. Каких-либо причин использовать локальное окружение вместо виртуального я не вижу.
для автоматического добавления хостов есть плагин hostmanager github.com/smdahlen/vagrant-hostmanager, и еще советую для разработки на drupal использовать тип файловой системы - nfs (в дебиан-подобном линухе нужно будет поставить пакет nfs-kernel-server), будет быстрее работать. А так да, vagrant это круто! )
Спасибо за полезные советы!
вот что пишет.
Также непонятно, где тут можно скачать
vagrantcloud.com/ubuntu/boxes/trusty32
или что тут вообще нужно делать, если хочешь сам в виртуал бокс поставить Ось.
Acquia Dev Desktop 2 тоже не работает - выдаёт ошибку.
Спасибо!
Судя по ошибке образ ОС побился при скачивании. Попробуйте удалить скаченный образ отсюда
c:\Users\%USERNAME%\.vagrant.d\boxes\
и заново запустить процесс.Или попробуйте в puphpet выбрать другой образ, например 64-х битный.
Самому скачивать образ не надо, это за вас лучше сделает vagrant. Но если все же так хочется, то вот список "Боксов" http://www.vagrantbox.es/ в этом случае генерировать vagrantfile через puphet нет необходимости.
с Acquia Dev Desktop сходу не могу сказать в чем проблема, хотя бы скриншот приложите.
Vagrant - действительно универсален и имеет массу преимуществ.