Автор оригинала: Vyacheslav.
Фон
Как разработчик программного обеспечения подрядчика, время от времени просим, чтобы выполнить аудит проектов лампы. Поскольку конфигурация проекта отличается, я использую так называемую «среду репозитории зонтика», что позволяет мне обернуть такие проекты в многоразовую блужданную среду без необходимости внести изменения в себя кодовой базы проверенного проекта.
Позвольте мне поделиться этим подходом с вами.
Инструменты просты. Windows поддерживается, если у вас установлен Git для Windows (Ex Msysgit).
Vagrant Box предоставляется с помощью Anbible, так как этот половик имеет минимальные зависимости для запуска.
Проблемы для решения
- Настроить бродную среду на локальном поле
- Настройте гостевую ОС (я обычно работаю с Ubuntu 14.04 LTS Distribution) с стеком лампы
- Проверьте гостевые проекты в рабочее пространство и составьте их в бродяга
- Предоставление Гостевой ОС Согласно требованиям гостевых проектов
- Убедитесь, что гостевые проекты доступны с местного ящика
- Делай свою работу
Подготовка бродяга
Есть тонны бродных плагинов. Некоторые из них довольно удобны. Обычно я использую три плагина с брызги:
- vagrant-vbguest : Синхронизирует гостевые дополнительные версии внутри изображения с версией Master Oracle VirtualBox. Это помогает предотвратить случайные проблемы с общими папками.
- Vagrant-hostsuppdater : Автоматически обновляет файлы хоста с использованием псевдонимов боковых разработчиков. Важно: этот плагин попросит вас привилегированного доступа к записи в/etc/hosts.
- vagrant-auto_network. : Этот плагин регистрирует внутренний диапазон адресов и назначает уникальные IP-адреса для каждого последовательного запроса, чтобы конфигурацию сети полностью выключена. Это намного легче, чем запуск DNS-сервера и маскирует базовую работу вручную присвоение адресов.
С помощью плагинов My VagrantFile обычно содержит: псевдонимы для веб-сайтов DEV, которые будут добавлены в/etc/hosts + я предпочитаю все бродные ящики, чтобы иметь ту же подсеть IP-адреса.
config.vm.hostname = "www.local.dev" config.hostsupdater.aliases = ["alias.local.dev", "alias2.local.dev"] config.vm.network :private_network, :auto_network => true # My favorite: to stick to 33.* subnetwork AutoNetwork.default_pool = '192.168.33.0/24'
init_vagrant.sh
Предоставляется в репозитории устанавливает вышеупомянутые плагины.
Получение лампы на бродяга
Для того, чтобы настроить стек лампы на бродяге, я использую Anisible Provisioner и набор рецептов обеспечения.
Давайте посмотрим на развертывание/Vagrant.yml Parts:
vars: ... mysql_root_user: root mysql_root_password: devroot apache_mode: prefork # use prefork or worker variables java_version: 8 mailhog_version: 0.1.6 mongo_version: 3 nodejs_version: "0.12" # 0.10 0.12 php_family: default # 5.4 | 5.5 | 5.6 | default php_xdebug_version: 2.3.3 ... php_extensions: - { name: "php5-curl" } - { name: "php5-xsl" } - { name: "php5-memcache" } - { name: "php5-memcached" } ... tasks: # MySQL 5.5 - include: "{{root_dir}}/tasks_mysql.yml" # apache prefork|worker - include: "{{root_dir}}/tasks_apache.yml" - include: "{{root_dir}}/tasks_php_apt_switchversion.yml" # php 5.5 for apache - include: "{{root_dir}}/tasks_php_apache.yml" # node 0.12.* - include: "{{root_dir}}/tasks_nodejs.yml" # installs memcached service - include: "{{root_dir}}/tasks_memcached.yml" # Installs custom php extensions - include: "./tasks_phpextensions.yml" # (re)imports databases from db folder - include: "{{root_dir}}/vagrant/tasks_vagrant_import_mysqldb_databag.yml" # register apache websites on vagrant - include: "{{root_dir}}/vagrant/tasks_vagrant_apache2_devsites.yml"
Это устанавливает типичный стек лампы: Apache 2.4 с PHP 5.5 (или 5,4 или 5,6, в зависимости от набора php_family). Кроме того, установлены инструменты композитора и Bower. Гульп и Грунт также доступны. Если мне нужна более конкретная настройка на версиях, я настрою его здесь.
Получение гостевых проектов в бродяга
Для того, чтобы получить проекты внутри блуждания, давайте оформием заказ их в общую папку. Общедоступная папка, чем сопоставлена как/бродяга/публичная внутри бродяга. Из-за некоторых ограничений разрешений мы отображаем папки с 777 правами и файлами доступа с 666.
c.vm.synced_folder ".", "/vagrant", mount_options: ['dmode=777','fmode=666']
Обычно гостевые проекты проводится в своих собственных репозиториях. Чтобы ускорить проверку такого случая, специальный файл был введен, называется .Projmodules. Формат совместим с форматом файла GitModules, обычно выглядит как серия определений проекта:
[submodule "public/ansible_developer_recipes"] path = public/ansible_developer_recipes url = git@github.com:Voronenko/ansible-developer_recipes.git
Каждый субпроект будет клонирован в путь Использование репозитория Адрес урл
init.sh при условии установленных в хранилище или установленных гостевых проектах.
Переопределение конфигурации гостевых проектов для бродяга
Это может быть действительно сложно. Рекомендация шахты состоит в том, чтобы сохранить в местных/подпапки файлах, которые необходимо перезаписать для работы с блуждающим. Например, если Guest Project имеет конфигурацию в Public/ProJ1/Config/, мы можем переопределить в локальном/ProJ1/Config/local_config_file_adjusted_for_vagrant.php; В этом случае регулировка кодовой базы для работы под брунтикой так же просто, как копирование содержимого локальной папки на публику. Если архитектура Guest Project позволяет конфигурацию на основе окружающей среды или развития, которая является лучшим сценарием.
Например, обычно у меня есть PAGRANT-Tools Project, который содержит маленькие помощники PHP для изучения состояния бродяга (например, admner, memcache.php).
Изготовление гостевых проектов, доступных с местного ящика
Посмотрите на следующий раздел из Vagrant.yml:
vagrant_lvh_sites: - { type: "web", # WSGI & LAMP sites supported name: "tools", # Name of the dev website path: "/vagrant/public/vagrant-tools", # Path to site home folder # template: "{{playbook_dir}}/files/apache2/website.yml", # Provide custom template, if builtin is not good aliases: [ "tools.vagrant.dev" ] # These will be additional aliases to <>.lvh.me vhost_overrides: ["SetEnv no-gzip 1", "RequestHeader unset Accept-Encoding"] # These lines will be added to website configuration file. }
Переменная конфигурации vagrant_lvh_sites Содержит список сайтов, которые необходимо настроить с помощью блуждающего. Позвольте мне направлять через параметры:
- Тип: может быть либо в Интернете, либо WSGI — указывает, какой шаблон Vhost используется. « Web ‘подходит для большинства проектов лампы.
- Имя: Уникальное имя альфа-цифрового сайта. Сайт будет доступен под именем <имя сайта> .lvh.me
- Путь: Путь к папке корневой папки репозитория сайта
- DEST: Необязательно, если корневая папка репозитория не является корнем веб-сайта. Укажите относительный путь к веб-корню здесь.
- Шаблон: Необязательно, если шаблон виртуального хоста по умолчанию Apache не соответствует вашим потребностям, вы можете переопределить его здесь.
- Псевдонимы: варианты, массив доменных имен. Будет использоваться как виртуальные псевдонимы. Подходящее, Если вы планируете получить доступ к бродягу на домене .dev
- VHOST_OVERRIDES: Необязательно, массив строк, список конфигураций Apache, которые будут введены в шаблон Apache Vhost.
<имя сайта> .lvh.me Trick: * .lvh.me всегда разрешается до 127.0.0.1; Это позволяет разработчику использовать одно и то же доменное имя как внутри блуждающего, так и локального поле для разработчика. Бонус — переадресация портов работает как очарование. Вы можете добиться эффекта: путем навигации на веб-сайт .lvh.me Вы доступаете в веб-сайт, размещенный и настроен на брунт.
Импортируя базу данных MySQL Свалки
Есть два подхода:
Опция A: Vagrant подключается к MySQL, работающему на вашем локальном компьютере/сети. (Это самый простой подход, как в этом случае не нужно устанавливать MySQL под брунтным.)
Опция B: MySQL устанавливается внутри блуждания, и нам нужен способ импорта баз данных.
Для целей работает MySQL под брунтиком: Поместите свои свалки SQL под База данных/дБ/<Имя базы данных>/<Дампа базы данных> .sql
; Например, База данных/дБ/сайт/dump.sql
Recipe Prodipe Imprise импортирует каждую из доступных дампов базы данных в качестве новой базы данных, при условии, что имя папки равно имени базы данных. Если .nodbs
Файл флаг найден в корне баз данных/дБ, импорт пропускается для предотвращения случайных перезаписи БД.
Кписка ниже делает трюк:
#!/bin/sh HOMEDIR=${PWD} if [ -f .nodbs ] ; then echo ".nodbs flag present, db import skipped"; exit 0 fi for d in */ ; do DBNAME="$(echo $d | cut -d '=' -f 2 | sed 's/\/$//')" echo "IMPORTING DB: $DBNAME" cd "$HOMEDIR/$DBNAME" mysql -u{{mysql_root_user}} -p{{mysql_root_password}} -e "drop database if exists $DBNAME" mysql -u{{mysql_root_user}} -p{{mysql_root_password}} -e "create database if not exists $DBNAME CHARACTER SET utf8 COLLATE utf8_general_ci" last_dump=$(find ./*.sql -type f -exec stat -c "%n" {} + | sort -r | head -n1) mysql -u{{mysql_root_user}} -p{{mysql_root_password}} $DBNAME< $last_dump done touch "$HOMEDIR/.nodbs"
Устранение неполадок по электронной почте
Обычно сайты отправляют почту. Для того, чтобы отладить эту часть, я обычно использую MailHog. . Это инструмент отладки SMTP с интерфейсом Webui, что делает его также подходящим для автоматического тестирования.
Отладка
По какой-то причине это чаще всего вызывает трудности. Xdebug устанавливается внутри лампы. Он настроен на опрос исходный хост, поэтому в большинстве случаев вам понадобится только для прослушивания входящих соединений отладки (зеленый телефон в PHPSTORM). Кроме того, вам понадобится какой-то букмаркет или расширение, как Xdebug Helper Чтобы включить сеанс отладки.
Доступны сайты внутри бродяга:
- На домене lvh.me на порту 9080 (если вы находитесь в Windows, или привилегированном пользователю — вы можете набрать даже от 80 до 80)
- На домене Vagrant.dev на порт 80
Типичные шаги для отладки с использованием PhPStorm включают в себя:
Настройка интерпретатора (вы можете использовать локальный, либо удаленную). PHPSTORM 9.0.2 автоматически определяет бродягу, кстати.
Включение прослушивания для отладки (PhPStorm) + Обеспечение установки сеанса отладки в браузере
Положить точку останова внутри вашего кода и на самом деле отладка. ПРИМЕЧАНИЕ. Корнеж репозитория лампы сопоставлен на/брызги/
Код в действии
Код можно загрузить из репозитория https://github.com/voronenko/lamp-box.
Подготовить
Проверьте или вилить репозиторий. Беги ./init_vagrant.sh.
Чтобы установить бродные плагины, если у вас уже нет.
Отрегулируйте .Продмодули
Чтобы включить репозитории проекта, которые вы собираетесь обернуть. При необходимости реализуйте неизбежный рецепт для настройки определенной конкретной среды проекта, которая выходит за пределы установки расширений PHP.
Беги ./init.sh
клонировать необходимые репозитории проекта. Не удаляйте проект «Public/Ansible_developer_recipes», потому что требуется для вашей настройки окружающей среды.
Обзор Развертывание/Vagrant.yml
Чтобы убедиться, что он включает в себя все, что вы планируете установить.
Окружающая среда
Беги Vagrant up
И будьте терпеливы. Вы настраиваете новую коробку, поэтому он может занять некоторое время. Скорость зависит от вашего интернет-подключения. В редких случаях положение может быть прервано. В таком случае повторите предоставление вручную, используя бродяжественное положение
команда.
Наконец, вы должны увидеть что-то вроде этого:
PLAY RECAP ******************************************************************** default : ok=46 changed=16 unreachable=0 failed=0
В этот момент у вас есть дополнительные помощники:
- Интерфейс веб-интерфейса mailhog по адресу http://localhost: 9025/или в http://tools.vagrant.dev:8025/
- Phpmyadmin Web UI: под каждым сайтом в /phpmyadmin/ подпапка. Используйте Root/Devroot для входа в систему. (Как вы вспоминаете, ваш проект DBS автоматически импортируется при первоначальном положении)
- WebGrind Profiler: под каждым сайтом в /webgrind/ подпапка.
- Настроен отладчик.
Точки интереса
У каждого есть свои рецепты того, как создать лучшую среду веб-разработки в мире. Лучший, кто подходит для ваших потребностей. Я предпочитаю иметь только минимальный набор программного обеспечения на моем рабочем ПК, поэтому я широко принял виртуализацию с блуждающим и ESXi. Цель состоит в том, чтобы иметь надежный способ запускать несколько проектов на моем хосте без вмешательства. С Eszxi и бродягами, я могу успешно достичь этой цели.
Оригинал: «https://www.codementor.io/@slavko/wrapping-lamp-project-into-vagrant-with-ansible-du107usin»