Ошибки запуска vagrant под ubuntu. Vagrant — единое окружение для разработки
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 можно настроить веб-сервер.
Что такое 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 в том, что она с помощью написанных специально для этой программы конфигурационных файлов, собирает виртуальные машины, в которых уже применены определённые настройки. Авторы некоторых систем распространяют их в виде такого конфигурационного файла Vagrant и получив этот файл мы можем собрать на своём компьютере эту ОС. Мы можем использовать конфигурации по умолчанию или вносить в них изменения. В результате будут получаться ОС от автора, но с определённым тюнингом.
Как установить Vagrant в Linux
Поскольку Vagrant это всего лишь надстройка над VirtualBox , то начать нужно с установки VirtualBox .
Теперь, когда VirtualBox уже есть в вашей системе, то поищите vagrant в стандартных репозиториях вашей системы — скорее всего, он там уже есть.
Для установки в Ubuntu, Linux Mint, Debian, Kali Linux и их производные выполните команду
Sudo apt install vagrant
Для установки в Arch Linux, BlackArch и их производные выполните команду:
Sudo pacman -S vagrant
Как установить Vagrant в Windows
Для Vagrant в Windows также имеется графический установщик, скачайте его и выполните установку.
В качестве папки установки Vagrant выбирает не C:\Program Files\, а другую папку, это позволяет программе проще работать с разрешениями и правами доступа:
После перезагрузки откройте командную строку Windows. Это можно сделать нажав Win+x , в открывшемся окне выберите Windows PowerShell (администратор) . В открывшемся окне для перехода из PowerShell в командную строку введите
В этой консоли выполните команду:
Должна появиться стандартная справка по пользованию программой:
Если возникнет ошибка, либо просто для профилактики, выполните обновление плагинов:
Vagrant plugin update
Установка плагина vagrant-vbguest
vagrant-vbguest — это плагин Vagrant, который автоматически устанавливает в гостевые системы VirtualBox Guest Additions — гостевые дополнения VirtualBox.
Независимо от операционной системы, плагин должен устанавливаться одинаково следующей командой:
Vagrant plugin install vagrant-vbguest
Если в Windows у вас проблемы с установкой этого плагина, то попробуйте следующую команду:
C:\vagrant\vagrant\embedded\bin\gem.bat install vagrant-vbguest
Также в Windows файервол может запросить разрешение для выхода в сеть программой:
Плагин vagrant-vbguest запускается и используется по умолчанию всеми виртуальными машинами. Он запускается автоматически сразу после старта коробки (так в Vagrant называют виртуальные машины). Получается что он работает каждый раз при загрузке коробки, то есть при использовании команд vagrant up или vagrant reload . Он не будет работать при команде vagrant resume (или vagrant up на приостановленной коробке) чтобы не тратить время при возобновлении работы виртуальной машины.
Чтобы отключить этот плагин, в настройках виртуальных машин установите vbguest.auto_update на false .
Как пользоваться Vagrant
Vagrant собирает виртуальные машины исходя из конфигурационного файла Vagrantfile . Вы можете создавать и использовать для быстрого развёртывания свои варианты, либо устанавливать различные операционные системы подготовленные другими. Большой сборник содержится в , там вы можете выбрать заинтересовавшую вас коробку и собрать, а затем запустить с помощью команды вида:
Например, offensive-security подготовили kali-linux-light ,
тогда установка и запуск выполняются командами:
Vagrant init offensive-security/kali-linux-light vagrant up
Примеры других популярных систем:
Для разных систем выделите отдельные папки, то есть запускайте приведённые выше команды в разных папках.
Vagrant умеет не только скачивать и запускать коробки, он также умеет запускать внутри них пользовательские скрипты — поэтому некоторые системы могут устанавливаться сложнее, чем показано здесь. Для них может потребоваться скачивание полного архива. Затем нужно будет перейти в папку, содержащую файл Vagrantfile и уже там запустить vagrant up .
Vagrant — это средство для управления виртуальными средами. Vagrant полностью решает такие проблемы, как: у вас на компьютере сайт работает, а на сервере нет. Или когда код написанный вашим колегой работает у него, но не хочет работать у вас.
Как устроен Vagrant
Основа Vagrant’а — это box’ы. Box — это файл с полностью настроенной и готовой к использованию виртуальной средой. Например, я в работе использую связку Nginx + PHP-FPM + MySQL (LEMP) и у меня есть готовый box , который настроен идентично моему рабочему серверу. Box’ы удобно передавать коллегам для обеспечения идентичной среды разработки у всей команды.
Все настройки виртуальной машины (сколько выделять памяти, какие каталоги делать общими с вашей основной системой и пр.) содержатся в одном файле, который называется Vagrantfile. Также с помощью этого файла можно указать какие команды должны быть выполнены при первом запуске Vagrant. Например, можно создать базу данных с определённым именем или настроить Nginx.
Как пользоваться Vagrant
Vagrant используется из командной строки. Команды лакончины, просты для запоминания и логичны. Так, например, чтобы запустить виртуальную среду достаточно выполнить команду: vagrant up . Обычно, последовательность работы с Vagrant выглядит следующим образом:
- устанавливаем нужный нам box командой vagrant box add [имя box"а] ;
- создаём Vagrantfile командой vagrant init и настраиваем его;
- запускаем Vagrant командой vagrant up ;
- после работы останавиливаем Vagrant командой vagrant halt ;
- когда проект закончен, удаляем виртуальную среду командой vagrant destroy.
Где взять box’ы
Тысячи готовых box’ов на все случаи жизни можно найти на сайте HashiCorp . Кроме настроенных сред там есть чистые установки популярных операционных систем. Такие box’ы можно использовать как основу для своего собственного box’а, если нужно что-то специфичное. Собственные box’ы также можно распространять, если зарегистрироваться на указанном выше сайте.
Homestead — это специально подготовленный разработчиками Laravel образ Ubuntu Linux , включающий в себя все необходимые инструменты для создания приложений на этом замечательном фреймворке. В официальной документации Laravel процесс установки Homestead описан довольно неплохо, но всё же содержит некоторые пробелы. Их я и попытаюсь заполнить в этой статье.
Итак, приступим. Первым делом нужно установить VirtualBox и Vagrant .
Последнюю версию VirtualBox можно скачать на странице https://www.virtualbox.org/wiki/Downloads . При установке можно оставить все настройки по умолчанию.
Установщик Vagrant скачиваем на странице https://www.vagrantup.com/downloads.html . По умолчанию программа устанавливается в корень диска C:\ , в папку HashiCorp\Vagrant\ . Я предпочитаю изменить этот путь на C:\Program Files (x86)\HashiCorp\Vagrant\ . После установки Vagrant потребуется перезагрузить компьютер.
Теперь нужно добавить бокс laravel/homestead в Vagrant . Открываем командную строку Windows от имени администратора (сочетание клавиш Win+R , затем команда cmd в окне Выполнить ) и выполняем следующую команду:
Vagrant box add laravel/homestead
В консоли Вы увидите примерно следующее:
Процесс загрузки займёт некоторое время, в зависимости от скорости вашего интернет-соединения.
Устанавливать Homestead будем при помощи Git . Скачать его последнюю версию можно на странице https://git-scm.com/downloads . При установке все настройки можно оставить по умолчанию. Чтобы команда git стала доступна в консоли Windows , также потребуется перезагрузить компьютер.
Теперь нужно клонировать репозиторий Homestead CLI в произвольную директорию, например в вашу домашнюю папку. Для этого запустите консоль Windows от имени администратора и выполните следующую команду:
Git clone https://github.com/laravel/homestead.git Homestead
На экране вы увидите следующее:
При этом в вашем домашнем каталоге будет создана папка Homestead . Перейдите в неё и запустите файл init.bat , он создаст конфигурационный файл Homestead.yaml в папке .homestead в вашей домашней директории.
Теперь создадим SSH-ключи для доступа к нашей виртуальной машине. Для этого нужно открыть терминал Git (например, щёлкнув на экране правой кнопкой мыши и выбрав из контекстного меню пункт Git Bash Here ) и выполнить следующую команду:
Ssh-keygen -t rsa –C "[Ваш email]"
При запросе пути к каталогу для сохранения файла ключей просто нажмите Enter , при этом будет выбрано значение по умолчанию указанное в скобках (в домашней директории будет создана папка .ssh , в которую будут помещены файлы ключей). Также необходимо будет ввести и подтвердить пароль для ключей.
Чтобы Vagrant использовал именно эти ключи, а не создавал новые файлы ключей при каждом запуске из-за настроек безопасности, нужно добавить следующую строчку в файл Vagrantfile в папке Homestead :
Config.ssh.insert_key = false
После этого он должен выглядеть примерно так:
# -*- mode: ruby -*- # vi: set ft=ruby: require "json" require "yaml" VAGRANTFILE_API_VERSION = "2" confDir = $confDir ||= File.expand_path("~/.homestead") homesteadYamlPath = confDir + "/Homestead.yaml" homesteadJsonPath = confDir + "/Homestead.json" afterScriptPath = confDir + "/after.sh" aliasesPath = confDir + "/aliases" require File.expand_path(File.dirname(__FILE__) + "/scripts/homestead.rb") Vagrant.require_version ">= 1.8.4" Vagrant.configure(VAGRANTFILE_API_VERSION) do |config| config.ssh.insert_key = false if File.exist? aliasesPath then config.vm.provision "file", source: aliasesPath, destination: "~/.bash_aliases" end if File.exist? homesteadYamlPath then settings = YAML::load(File.read(homesteadYamlPath)) elsif File.exist? homesteadJsonPath then settings = JSON.parse(File.read(homesteadJsonPath)) end Homestead.configure(config, settings) if File.exist? afterScriptPath then config.vm.provision "shell", path: afterScriptPath, privileged: false end if defined? VagrantPlugins::HostsUpdater config.hostsupdater.aliases = settings["sites"].map { |site| site["map"] } end end
Всё почти готово к запуску, осталось совсем немного.
Для начала откроем файл Homestead.yaml (помните, он находится в папке .homestead в нашей домашней директории). Вот его содержимое:
Ip: "192.168.10.10" memory: 2048 cpus: 1 provider: virtualbox authorize: ~/.ssh/id_rsa.pub keys: - ~/.ssh/id_rsa folders: - map: ~/Code to: /home/vagrant/Code sites: - map: homestead.app to: /home/vagrant/Code/Laravel/public databases: - homestead # blackfire: # - id: foo # token: bar # client-id: foo # client-token: bar # ports: # - send: 50000 # to: 5000 # - send: 7777 # to: 777 # protocol: udp
Здесь содержатся настройки виртуальной машины. В принципе, все они вполне работоспособны, нужно лишь внести небольшие изменения в нашу операционную систему. В первую очередь создадим папку Code в нашей домашней директории. Через эту папку мы сможем работать с сайтом, который будет доступен по адресу http://homestead.app . Чтобы получить возможность обращаться к этому сайту из браузера, добавим следующую строку в файл hosts , находящийся в директории C:\Windows\System32\drivers\etc\ :
192.168.10.10 homestead.app
SSH-ключи уже созданы и находятся в нужной директории.
Всё готово к запуску системы. Перейдите в директорию с установленным Homestead , откройте терминал и выполните комнаду vagrant up .
Поздравляю! Мы запустили виртуальную машину Homestead . Проверить её статус можно с помощью команды vagrant status , для остановки виртуальной машины используйте команду vagrant halt .
Открыв страницу http://hometead.app вы увидите следующее:
Это всего лишь означает, что в рабочей директории сайта, определённой в файле Homestead.yaml , пока что нет файлов. Это легко исправить, добавив файлы сайта в папку Code\Laravel\public\ (такая конфигурация очень удобна для установки Laravel : скопировав дистрибутив в папку Laravel мы получаем доступ к папке public через браузер, сами файлы движка при этом остаются недоступными извне).
Осталось настроить доступ к виртуальной машине через SSH.
Скачиваем SSH-клиент PuTTY на странице http://www.chiark.greenend.org.uk/~sgtatham/putty/download.html . Предлагаю скачать ZIP-архив и распаковать его в папку Putty в вашей домашней директории. Запустите файл PUTTY.exe . Подключиться можно со следующими параметрами:
- Логин: vagrant
- Пароль: vagrant
- Адрес сервера: 127.0.0.1
- Порт: 2222
Введите все эти параметры (кроме пароля) в окне PuTTY Configuration и нажмите кнопку Open .
Введите пароль в окне терминала (пароль не отображается при вводе, и может сложиться впечатление, что терминал завис, однако это не так) и нажмите Enter . После этого вы сможете работать с виртуальной машиной через SSH.
Можно автоматизировать процесс подключения, исключив необходимость каждый раз вводить все данные и пароль. Данные для подключения мы сохраним в PuTTY , для подключения будем использовать ранее сгенерированный SSH-ключ.
Проблема в том, что PuTTY использует собственный формат приватных ключей для подключения. К счастью, в его составе есть утилита для конвертации стандартных файлов ключей. Запустите PUTTYGEN.EXE , нажмите кнопку Load и выберите ранее сгенерированный с помощью Git файл приватного ключа id_rsa (для возможности выбора установите режим просмотра на показ всех файлов в выпадающем меню справа от поля Имя файла ).
После выбора потребуется ввести пароль, использованный вами при генерации ключа. Файл ключа будет загружен и сконвертирован в формат PuTTY . Очистите поля Key passphrase и Confirm passphrase , чтобы впоследствии подключаться без пароля.
Теперь нажмите кнопку Save private key и сохраните ключ в той же папке под именем id_rsa.ppk , предварительно согласившись на создание ключа без пароля.
Снова откройте PUTTY.EXE . В разделе Session введите настройки подключения, как делали до этого. Затем перейдите в раздел Connection→ SSH→ Auth , нажмите кнопку Browse и выберите ранее сгенерированный файл приватного ключа.
Вернитесь в раздел Session и сохраните конфигурацию. Для этого в поле Saved Sessions введите произвольное имя конфигурации (например Homestead) и нажмите кнопку Save .
Для подключения дважды кликните по имени сохранённой конфигурации в списке.
На этом настройку рабочей среды Homestead можно считать завершённой.