пятница, 7 января 2011 г.

Стек веб разработчика в виртуальной машине с FreeBSD

Мне ужасно надоело при переходе с одного компьютера на другой и из одной системы в другую, поднимать окружение для разработки. Пишу я в основном на PHP/Python, поэтому обычно используется классическая связка (M/W/L)AMP. Я давно слышал что некоторые разработчики перебрались в виртуальные машины, но сам всё не решался на этот шаг, но вот появилось свободное время и я поднял стек для веб разработки и использую теперь виртуальную машину VirtualBox, с полноценной системой — FreeBSD, максимально приближенной к production.

В виртуальной машине система работает без окон и в минимальной конфигурации, благодаря чему требует минимум ресурсов. Достаточно будет даже 64Mb оперативной памяти. Порты для http, ssh проброшены наружу. В итоге я имею полноценный сервер в коробке, а снаружи в реальной системе использую полноценую IDE (NetBeans/Eclipse) с браузером, отладчиком и терминалом, которые обращаются к виртуальной машине.

Итак, далее я расскажу как все это собрать и дам ссылку на готовый образ для VirtualBox, вторым шагом будет настройка IDE.


Я пропущу все подробности создания виртуальной машины и установки, в этом нет ничего интересного, да и окружение индивидуально для каждого. На freebsd.org был взят образ FreeBSD i386 8.1 Stable, подгружен в виртуальную машину, после чего пошла установка.

Настройка FreeBSD


После установки первым делом пробрасываю SSH наружу, для доступа из локальной машины. И выдаю ip через DHCP виртуальной машины. В /etc/rc.d должно быть что-то такое:
ifconfig_em0=«DHCP»
sshd_enable=«YES»

Тут я указал что ip адрес на интерфейсе em0 мы получим по DHCP от VirtualBox. Остальные же это старт необходимых демонов.

Настройка VirtualBox


В настройках virtualbox'a захожу в Сеть->Проброс портов и делаю так:


IP хоста — это IP адрес моей локальной машины на которой установлен VirtualBox, IP гостя — адрес который выдал DHCP, его можно подсмотреть скомандовав ifconfig.

Для удобства разрешаю root доступ по SSH, для этого нужно добавить строку PermitRootLogin yes в /etc/ssh/sshd_config

Теперь можно коннектиться из локальной машины в VirtualBox. В putty или iTerm, в зависимости от вашего десктопа командуем # ssh 192.168.1.101 -p 2222 -l root и мы внутри FreeBSD.

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

Настройка дебаггера


Тонкий момент это дебаггинг, к которому нужно получить доступ из десктопа. Все решается очень просто. В ВМ из портов ставлю xdebug для PHP, а в конфиг php.ini просто добавляю:

zend_extension=/usr/local/lib/php/20090626/xdebug.so
xdebug.remote_enable=on
xdebug.remote_log="/var/log/xdebug.log"
xdebug.remote_host=192.168.1.101
xdebug.remote_handler=dbgp
xdebug.remote_port=9000

Где, remote_host равен ip адресу моего десктопа, на котором IDE будет слушать 9000 порт.

В Netbeans все работает из коробки, в Eclipse прийдется доставлять плагины. Поэтому расскажу как я работаю в Netbeans IDE.

Настройка NetBeans IDE


Первым делом создаю проект и указываю локальную папку где будут храниться файлы, захожу в его свойства -> Run Configuration и выбираю запуск как Remote Web Site (FTP, SFTP), указываю Project Url и Index File (понадобится отладчику).



В Remote Connection вбивается Port: 2222, Login: root и его пароль. Initial Directory указывает на папку, к которой Apache обращается за виртуальными хостами.



Итого


1) Основная система не забита всякими ненужными демонами.
2) Я обладаю всегда полноценной консолью и всеми благами системы (порты, хрон и т.д)
3) Окружение для моего кода максимально приближено к боевым условиям.
4) Легкая переносимость окружения c одной машины на другую.
5) Все работает очень быстро.

Как дополнительный элемент элегантности решения, работает мой домашний роутер. В случае если мне необходимо показать заказчику проект над которым я прямо сейчас работаю, то для этого достаточно в домашнем маршрутизаторе пробросить со свего ин-ет адреса — порт 80, на свою локальную машину — 192.168.1.101:8080.

Скачать готовый образ можно тут. В образ вошли актуальные на сегодня стабильные версии Apache/PHP+Extensions/Python/Mysql/Phpmyadmin/ZendFramework и др. SSH login: root, password: toor; MYSQL login: admin, password: nimda. Не забудьте переписать виртуальные хосты, либо отредактировать /etc/hosts, т.к по умолчанию установлен мой домен и ip адреса.

С наступающим Новым 2011 годом!

UPD: Залил новый ахив, теперь образ с макcимальной компрессией весит 259Mb, ссылка обновлена.


Источник: Хабрахабр - Web-разработка
Оригинальная страница: Стек веб разработчика в виртуальной машине с FreeBSD

Комментариев нет:

Отправить комментарий