Установка и настройка vagrant для windows 10. Установка и настройка рабочей среды Homestead для Laravel

Как насчет того, чтобы поднять работу с VirtualBox на новый уровень - создавать виртуальные машины быстро и целыми пачками, организуя их в сеть? Что, если одним конфигурационным файлом и парой команд создавать простую и воспроизводимую структуру серверов, управляя шарингом папок и перенаправлением портов? Уже интересно?

Введение

Главная страница проекта сообщает, что ему уже выразили доверие такие гиганты мира IT, как Mozilla, Nokia или DISQUS. «Бродяга» (а именно так переводится название проекта) создан в лучших традициях эпохи гитхаба:

  1. Простой и приятный информативный сайт: www.vagrantup.com .
  2. Исходный код написан на Ruby и выложен на широкое обозрение: github.com .
  3. За два года существования он успел обрасти большим количеством дополнений и плагинов на любой вкус.

Установка

Несмотря на то что Vagrant - это всего лишь рубишный гем, создатели предлагают сразу несколько способов установки.

Первый - установка соответствующего операционной системе пакета с downloads.vagrantup.com . Там есть нативные инсталлеры под Windows, OS X и распространенные дистрибутивы Linux (Deb/RPM-пакеты, а также общий инсталлер). Второй - установка соответствующего гема:

$ gem install vagrant

После этого в системе появится новая команда - vagrant. И мы уже готовы создать нашу первую виртуалку:

$ vagrant box add precise64 http://files.vagrantup.com/precise64.box $ mkdir my_project $ cd my_project $ vagrant init precise64 $ vagrant up

Ну вот и все, теперь убедимся в ее работе - проверим ее состояние:

$ vagrant status Current VM states: default running

И зайдем по SSH, увидев стандартное приветствие убунты:

$ vagrant ssh Welcome to Ubuntu 12.04 LTS (GNU/Linux 3.2.0-23-generic x86_64) * Documentation: https://help.ubuntu.com/ Welcome to your Vagrant-built virtual machine. Last login: Mon Jan 28 13:51:24 2013 from 10.0.2.2 vagrant@precise64:~$

Базовые сборки

Базовые сборки (base box) - это специальным способом подготовленные шаблоны виртуальных машин, из которых потом создаются непосредственно виртуальные среды вагранта. Дело в том, что для ускорения процесса создания виртуалки он копирует существующую базовую сборку и уже ее настраивает в соответствии с конфигурационным Vagrant-файлом. В результате пользователь, с одной стороны, может не беспокоиться о некоторых нюансах конфигурации виртуалки (например, объеме памяти или сетевых контроллерах), с другой стороны - все эти нюансы при необходимости могут быть легко изменены. Также в большой степени экономится время на создании новой машины, что позволяет в любой момент «убить» все ненужное, а потом создать по новой. Базовые сборки в систему добавляются командой:

$ vagrant box add <имя сборки>

Сами разработчики вагранта предлагают четыре вида базовых сборок - два последних релиза Ubuntu в 32- и 64-битном исполнении (одну из них мы только что уже установили в системе):

Но на этом список далеко не заканчивается. Существует специальный сайт, где каждый желающий может выложить свою базовую сборку. Он располагается по адресу:www.vagrantbox.es . Там любой может выбрать себе что-нибудь по вкусу. В ассортименте: Debian, Windows Server, FreeBSD, CentOS, Gentoo и другие.

Кроме того, ты легко можешь создать собственную стартовую конфигурацию, но об этом чуть позже.

НОВШЕСТВА VIRTUALBOX 4.2

Кстати, не так давно Oracle выпустили новую версию VirtualBox под номером 4.2. Если ты еще не перешел на актуальную версию, то, вероятно, тебе будет интересно узнать о новшествах.

Группы виртуальных машин

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

Автостарт? Запуск «безмордовый»

Так называемый Headless launch - то есть запуск виртуалки без открытия соответствующего окна с интерфейсом машины - теперь возможен прямо из менеджера. Если раньше, чтобы запустить виртуальную машину, приходилось отправляться в консоль, набирать там что-то типа:

$ VBoxManage startvm ... --type headless

то теперь достаточно при запуске виртуальной машины из интерфейса VirtualBox зажать. Остановить запущенную в headless режиме виртуалку можно также из менеджера, выполнив соответствующую команду.

Создание виртуалок в два клика

Это, правда, чисто интерфейсное улучшение (то есть ни о каком программном ускорении создания виртуальной машины речи не идет), но все же. Если на первом диалоге при создании новой виртуалки нажать кнопку «Скрыть описание», то появится другой диалог типа «все в одном», в котором можно будет быстро настроить параметры создаваемой машины.

Улучшения сетевых интерфейсов

Теперь VirtualBox позволяет создавать виртуальные машины с 36 сетевыми картами на борту. Также представлен новый функционал регулирования пропускной способности, чтобы ограничить «прожорливость» виртуалки.

Повышение производительности процессоров

Многие современные процессоры поддерживают технологию виртуализации вложенных страниц для блока управления памятью процессора (у Intel она называется Extended Page Tables, а у AMD - Rapid Virtualization Indexing). С версии 4.2 виртуалбокс теперь ее тоже поддерживает. Поэтому владельцы Core i5 или AMD Bulldozer после обновления должны заметить определенный прирост скорости работы виртуальной машины.

Новые гостевые ОС

Список официально поддерживаемых гостевых операционок теперь дополнился следующими наименованиями:

  • Mac OS X Mountain Lion
  • Windows 8
  • Windows Server 2012
  • Ubuntu 12.04 (Precise Pangolin)
  • Fedora 17
  • Oracle Linux 6.3

Так что теперь все современные операционки без проблем должны работать внутри VB.

Vagrant-файл

Важной частью системы является специальный конфигурационный файл, написанный на Ruby. Он называется Vagrantfile и описывает виртуальные машины, необходимые в проекте. Предполагается, что в команде для разработки используется один и тот же Vagrantfile, который распространяется через систему контроля версий между ее членами. Важно заметить, что Vagrant читает конфигурацию последовательно из четырех мест и каждый последующий этап может изменять параметры предыдущего. Итак, точный порядок загрузки такой:

  1. Сначала загружается Vagrantfile, содержащийся в руби-геме.
  2. Следом загружается Vagrantfile из директории базовой сборки (если она было собрана с параметром --vagrantfile).
  3. Потом загружается Vagrantfile из домашнего каталога пользователя (~/.vagrant.d/), позволяя пользователю добавить для него какие-либо параметры.
  4. И последним загружается Vagrantfile из директории проекта. В большинстве случаев именно в нем находятся все основные настройки проекта, и именно этот файл стоит добавить в систему контроля версий.

Полный список доступных настроек для вагрантфайла содержится в документации . Только что созданная виртуальная среда имеет минимальный конфиг вида:

Vagrant::Config.run do |config| config.vm.box = "precise64" end

Provisioning

Запуск пустой виртуальной машины (пусть даже и особым образом сконфигурированной) вряд ли может быть сильно полезен, поэтому в вагранте есть так называемые наполнители (provisioners) - различные способы настроить виртуальную машину не снаружи, а изнутри. По сути, это возможность писать различные дополнительные сценарии, которые выполняются после создания виртуальной машины. Поскольку вагрант написан рубистами, то в качестве конфигураторов машины выбраны привычные им средства: Chef Solo, Chef Server, Puppet Standalone, Puppet Server и обыкновенный Shell. Средства Chef и Puppet довольно известны и распространены и часто применяются для деплоя самых разных проектов, так что мы не будем заострять на нах внимание и рассмотрим самый простой вариант - shell-скрипт. Создадим в текущей директории файл с именем install_redis.sh и содержанием:

Sudo apt-get -q -y install redis-server

А в Vagrant-файл добавим команды для наполнения:

Vagrant::Config.run do |config| config.vm.box = "precise64" config.vm.provision:shell, :path => "install_redis.sh" end

Теперь переконфигурируем нашу машину командой:

$ vagrant reload

В результате на нашей виртуалке появится свежеустановленный редис.

Сетевые настройки

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

В первом случае мы явно задаем IP машины, а также можем опционально указать маску сети (по умолчанию используется 255.255.255.0). В таком случае конфиг приобретает вид:

Vagrant::Config.run do |config| config.vm.box = "precise64" config.vm.provision:shell, :path => "install_redis.sh" end

Во втором случае машина получает IP по DHCP и становится полноценным членом сети, в которой расположена и хост-машина. Если на хост-машине присутствует несколько сетевых интерфейсов, то мы можем указать, который именно использовать для моста. Для вывода списка имен сетевых интерфейсов воспользуемся командой:

~$ VBoxManage list bridgedifs | grep ^Name Name:en1: Wi-Fi (AirPort) Name:en0: Ethernet Name:p2p0

И, соответственно, конфигурация примет вид:

Vagrant::Config.run do |config| config.vm.box = "precise64" config.vm.provision:shell, :path => "install_redis.sh" config.vm.network:bridged, :bridge => "en1: Wi-Fi (AirPort)" end

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

Vagrant::Config.run do |config| config.vm.box = "precise64" config.vm.provision:shell, :path => "install_redis.sh" config.vm.forward_port 6379, 8765 end

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


Несколько виртуальных машин

Кстати, в одном Vagrant-файле можно объявить сразу несколько виртуальных машин с различными настройками. Как? Я думаю, следующий пример скажет сам за себя:

Vagrant::Config.run do |config| config.vm.define:web do |web_config| web_config.vm.box = "web" web_config.vm.forward_port 80, 8080 end config.vm.define:db do |db_config| db_config.vm.box = "db" db_config.vm.forward_port 3306, 3306 end end

Более того, запускать и пересоздавать виртуалки можно по отдельности, добавляя имя машины после соответствующей команды:

$ vagrant up web $ vagrant reload db

Общие папки

Еще одна интересная особенность VirtualBox - общие папки, дающие возможность легко обмениваться файлами между гостевой и хост-машинами. Разумеется, Vagrant предоставляет удобный способ настройки данной опции. Все, что нужно, - это немного поправить конфигурационный файл:

Vagrant::Config.run do |config| config.vm.share_folder "data", "/data", "data" end

Важно заметить также, что папки, использующие протокол NFS (Network File System), показывают лучшую производительность, нежели общие папки виртуалбокса. С другой стороны, NFS не поддерживается на хостах с Windows. Для того чтобы использовать NFS вместо VirtualBox shared folders, необходимо это явно указать в настройках:

Vagrant::Config.run do |config| config.vm.share_folder("data", "/data", "data", :nfs => true) end

Снэпшоты и песочница

Поскольку Vagrant предоставляет гибкий API для расширения своего функционала, неудивительно, что существует немалое количество плагинов для Vagrant, решающих самые различные задачи. На случай, если у тебя появятся новые идеи, какие новые возможности можно добавить в вагрант, - в документации есть специальный раздел, содержащий все необходимые настройки и примеры (bit.ly/126iIsM).

Sahara

Плагин представляет собой песочницу для виртуальных машин: если что-то поломалось, можно легко и просто откатить до последнего снэпшота. Плагин является руби-гемом (что вполне ожидаемо) и называется sahara . После его установки в вагранте появляется дополнительная команда - vagrant sandbox. Типичный пример использования выглядит так. Включаем режим песочницы:

$ vagrant sandbox on

Производим определенные действия (работаем с файлами, меняем настройки и прочее):

$ vagrant ssh

Если результат работы нас удовлетворил - сохраняем изменения:

$ vagrant sandbox commit

В противном случае откатываем неугодные правки:

$ vagrant sandbox rollback

И выходим из режима песочницы:

$ vagrant sandbox off

Создание базовых сборок

Несмотря на то что сообщество уже позаботилось о наиболее распространенных образах операционных систем, тебе вполне может понадобиться иметь свою особенную сборку. Из соображений безопасности (а вдруг хакер Вася добавил свою магию в одну из сборок, лежащих в Сети), необходимости каких-то особенных настроек или просто из интереса - неважно, главное, что такая возможность есть. И здесь нам поможет гем veewee , созданный специально для этих целей. Для начала установим его:

$ gem install veewee

Репозиторий veewee содержит большое количество шаблонов. Выберем интересующий нас - пусть это будет последняя версия Ubuntu Server. Теперь создадим новую базовую сборку на основе этого шаблона:

$ veewee vbox define myubuntubox "ubuntu-12.10-server-i386"

В результате у нас появится новое «определение» бейс-бокса. В папке definitions/myubuntubox содержатся файлы, описывающие нашу виртуальную машину:

Definition.rb, - postinstall.sh, - preseed.cfg.

Немного поправим конфигурацию виртуалки:

Veewee::Session.declare({ :cpu_count => "1", :memory_size=> "1024", :disk_size => "10140", :disk_format => "VDI", :hostiocache => "off", :os_type_id => "Ubuntu", :iso_file => "ubuntu-12.10-server-i386.iso", :iso_src => "http://releases.ubuntu.com/12.10/ubuntu-12.10-server-i386.iso", :iso_md5 => "b3d4d4edfc8f291af0b83f8a2ba19a2f", :iso_download_timeout => "1000", :boot_wait => "4", :boot_cmd_sequence => [ "", "/install/vmlinuz noapic preseed/url=http://%IP%:%PORT%/preseed.cfg ", "debian-installer=en_US auto locale=en_US kbd-chooser/method=us ", "hostname=%NAME% ", "fb=false debconf/frontend=noninteractive ", "keyboard-configuration/modelcode=SKIP keyboard-configuration/layout=us keyboard-configuration/variant=us console-setup/ask_detect=false ", "initrd=/install/initrd.gz -- " ], :kickstart_port => "7122", :kickstart_timeout => "10000", :kickstart_file => "preseed.cfg", :ssh_login_timeout => "10000", :ssh_user => "vagrant", :ssh_password => "vagrant", :ssh_key => "", :ssh_host_port => "7222", :ssh_guest_port => "22", :sudo_cmd => "echo "%p"|sudo -S sh "%f"", :shutdown_cmd => "shutdown -P now", :postinstall_files => [ "postinstall.sh"], :postinstall_timeout => "10000" })

Теперь запустим сборку командой

$ veewee vbox build myubuntubox

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

$ veewee vbox validate myubuntubox

$ vagrant basebox export myubuntubox

Ну вот, собственно, и все. Теперь, чтобы использовать нашу базовую сборку, вызовем уже знакомые команды. Добавим бокс в список:

$ vagrant box add myubuntubox myubuntubox.box

И создадим новую виртуальную машину на основе уже созданной:

$ vagrant init myubuntubox

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

Заключение

Удобная среда разработки позволяет больше сконцентрироваться на решаемой проблеме, а не на вопросах совместимости ПО или различиях операционных систем, и это главная фишка Vagrant. С ним можно избавиться от проблем, когда на машине разработчика все работает, а на продакшене почему-то нет. Разумеется, на данный момент несколько смущает его сильная руби-ориентированность, но будем надеяться, что со временем разработчики решат и эту проблему, расширив, например, список провизоров на Python или Java. И кстати, в настоящее время идет работа по добавлению других систем виртуализации, кроме VirtualBox.

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

И о том, чем он может быть полезен для веб-разработчика.

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

Есть разные способы управления окружениями: кто-то вручную устанавливает и настраивает в системе по отдельности каждый из необходимых компонентов, кто-то использует готовые наборы (например XAMPP, Open Server в Windows или lamp-server в Linux), но у этих подходов есть несколько недостатков, главный из которых заключается в трудности поддержки разных окружений для разных проектов. Нередко возникают ситуации, когда, например, разные проекты работают с разными версиями PHP, или им нужны разные настройки php.ini, или разные веб-сервера и т. д. В таких случаях управление окружениями становится довольно трудоемкой задачей, решить которую человеку, не имеющему квалификации сисадмина, бывает весьма непросто. В добавок - операционная система компьютера “обрастает” большим количеством разного софта, который зачастую нужен только для того, чтобы запустить локально какое-то одно веб-приложение.

Я пользуюсь Vagrant для управления окружениями, и вот почему:

  • Vagrant использует виртуализацию, а это в свою очередь дает следующие преимущества:
    • Для каждого проекта разворачивается индивидуальное окружение со своей версией PHP, своими настройками php.ini, веб-сервером и т. д., то есть - полностью изолированная виртуальная машина.
    • Операционная система компьютера не “засоряется” различным программным обеспечением, которое, по большому счету, в ней не нужно.
  • Vagrant на лету синхронизирует каталог проекта с каталогом внутри виртуальной машины. Не нужно заботиться об обновлении версий файлов внутри нее. Все происходит автоматически и мгновенно.
  • Управление окружением производится с помощью минимального набора простых команд. В самом простом случае работа с Vagrant сводится к двум командам: vagrant up (запуск) и vagrant halt (остановка).

Vagrant является оберткой над ПО виртуализации и средствами управления конфигурациями, и предоставляет способ легко и быстро всем этим управлять.

Установка и настройка

Рассмотрим по шагам процесс установки Vagrant, а также развернем для примера готовый образ (или, как принято говорить в терминологии Vagrant - бокс), содержащий предустановленное программное обеспечение, необходимое для веб-разработки, в том числе LAMP-стек, и запустим в получившимся окружении веб-приложение (возьмем для примера ).

Я использую Linux Mint, которая основана на Ubuntu, поэтому все описанные манипуляции применимы в этих ОС. К сожалению, я не знаю точно, насколько стабильно все будет работать в Windows, однако все описанное ПО имеет версии для Windows, поэтому, надо полагать, там тоже все должно работать.

Итак, поехали.

Установка VirtualBox

Так как Vagrant оперирует виртуальными машинами, то ему для работы необходимо ПО виртуализации. Установим VirtualBox, который является широко распространенным, удобным и простым в использовании примером такого ПО. Для установки следуйте инструкциям со страницы: https://www.virtualbox.org/wiki/Linux_Downloads

Установка Vagrant

Затем установим сам Vagrant.

Для установки выполните:

$ sudo apt-get install vagrant

Или скачайте и установите последнюю версию отсюда: https://www.vagrantup.com/downloads.html

Установка плагинов Vagrant

Плагин vbguest нужен на тот случай, когда версии VirtualBox Guest Additions внутри виртуальной машины и на вашем компьютере различаются, этот плагин сам в автоматическом режиме разрешит данную проблему. Для установки выполним:

$ vagrant plugin install vagrant-vbguest

Плагин hostmanager нужен для того, чтобы Vagrant мог управлять именами хостов для виртуальных машин. Установим его:

$ vagrant plugin install vagrant-hostmanager

Загрузка файла конфигурации для Vagrant

Как уже говорилось выше, мы будем разворачивать уже готовое сконфигурированное окружение - . В репозитории Scotch Box находится конфигурационный файл Vagrantfile , который содержит необходимую Vagrant информацию для развертывания и запуска окружения. Скачаем репозиторий:

$ git clone https://github.com/scotch-io/scotch-box.git

Развертывание и запуск окружения

Для того, чтобы Vagrant развернул и запустил окружение, необходимо выполнить в каталоге проекта, то есть там, где находится файл Vagrantfile , единственную команду - vagrant up .

Перейдем в каталог, куда мы скачали репозиторий Scotch Box и сделаем это.

$ cd scotch-box $ vagrant up

Это на самом деле все, что нужно сделать. Первый запуск обычно занимает довольно длительное время, так как Vagrant должен скачать и развернуть образ виртуальной машины, разрешить конфликт версий VirtualBox Guest Additions, если он есть, а также установить, при необходимости, различное программное обеспечение внутри виртуальной машины. Второй и последующие запуски будут осуществляться за считанные секунды.

Scotch Box по умолчанию использует адрес http://192.168.33.10 . После того, как выполнится команда vagrant up , перейдите в своем браузере по этому адресу и убедитесь, что все работает.

Если вы хотите остановить виртуальную машину, выполните команду vagrant halt .

Если вы пользуетесь режимом гибернации, то перед тем, как переводить в него компьютер, рекомендуется выполнить для запущенного окружения команду vagrant suspend , так как в противном случае ОС может “зависнуть” при переходе в гибернацию. После выхода из режима гибернации запустите окружение, снова выполнив vagrant up .

Если открыть GUI Virtual Box, то можно увидеть, что Vagrant создал для вас обычную виртуальную машину. Ничего не мешает вам управлять ей как любой другой виртуальной машиной, используя средства Virtual Box.

Демонстрация работы

Как и говорилось выше, продемонстрируем работу окружения на примере .

Скачайте последнюю версию WordPress и распакуйте ее в каталог scotch-box/public, котрый в Scotch Box является корневым каталогом веб-сервера. Не забудьте перед распаковкой удалить файл index.php из каталога public.

Теперь перейдите по адресу http://192.168.33.10 , вы должны увидеть первый шаг установки WordPress:

Обратите внимание на то, что все изменения файловой системы внутри каталога public мгновенно перенеслись внутрь виртуальной машины без необходимости производить какие-либо дополнительные манипуляции. Все работает прозрачно - так, будто никакой виртуальной машины нет вообще: вы меняете файлы, открываете url в браузере и наблюдаете изменения.

На шаге, посвященном настройке соединения с базой данных, укажите параметры, описанные на сайте

После завершения всех шагов, вы получите установленный экземпляр WordPress внутри вашей виртуальной машины.

Работайте над проектом как обычно, например откройте каталог проекта в IDE и ведите разработку там.

Следует упомянуть, что в том случае, если вы используете PhpStorm, вас ждет приятный сюрприз в виде поддержки Vagrant внутри IDE. Откройте в главном меню “Tools” -> “Vagrant”. Вы можете управлять окружением для проекта прямо из PhpStorm, не заходя в командную строку.

Что дальше?

Рассмотренный пример - это наиболее простой из возможных вариантов использования Vagrant. На самом деле Vagrant - это гибкий и мощный инструмент, который позволяет очень тонко настраивать необходимое окружение.

Scotch Box устроен таким образом, что сам образ виртуальной машины содержит все необходимое предустановленное ПО. Более распространен такой сценарий использования Vagrant, когда берется чистый образ системы и, с помощью конфигов, описывается: что необходимо установить туда и как все это настроить.

Laravel .

Спасибо за внимание!

Что такое Vagrant?

Я бы описал Vagrant - как надстройка над виртуальными машинами (VirtualBox, VMWare) со своей инфраструктурой. Vagrant позволяет с помощью заранее подготовленных инструкций развернуть подобие серверного окружения на своей локальной машинке (сколько часов отладки было потрачено из-за отличий окружений (dev, test, prod), в которых запускается разрабатываемое ПО). Поговаривают, что Vagrant в силах решить эти проблемы. Проверим так ли это, и не принесет ли он больше сложностей нежели профита.

Определения

# название бокса на основе которого будет разворачиваться виртуалка

config.vm.box = "lucid10x64"

# Проброс портов (8080 нашей машинки на 80 виртуалки)

config.vm.network:forwarded_port, host: 8080, guest: 80

# 2х сторонняя синхронизация каталога (локальный, виртуальный)

config.vm.synced_folder "/home/stas/www/vagrant/src", "/var/www"

Примечание

По умолчанию текущий каталог проекта (в котором находится Vagrantfile ) уже синхронизируется с директорией /vagrant (в корневой на виртуальной системы). DocumentRoot веб сервера Apache завернут на этот же каталог. Поэтому, дополнительно синхронизацию на /var/www указывать не нужно, но я привел этот конфиг как пример для бокса, у которого не будет предустановленного Apache .

Примечание

Для проверки окружения виртуальной машины, нужно создать файл index.php внутри вашего проекта и перезагрузить конфиг Vagrant :

vagrant reload

После этого откройте в браузере страницу http://localhost:8080 - это и будет ваш index.php .

Подготовить окружение виртуальной машины (provision , обеспечение) под наш проект мы можем несколькими способами. Один из них, это запуск shell скрипта, в котором прописываются все действия необходимые для настройки окружения. Давайте установим mc ( пример установки Apache). Создайте в корне проекта файл bootstrap.sh :

#!/usr/bin/env bash

apt-get update

apt-get install mc

И пропишите в Vagrantfile что необходимо запустить этот скрипт после старта виртуальной машины:

config.vm.provision:shell, :path => "bootstrap.sh"

Перезагрузите конфиг с обновлением обеспечения :

vagrant reload --provision

Управление

Команды для управления виртуальной машиной:

vagrant ssh # подключиться по SSH под юзером vagrant

vagrant suspend # поставить на паузу

vagrant halt # выключить

vagrant reload # перезагрузить конфиг (без выполнения provision)

vagrant reload --provision

vagrant destroy # удалить виртуалку

vagrant box list # cписок доступных "боксов"

Будьте бдительны!

Пользователь vagrant имеет право выполнять команды под рутом (sudo ) без пароля.

Кастомизация

VAGRANT_HOME - переменная окружения, содержит путь к каталогу с VagrantBox"ами (как установить переменную окружения ).

Вопросы

В: Где будет расположен/скрипты код, с которым мы работаем? Постоянно синхронизироваться? А это быстро?

О: Код, с которым вы работаете будет располагаться в локальном каталоге. Каталог проекта уже по дефолту синхронизируется с виртуальной машиной.

В: Сколько времени займет развертывание типичного LAMP сервера?

О: Скачивание Vagrant Box ~ 20 мин. Если файл конфигурации уже описан, тогда все зависит от окружения и зависимых пакетов - все зависимости будут скачиваться и устанавливаться (если только они не включены в сам бокс). Если вы только начинаете настройку окружения и виртуалки - готовьтесь потратить от часа на описание нужного окружения.

В: Средний расход ресурсов на обслуживание одного LAMP окружения?

О: Прикидываю как бы замерять расход памяти по нескольким процессам...

Vagrant 2.2 - Creating a Base Box

Создание базовой коробки

Есть специальная категория ящиков, известных как «базовые ящики». Эти поля содержат минимум, необходимый для функционирования Vagrant, как правило, не выполняются путем переупаковки существующей среды Vagrant (следовательно, «база» в «базовой коробке»).

Например, ящики Ubuntu, предоставленные проектом Vagrant (например, «exact64»), являются базовыми. Они были созданы из минимальной установки Ubuntu из ISO, а не для переупаковки существующей среды.

Базовые коробки чрезвычайно полезны для того, чтобы иметь чистую начальную точку сланца, из которой можно строить будущие среды разработки. Проект Vagrant надеется в будущем предоставить базовые ящики для многих других операционных систем. До тех пор эта страница документирует, как вы можете создать свой собственный базовый ящик.

Продвинутая тема! Создание базового блока может быть трудоемким и утомительным процессом и не рекомендуется для новых пользователей Vagrant. Если вы только начинаете с Vagrant, мы рекомендуем сначала попытаться найти существующие базовые поля.

Что находится в базовой коробке?

Базовый блок обычно состоит из всего лишь минимального набора программ для работы Vagrant. Например, поле Linux может содержать только следующее:

  • Менеджер пакетов
  • Пользователь SSH, так что Vagrant может подключиться
  • Возможно, Шеф-повар, Кукольный и т. Д., Но не обязательно.

В дополнение к этому, каждому provider может потребоваться дополнительное программное обеспечение. Например, если вы создаете базовый блок для VirtualBox, вы захотите включить дополнения для гостевых виртуальных пользователей, чтобы общие папки работали правильно. Но если вы создаете базовую коробку AWS, это не требуется.

Создание базовой коробки

Создание базового поля на самом деле зависит от поставщика. Это означает, что в зависимости от того, используете ли вы VirtualBox, VMware, AWS и т. Д., Процесс создания базовой коробки отличается. Из-за этого этот документ не может быть полным руководством по созданию базового блока.

Однако на этой странице будут описаны некоторые общие рекомендации по созданию базовых ящиков и будут ссылки на руководства, ориентированные на поставщика, для создания базовых блоков.

Конкретные руководства для создания базовых ящиков приведены ниже:

Пакер и облако бродяг

Мы настоятельно рекомендуем использовать Packer для создания воспроизводимых сборок для ваших базовых ящиков, а также для автоматизации сборки с помощью Atlas . Подробнее о создании боксерских ящиков с упаковщиком в документации Atlas.

Дисковое пространство

При создании базового поля убедитесь, что у пользователя будет достаточно места на диске, чтобы делать интересные вещи, не раздражая. Например, в VirtualBox вы должны создать динамически изменяющий размер диск с большим максимальным размером. Это приводит к тому, что фактический размер диска должен быть небольшим изначально, но динамически возрастать в направлении максимального размера, поскольку дисковое пространство необходимо, обеспечивая максимальную гибкость для конечного пользователя.

Если вы создаете базовый блок AWS, не заставляйте AMI выделять терабайты хранилища EBS, например, так как пользователь может сделать это самостоятельно. Но вы должны по умолчанию устанавливать эфемерные диски, потому что они бесплатны и обеспечивают большое количество дискового пространства.

Память

Как и дисковое пространство, важно найти правильный баланс объема памяти по умолчанию. Для большинства провайдеров пользователь может изменить память с помощью Vagrantfile, поэтому не используйте слишком много по умолчанию. Это было бы плохой пользовательский опыт (и слегка шокирующий), если vagrant up из базовой коробки мгновенно потребовал много гигабайт оперативной памяти. Вместо этого выберите такое значение, как 512 МБ, которого обычно достаточно, чтобы играть и делать интересные вещи с помощью машины бродяг, но при необходимости ее можно легко увеличить.

Периферийные устройства (аудио, USB и т. Д.)

Отключите любое ненужное оборудование в базовом блоке, таком как аудио и USB-контроллеры. Обычно они не нужны для использования Vagrant и, опять же, могут быть легко добавлены через Vagrantfile в большинстве случаев.

Настройки пользователя по умолчанию

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

Если вы создаете базовый ящик для частного использования, вы должны стараться не следовать им, поскольку они открывают ваш базовый блок для рисков безопасности (известные пользователи, пароли, закрытые ключи и т. Д.).

«бродячий» пользователь

По умолчанию, Vagrant ожидает, что «бродячий» пользователь SSH войдет в машину как. Этот пользователь должен быть настроен с помощью небезопасной пары ключей, которую Vagrant использует по умолчанию для попытки SSH. Кроме того, несмотря на то, что Vagrant по умолчанию использует аутентификацию на основе ключа, общим соглашением является установка пароля для «бродячего» пользователя на «бродягу». Это позволяет пользователям войти в систему как пользователь вручную, если это необходимо.

Чтобы настроить SSH-доступ с небезопасной ключевой парой, поместите открытый ключ в файл ~/.ssh/authorized_keys для пользователя-бродяги. Обратите внимание, что OpenSSH очень разборчив в отношении прав на файлы. Поэтому убедитесь, что ~/.ssh имеет разрешения 0700 а файл авторизованных ключей имеет разрешения 0600 .

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

Корневой пароль: «бродяга»

Vagrant фактически не использует или не ожидает никакого пароля root. Однако наличие общеизвестного корневого пароля облегчает для широкой общественности изменение машины при необходимости.

В общедоступных базовых блоках обычно используется пароль root для «бродяг», чтобы все было в порядке.

Без пароля

Это важно! , Многие аспекты Vagrant ожидают, что пользователь SSH по умолчанию будет настроен без пароля sudo. Это позволяет Vagrant настраивать сети, монтировать синхронизированные папки, устанавливать программное обеспечение и многое другое.

Для начала, некоторые минимальные установки операционных систем даже не включают sudo по умолчанию. Убедитесь, что вы устанавливаете sudo каким-то образом.

После установки sudo настройте его (обычно с помощью visudo), чтобы разрешить пароль sudo для «бродячего» пользователя. Это можно сделать со следующей строкой в ​​конце файла конфигурации:

vagrant ALL=(ALL) NOPASSWD: ALL

Кроме того, Vagrant не использует pty или tty по умолчанию при подключении через SSH. Вам нужно будет убедиться, что в нем нет строки, в которой requiretty необходимости. Удалите это, если оно существует. Это позволяет sudo нормально работать без tty. Обратите внимание, что вы можете настроить Vagrant на запрос pty, который позволяет сохранить эту конфигурацию. Но бродяга по умолчанию этого не делает.

SSH Tweaks

Чтобы ускорить работу SSH, даже если ваш компьютер или машина Vagrant не подключены к Интернету, установите для конфигурации UseDNS значение no в конфигурации сервера SSH.

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

Коробки для Windows

Поддерживаемые гостевые операционные системы Windows: - Windows 7 - Windows 8 - Windows Server 2008 - Windows Server 2008 R2 - Windows Server 2012 - Windows Server 2012 R2

Windows Server 2003 и Windows XP не поддерживаются, но если вы являетесь жестким поклонником XP, this может вам помочь.

Базовая конфигурация Windows

  • Выключить UAC
  • Отключить сложные пароли
  • Отключите «Shutdown Tracker»
  • Отключите «Диспетчер серверов», начиная с входа (для неядерных)

Помимо отключения UAC на панели управления, вы также должны отключить UAC в реестре. Это может отличаться от версии Windows до версии Windows, но Windows 8 / 8.1 использует приведенную ниже команду. Это позволит некоторым вещам, таким как автоматическая установка Puppet, работать в базовых коробках Vagrant Windows.

reg add HKEY_LOCAL_MACHINE\Software\Microsoft\Windows\CurrentVersion\Policies\System /v EnableLUA /d 0 /t REG_DWORD /f /reg:64

Базовая конфигурация WinRM

Чтобы включить и настроить WinRM, вам нужно будет настроить службу WinRM для автоматического запуска и разрешить незашифрованное базовое auth (очевидно, это небезопасно). Выполните следующие команды из обычной командной строки Windows:

winrm quickconfig -q winrm set winrm/config/winrs @{MaxMemoryPerShellMB="512"} winrm set winrm/config @{MaxTimeoutms="1800000"} winrm set winrm/config/service @{AllowUnencrypted="true"} winrm set winrm/config/service/auth @{Basic="true"} sc config WinRM start= auto

Дополнительная конфигурация WinRM 1.1

Эти дополнительные шаги настройки специфичны для Windows Server 2008 (WinRM 1.1). Для Windows Server 2008 R2, Windows 7 и более поздних версий Windows вы можете игнорировать этот раздел.

  1. Убедитесь, что установлена ​​функция Windows PowerShell
  2. Измените порт WinRM на 5985 или обновите до WinRM 2.0

Следующие команды изменят порт WinRM 1.1 на то, что ожидается от Vagrant:

netsh firewall add portopening TCP 5985 "Port 5985" winrm set winrm/config/listener?Address=*+Transport=HTTP @{Port="5985"}

Другое программное обеспечение

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

Хотя мы планируем его в будущем, Vagrant по-прежнему не устанавливает Chef или Puppet автоматически при использовании этих средств обеспечения. Для этого пользователи могут использовать средство обеспечения оболочки, но если вы хотите, чтобы Chef / Puppet просто работал из коробки, вам нужно будет установить их в базовом поле.

Установка этого параметра выходит за рамки этой страницы, но должна быть довольно простой.

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

Упаковка коробки

Упаковка коробки в файл box зависит от поставщика. Пожалуйста, обратитесь к документации по конкретному поставщику для создания базового блока. Некоторые ориентированные на провайдера руководства привязаны к верхней части этой страницы.

Распространение ящика

Вы можете распространять файл окна, но хотите. Однако, если вы хотите поддерживать управление версиями, ставя несколько провайдеров по одному URL-адресу, нажимая обновления, аналитику и т. Д., Мы рекомендуем вам добавить окно в Vagrant Cloud от HashiCorp .

Вы можете загружать как публичные, так и частные поля в эту службу.

Тестирование коробки

Чтобы проверить поле, притворись, что ты новый пользователь Vagrant и сделайте снимок:

$ vagrant box add --name my-box /path/to/the/new.box ... $ vagrant init my-box ... $ vagrant up ...

Если вы сделали коробку для какого-то другого провайдера, обязательно укажите опцию --provider для vagrant up . Если up удалось, тогда ваша коробка работала!

Vagrant работает с виртуальными машинами, а значит для виртуализации ему необходим какой-либо"провайдер". И для нашего примера подойдет VirtualBox.

Установка VirtualBox 5 на Windows 10

Для начала качаем VirtualBox с официального сайта последнюю версию (на текущий момент 5.2.18). Для этого после перехода по ссылке на страницу загрузки кликаем по ссылке Windows hosts:

Загруженный файл VirtualBox-5.2.18-124319-Win.exe запускаем для установки VirtualBox. Сам процесс установки сводится к нажатию нескольких кнопок "Next" и ожиданию завершения процесса. После запуска установщика появится следующее окно:

Здесь нажимаем Next.

На следующем этапе выбираем все компоненты для установки (выбраны по умолчанию) и нажимаем Next:

На следующем этапе указываем дополнительные настройки (если нужно) или оставляем все по умолчанию и нажимаем кнопку Next:


Наследующем этапе подтверждаем установку виртуального адаптера (то есть нажимаем Yes):

И на завершающем этапе нажимаем кнопку "Install":

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

Так же в процессе установки VirtualBox 5 на Windows 10 появится диалоговое окно с подтверждением установки дополнительного программного обеспечения:

Здесь мы нажимаем кнопку "Установить".

И после завершения установки появляется диалоговое окно:

На этом процесс установки VirtualBox на Windows 10 завершен.

Установка Vagrant на Windows 10

Для установки Vagrant необходимо скачать пакет с файлами для установки,который доступен по ссылке . В появившемся окне выбираем последнюю версию установщика (на момент написания статьи 2.1.5):


И выбираем файл с расширением.msi для установки на Windows:

После скачивания запускаем файл vagrant_2.1.5_x86_64.msi. В результате появится диалоговое окно с приветствием:

На следующем этапе соглашаемся с правилами пользования (устанавливаем галочку в поле "I acept...") и нажимаем Next:

На следующем этапе указываем каталог, в который будет установлена программа. Можно оставлять путь по умолчанию, только обязательно запоминаем, куда устанавливаем (можно скопировать путь):

И в следующем окне нажимаем кнопку "Install":

Ожидаем окончания установки:

После чего появится окно с результатами завершения установки:

После завершения установки Vagrant на Windows 10 появится окно с просьбой о перезагрузке компьютера:

Здесь нажимаем "Yes" и ожидаем перезагрузки компьютера. Если необходимо вручную завершить работу других программ (или сохранить изменения в важных документах), то нажимаем кнопку "No" и потом перезагружаем компьютер вручную.

Внесение изменений в переменные среды

После перезагрузки компьютера обязательно необходимо добавить переменную vagrant в системные переменные. Это нужно для того, чтобы в командной строке можно было вызывать Vagrant при помощи одной команды: vagrant.

Изменения в переменные среды мы будем вносить при помощи командной строки, а конкретно в переменную PATH мы будем добавлять путь до каталога, куда установлен Vagrant (в нашем случаем это: C:\HashiCorp\Vagrant\bin).

Вызываем командную строку следующим образом:

1. нажимаем на клавиатуре клавиши Ctrl+R для вызова окна "Выполнить".
2. В появившемся окне набираем команду: cmd
3. Нажимаем кнопку ОК:

В итоге должны получить следующее:

В окне командной строки добавляем следующую команду: set PATH=%PATH%;C:\HashiCorp\Vagrant\bin

и нажимаем клавишу Enter:


И теперь для проверки того, удалось ли нам прописать путь к Vagrant в переменные среду, в этом же окне командной строки набираем команду: vagrant -v

и нажимаем клавишу Enter:


И при помощи данной команды мы получим информацию о версии установленного Vagrant. Если все получилось так, как и в статье, значит все сделали верно.

На этом процесс установки и настройки Vagrant и VirtualBox на Windows 10 завершен.

Создание виртуальной машины в Vagrant на Windows 10

Для создания виртуальной машины для начала создадим отдельный каталог, например, VagrantVM:

В командной строке откроем этот каталог. Для этого будем использовать команду cd. В нашем случае каталог располагается по следующему пути:

C:\VM"s\VagrantVM

Значит в командной строке выполняем следующую команду:

Cd C:\VM"s\VagrantVM

В результате получим следующее:


Для примера будем использовать сборку ubuntu/trusty64. Чтобы ее запустить на виртуальной машине, нужно сначала инициализировать бокс с этой сборкой. Для этого в командной строке выполняем команду:

Vagrant init ubuntu/trusty64

В результате получим следующее сообщение:



Теперь запустим проинициализированный бокс:

Vagrant up

После запуска данной команды начнется запуск загрузки и настройки виртуальной машины. После завершения этой операции в VirtualBox появится новая виртуальная машина:



Работать с этой виртуальной машиной можно через SSH. Для этого нам потребуется программа PuTTY, которую можно скачать отсюда (процесс установки описывать не будем, он достаточно прост).

Так же можно с виртуальными машинами Vagrant работать и из командной строки. В том же окне командной строки выполняем команду:

Vagrant ssh

В результате появится запрос на ввод пароля:

Пароль по умолчанию: vagrant. Имя пользователя: vagrant. Потому вводим здесь пароль: vagrant. И нажимаем клавишу Enter.

В результате после ввода пароля окно получаем следующее:

то есть попадаем в оболочку Ubuntu. Здесь можно непосредственно работать с виртуальной машиной при помощи командной строки.

Чтобы вернуться из этого режима в нормальный режим командной строки Windows, выполняем команду: exit

Для работы с виртуальной машиной через программу PuTTY, указываем следующие параметры для соединения с виртуальной машиной:



И нажимаем кнопку Open. В появившемся диалоговом окне нажимаем Да:


В результате получаем следующее:



Здесь необходимо ввести логин и пароль (как мы ранее определились, по умолчанию vagrant/vagrant):



***Примечание: при вводе пароля символы не будут отображаться (никак, даже звездочками).

Чтобы завершить работу запущенного бокса, в окне командной строки выполняем команду:

Vagrant halt

***Если окно командной строки ранее было закрыто, то необходимо снова его запустить и открыть при помощи команду cd каталог, в котором находится наша виртуальная машина.

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

 
Статьи по теме:
Голосовое приложение Google Now
Когда Google впервые выпустил Google Now, он был отмечен пользователями Android по всем направлениям. Однако, когда произошли изменения в Google Feed, эти изменения были менее приняты. Но Лента новостей это отличная вещь, если Вы просто потратите время на
Как установить DLL файлы на Windows?
Если на компьютере отсутствует или повреждена какая-либо библиотека.dll, связанная с ней программа или служба будет работать некорректно. Windows будет выдавать ошибку, что DLL-файл поврежден или отсутствует. Для решения проблемы нужно скачать требуемую б
Полезные утилиты для диагностики и тестирования железа Следить за состоянием компьютера
В Диагностика компьютера на сегодняшний день становится одним из самых необходимых процессов в обслуживании не только внутренней начинки, но и операционных систем в целом, и софтверных компонентов, установленных в системе. Утилиты для диагностики компьюте
Тарифы
В последнее время все чаще операторы мобильной связи в свои сим-карты уже изначально зашивают все настройки и абоненту в последствии не требуется производить дополнительные действия по ручной настройке, к примеру интернета. Настроить интернет Теле2Сложно!