|
|||||||
Настройка Vagrant для удобной разработки
Время создания: 04.10.2015 12:25
Автор: Рахим Давлеткалиев
Текстовые метки: Vagrant, VirtualBox, виртуализация, разработка
Раздел: Компьютер - Linux - Виртуализация и эмуляция - VirtualBox
Запись: xintrea/mytetra_syncro/master/base/14439507158o39c9rhff/text.html на raw.github.com
|
|||||||
|
|||||||
Для удобства разработки веб-приложений я с недавнего времени использую Vagrant . Это просто готовый инструмент для быстрого развертывания и настройки виртуальной машины. В качестве эмулятора можно использовать и VMWare и VirtualBox (я использую второе). Голый «исходник» виртуалки называется «box». Их можно делать самому, но есть куча готовых . Я выбрал Ubuntu 12.04 LTS и скачал бокс: vagrant box add НАЗВАНИЕ_БОКСА URL_БОКСА Название — любое, это просто идентификатор. Вагрант скачивает бокс в папку ~/.vagrant.d/boxes по умолчанию, но расположение можно поменять задав значение переменной окружения VAGRANT_HOME. Я недавно перешел на ССД в качестве системного диска, поэтому в .bash_profile у меня стоит: export VAGRANT_HOME=«/Volumes/Mac HDD/freetonik/.vagrantboxes» Теперь можно создавать виртуальную машину на основе этого бокса. Делается это очень просто: vagrant init НАЗВАНИЕ_БОКСА Эта команда создаст в текущей директории файл Vagrantfile, а в Виртуалбоксе появится новая виртуальная машина на основе образа из бокса. С самим боксом ничего не произойдет, он останется лежать в том же месте словно установочный пакет. Виртуалбокс запустится в «безголовом» режиме, то есть вы не увидите никакого пользовательского интерфейса. Виртуальная машина на базе бокса сохранится там, где по умолчанию хранятся виртуальные машины Виртуалбокса. Поэтому я заранее запустил Виртуалбокс и сменил путь (чтобы не держать виртуалку на ССД). Vagrantfile, созданный командой vagrant init — это конфигурация вашей виртуальной машины. В ней можно настроить перенаправление портов, общие папки и провизию: автоматическую установку приложений. Вот как выглядит мой Vagrantfile: Vagrant.configure(«2») do |config| 80й порт виртуальной машины перенаправляется на порт 8080 хост-машины. Папка с репозиторием в моей домашней директории синхронизирована с той папкой, которую использует nginx. Провизия позволяет устанавливать приложения и осуществлять автоматическую настройку конфигурации прямо при запуске виртуалки. Это удобная штука если у вас сложная конфигурация. Самый простой вариант — написать скрипт для последовательной установки нужных вам приложений. Но можно использовать puppet или chef. Со скриптом бывают проблемы (например, у меня никак не хотел устанавливаться nginx), а puppet/chef показался избыточным — у меня примитивная конфигурация nginx+php-fpm+postgres+redis. Так что я просто поставил все вручную несколькими короткими командами уже в самой виртуалке. Что-ж, осталось лишь запустить виртуальную машину: vagrant up Через несколько секунд (если в Vagrantfile нет ошибок) виртуальная машина запустится. К ней можно сразу же подключиться через ssh: vagrant ssh Вы попадете в учетную запись пользователя vagrant, который может пользоваться sudo без пароля. Теперь можно установить сервер и другие пакеты (если вы не пользовались провизией). После запуска сервера веб-страницы доступны по адресу localhost:8080. Хост, конечно, можно поменять, но вот с портом незадача: OS X не позволяет использовать порт до 1024 если вы не root. Чтобы не извращаться я просто сделал еще одно перенаправление, но уже на хост-машине с помощью встроенного в OS X ipfirewall : sudo ipfw add 100 fwd 127.0.0.1,8080 tcp from any to me 80 Теперь все, что идет на порт 8080 перенаправляется на 80. Получилось так: nginx:80 — vagrant: 80—>8080 — ipfirewall: 8080—>80 Чтобы это правило работало и после перезагрузки нужно добавить сервис: 1) Создать файл /Library/LaunchDaemons/org.dmuth.ipfw.plist который будет искать конфигурацию фаерволла в /etc/ipfw.conf. 2) Создать файл /etc/ipfw.conf flush 3) Включить наш новый сервис sudo launchctl load -w /Library/LaunchDaemons/org.dmuth.ipfw.plist Поставить виртуалку на паузу: vagrant suspend nginx не любит VirtualBox и иногда странно кеширует css-файлы. Это я исправил отключив sendfile в конфигурации nginx: location ~ \.css { |
|||||||
Так же в этом разделе:
|
|||||||
|
|||||||
|