KOINS.Studio - Articles - Инсталляция и настройка программ - Vagrant

Vagrant

Всё описание настройки приводится в связке с IDE PhpStorm.

В репозитории shared есть папка vagrant в которой находятся все файлы, которые потребуются для поднятия сервера.

Терминология

  • Хост — это наша машина, на которой установлен PhpStorm.

  • Гостевая машина — это виртуальная машина, на которой крутится сервер.

Как это работает

Vagrant это высокоуровневое API над виртуальными машинами (VirtualBox, Vmware...). Он выполняет некоторые действия и настройки над ними. В качестве действий он может запускать, останавливать машины, предоставлять нам доступ к ним через консоль и др. К настройкам относятся:

  • Настройки сетевого соединения.

  • Настройки папке на хосте, которая будет расшарена в гостевой ОС.

  • Настройка самой ОС с помощью запуска средств развёртывания среды (Chef, Puppet, Ansible).

То есть Vagrant управляет виртуальной машиной, но не вмешивается в саму операционную систему, которая в ней установлена.
Для настройки самой ОС у нас используется Ansible. Он занимается тем, что устанавливает необходимое ПО (apache, mysql, php и др.) и настраивает его (добавляет mysql пользователей, настраивает apache и т.д).

Преимущества

  1. Одная и та же версия ПО и ОС в виртуальной машине и на продакшене.

  2. Из первого пункта следует, что не будет разговоров в стиле: «Я не знаю почему у тебя не работает. У меня всё работает».

  3. Упрощение процедуры настройки сервера на машине разработчика. В частности:
    • Предустановленное средство отладки PHP кода - xdebug.

    • Разные пользователи для разных БД.

  4. Быстрое добавление фич на сервер. Допустим, если теперь проекту понадобился дополнительный модуль PHP, то он добавляется одним из разработчиков в настройки, которые потом все разработчики из SVN заберут. Всё. После запуска Tools → Vagrant → Provision этот модуль появится у вас на машине.

Настройка

  1. Делаем checkout репозитория shared.

  2. Создаём копию файла config.default.yml под названием config.yml и редактируем его внося свои локальные данные. Этот файл можно хранить в двух местах:
    1. Оставить в папке vagrant. Следите, чтобы случайно не закоммитить его.

    2. Переместить в любое место по желанию и запомнить полный путь к нему. Он понадобится на 4-ом шаге.

  3. В PhpStorm заходим в настройки и выбираем пункт меню Vagrant.

  4. Вводим следующие данные:
    1. Vagrant executable: vagrant.

    2. Instance folder: папка_vagrant_в_папке_shared.

    3. Provider: пустой.

    4. Environment variables. Если во втором шаге мы переместили файл куда-то из папки vagrant, то добавляем новую переменную с названием VAGRANT_CONFIG и указываем ей в качестве значения полный путь к файлу с его названием.

  5. После этого PhpStorm должен ниже показать найденную виртуальную машину в табе Boxes.

  6. Сохраняем настройки и закрываем их.

  7. В главном меню приложения выбираем Tools → Vagrant → Up.

После этих действий vagrant начнёт качать образ виртуальной машины с интернета (только при первом запуске) и настраивать машину.

Подводные камни

Для Windows:

Для всех:

  • Могут быть ошибки, если не включена виртуализация в настройках BIOS-а. Из-за этого vagrant выдавал таймауты подключения к машине. Поставив в файле Vagrantfile:
    config.vm.provider "virtualbox" do |v|
      v.gui = true
    end.

    Можно посмотреть что там пишет VirtualBox.

  • Был случай, когда движок не мог подключиться к БД и говорил, что нет доступа для пользователей, хотя имя пользователя, название БД и пароль были указаны верно. Это происходило из-за того, что почему-то в БД был анонимный пользователь (с пустым логином). После его удаления проблема была решена. Возможная причина возникновения - не стабильная версия ansible (бралась с devel ветки). Сейчас берётся одна из стабильных версий.

Рабочий процесс

Для запуска сервера выбираем в главном меню снова  Tools → Vagrant → Up.
Перед закрытием IDE и последующим выключением компьютера желательно вызвать Tools → Vagrant → Halt, но ничего не должно случиться, если вы этого не сделаете.
Если вы хотите зайти на виртуальную машину через консоль, то можете открыть консоль вашей ОС, перейти в папку vagrant и набрать команду vagrant ssh.

Сведения о сервере

  • ОС: Debian 6.0.9 (squeeze).

  • IP адрес гостевой машины: 10.0.0.2.

  • IP адрес хоста: 10.0.0.1. Именно по этому адресу гостевая машина видит нашу.

  • ОЗУ: 384 МБ.

  • MySQL пользователи:
    • geo. Пароль: стандартный пароль Коинса.

    • safe. Пароль: стандартный пароль Коинса.

    • rs. Пароль: стандартный пароль Коинса.

    • root. Без пароля.

  • MySQL БД:
    • geo.

    • geo_test.

    • rs.

    • rs_test.

    • rs_test_control.

    • safe.

    • safe_test.

    • safe_test_control.

Last modification: 04.07.14 08:53