Про Vagrant + готовый образ для работы с MODX

На днях рассказали про очень интересный проект — Vagrant

Vagrant (англ. бродяга) — это обёртка для удобного управления виртуальной машиной. Он работает с собственными образами (*.box), для которых предъявляются определённые требования.
Если коротко: то вы скачиваете готовый образ, инициализируете и запускаете. Это позволяет вам запустить новый виртуальный сервер секунд за 30.
При каждой инициализации создаётся отдельная виртуальная машина в VirtualBox и вы не меняете исходный образ. То есть, вы можете запускать сколько угодно виртуальных машин, делать с ними что угодно, потом удалять и создавать новые.
Исходный образ, как бы, распаковывается и создаётся копия на вашей машине.
Самое приятное, что текущую машину можно запаковать обратно в новый box, скопировать на флешку и подарить другу, или еще кому-то. Он так же запустит её у себя в Vagrant и сразу сможет работать.
Команды
Все команды выполняются из той директории, где вы инициализировали свою копию. У вас там должен лежать файл в настройками — Vagrantfie.Инициализация новой копии и запуск:
vagrant init precise32 vagrant upПерезагрузка
vagrant reloadУдаление виртуальной машины — то есть, инициализации, со всеми изменениями этой копии
vagrant destroyВыключение машины
vagrant haltВключение, понятно
vagrant upЗапаковка текущего состояния
vagrant packageВсе остальные команды можно увидеть, набрав в консоли vagrant -h
bezumkin-mbp:~ bezumkin$ vagrant -h
Usage: vagrant [-v] [-h] command [<args>]
-v, --version Print the version and exit.
-h, --help Print this help.
Available subcommands:
box manages boxes: installation, removal, etc.
destroy stops and deletes all traces of the vagrant machine
halt stops the vagrant machine
help shows the help for a subcommand
init initializes a new Vagrant environment by creating a Vagrantfile
package packages a running vagrant environment into a box
plugin manages plugins: install, uninstall, update, etc.
provision provisions the vagrant machine
reload restarts vagrant machine, loads new Vagrantfile configuration
resume resume a suspended vagrant machine
ssh connects to machine via SSH
ssh-config outputs OpenSSH valid configuration to connect to the machine
status outputs status of the vagrant machine
suspend suspends the machine
up starts and provisions the vagrant environmentОчень просто и удобно.Настройки
Все настройки каждой конкретной копии хранятся в одном файле — Vagrantfile.Он очень подробно описан, как внутри самого файла, так и на сайте.
По умолчанию Vagrant подключает директорию, в которой был проинициализирован в директорию /vagrant запущенного сервера. То есть, сразу после запуска вы можете закидывать на сервер свои файлы.
Если вы хотите добавить еще директорий с вашей машины в сервер, нужно списать в конфиг (пример там есть, закомментированный)
config.vm.synced_folder "/Users/bezumkin/mydir", "/media/mydir/"Также на очень важно суметь обратиться на веб-сервер, который запущен в машине. Для этого нужно пробросить порт 8080 вашего компа на порт 80 запущенного образа.
config.vm.network :forwarded_port, guest: 80, host: 8080Таким образом, вы легко сможете подключить любые директории и пробросить порты. После изменения Vagrantfile нужно сделать
vagrant reloadдля применения изменений.
Установка готового образа
Не долго думая, я скачал официальный образ Ubuntu 12.04.3 (precise) и немного доработал его для удобного запуска в нём сайтов.- Скачиваем и устанавливаем свежий Vagrant
- Скачиваем и устанавливаем свежий VirtualBox
- Скачиваем мой настроенный образ Ubuntu 12.04.3
- Заходим в директорию, куда скачали образ и набираем там
vagrant box add precise32 precise32.box
Это добавляет образ к вам в систему.
- Теперь можно проинициализировать этот образ в любой своей директории, и в дальнейшем из неё вы будете запускать все нужные команды.
vagrant init precise32
- Для работы с веб-сервером нужно пробросить порт 8080 в настройках
config.vm.network :forwarded_port, guest: 80, host: 8080
- Теперь запускаем виртуальную машину
vagrant up
vagrant sshДальше можно пользоваться командами через sudo:
- sudo site_add — Добавление ного сайта на последней версии MODX.
- sudo site_prepare — Подготовка окружения для сайта на другом движке. Создаётся все нужно, дальше просто загружаете файлы и устанавливаете.
- sudo site_remove — Удаления сайта целиком, вместе с БД и юзером
- sudo site_upgrade — Обновление сайта на MODX до последней официальной версии
У вас натуральные сайты, у каждого свою юзер, своя база данных и свой доступ по SFTP. Вы можете подключаться на сайт через Filezilla или PhpStorm, используя порт 2222.
Дефолтный сайт открывается по адресу 127.0.0.1:8080.
Для того, чтобы вы могли использовать несколько сайтов на вашей машине, их нужно добавить в hosts вашего компьютера (не образа):
## # Host Database # # localhost is used to configure the loopback interface # when the system is booting. Do not change this entry. ## 127.0.0.1 localhost pma.localhostВ моём образе уже установлен PhpMyAdmin, логин root, пароль vagrant, заходить на pma.localhost:8080/ сразу после изменения файла hosts.
Установленные пакеты:
- Nginx 1.4.4
- Mysql 5.5.34
- Php 5.5.6 и php-apc
- Sendmail
- Midnight Commander
- htop
На всякий случай, еще раз ссылка на мой образ — yadi.sk/d/hd7MfwC6EHhUp.
Комментарии: 25
Авторизуйтесь или зарегистрируйтесь, чтобы оставлять комментарии.
В папке с дополнением есть Vagrantfile и bootstrap.sh в котором прописаны все этапы создания правильного хостинга по твоей инструкции и опять же твоим скриптами ставит modx настраивает nginx и php-fpm, потом монтирует директорию /vagrant в директорию с modx, если нужно собирает пакет, потом можно выполнить sql запрос, чтобы прописать пространство имен. В конечном итоге работаем с локальными файлами, и можем спокойно тестировать работу в правильном окружении, скрипты пишутся один раз потом только задаем значения переменным и все работает. Плюс храним все в git и любой человек может собрать такое же окружение с использованием общедоступных box
Не знаю, зачем несколько образов, если при инициализации создается новая машина. Или тебе разные операционные системы нужны?
Я с каждым проектом в git храню конфигурацию для vagrant (не сам бокс, а скрипты для создания окружения). И выходит что для каждого проекта всегда есть настроенная именно для него система только с нужными модулями и все это занимает минимум места. Удобно тем что если нужно чтото делать из ранее созданного то поднимается окружение в котором создавалось приложение. Ну и я монтирую локальную папку в окружение и работаю с исходным кодом локально в идеальном окружении
Ну и если выложить на доступный url коробку с образом, то достаточно давать просто сам файл vagrant — коробка сама скачается, установится и запустится, если прописаны правила для puppet или chef — то еще и пакеты все установятся, можно написать рецепты и накатить миграции или сделать чекаут проекта из git например.
Нужно
Всё работает замечательно, спасибо за новость!
P.S. При настройке БД можно выбрать scope: project или ide. То есть, эта настроенная БД будет доступна только одному проекту, или всем.
Там вообще много добра такого, можно прям конвеер для разработки сделать
P.S. Скрин с PyCharm, но сильных отличий с phpStorm нет
После обновления сам предложил, сам поставил и всё работает.
Но если ты камикдзе — то можно, настройка ничем не отличается.
плюсы на лицо- после авторизации ты по сути обращаешься к базе как localhost,
SSH так и так открыт.
Например Toad for Mysql умеет такую штуку делать.сам пользую.
Не уверен, что эта инструкция сейчас работает, но принцип должен быть ясен: нужно сделать форвардинг с порта 8080 на 80.
На
Заработала без 8080 ато жутко надоел всегда прописывать 8080 конце урл.
Василий вы на HHVM не тестировали modx
Для разработки Parallels Desktop, для работы — modhost.pro
В ней стоит ubuntu настроенная по инструкции.
Настроил bind9 и внутри самой ubuntu поддомены работают, а с основного компьютера где стоит Parallels Desktop нет. Только основной домен работает domain.local, прописанный в hosts.