July 3, 2013

VirtualBox для веб-разработки

Всем привет!

Давненько я уже не писал ничего, вот решил чуток исправиться. На сей раз опишу процесс настройки виртуальных машин для веб-разработки в VirtualBox. В качестве хост-машины у меня используется ноутбук c Runtu 12.10 (та же Ubuntu только в профиль), в качестве гостевых - Debian,CentOS,Ubuntu Server.

Надо сказать что подобное желание собрать несколько различных виртуалок с различным стеком технологий зародилось у меня довольно давно. Как большой противник загромождения системы всяким хламом и кучей утилит я очень рад эффективной веб-разработке с минимумом установленного ПО на своем рабочем ноутбуке.

Ведь далеко не ок когда у тебя в системе установлены LAMP, Nginx + FastCGI, Node.js, RoR и т.д., так что пусть под каждую технологию будет виртуалка с конкретной специализацией и соответствующим ПО.

Итак, все операции будем проводить в VirtualBox. Для тех кому лень ставить гостевые системы можно их скачать с virtualboximages.com и virtualboxes.org.

Не буду описывать довольно простой процесс поднятия виртуальной машины. Акцентирую внимание именно на сетевых настройках. По умолчанию виртуалки выходят в сеть под NAT. Есть также режим сетевого моста, виртуального адаптера, универсального драйвера и внутренней сети. Об особенностях каждого варианта можно почитать вот здесь (http://lifeslider.blogspot.ru/2012/07/virtualbox.html).

Вкратце скажу что в режиме NAT для доступа к веб-серверу нужно прокидывать порты с хост машины на гостевую. В принципе все довольно неплохо прокидывается, но тут есть нюансы:

  1. Порты ниже 1024 можно забиндить только из под рута поэтому придется запускать virtualbox под рутом
  2. Легко перепутать порты хост машины и гостевой так как обращения все будут к локалхосту.

ИМХО самый лучший вариант это запускать машины с виртуальным сетевым адаптером которы выполняя роль dhcp-сервера сам назначает виртуалкам внутренние ip. Обычно это 192.168.56.1xx

И по этому ip вам доступна гостевая машина и со стороны хоста она ничем не отличается от обычной VDS в интернетах. Единственный минус - это отсутствие доступа к интернету из виртуалки. Довольно простое решение проблемы можно посмотреть по этой ссылке: http://bit.ly/17IXOjL (ТОЛЬКО ПЕРВЫЕ ТРИ ШАГА, кроме 4 и 5).

С 4 шагом и так все расписано по ссылке, а вот вместо 5 шага есть более элегантное решение т.к. жестко забивать ip интерфейса с доступом к интернету я не имею возможности (роутеры частенько выдают совершенно разные ip).

Лучше выполнить пункт 1 который приведен по этой ссылке - http://bit.ly/19TC8SG

Теперь проверяем соединение из виртуалки - ping 8.8.8.8, если есть ответ то значит до интернета мы достучались. Теперь осталось только сделать еще одно небольшое действие:

vi /etc/resolv.conf

nameserver 192.168.56.1

Теперь на виртуалке полноценный доступ к интернету! =)

И да, у себя я использую dnsmasq чтобы перенаправлять все запросы к доменам .dev

sudo nano /etc/dnsmasq.conf

# Add domains which you want to force to an IP address here.
# The example below send any host in double-click.net to a local
# web-server.
address=/dev/192.168.56.103

И да, прошу прощения за несколько сумбурное изложение текста. Если что непонятно - пишите в комментарии, помогу разобраться.

UPD: Пришел к выводу что запускать сам виртуалбокс и дополнительное окошко системы некошерно и поэтому переделал все на запуск VirtualBox Headless. Чтобы не быть голословным привожу примеры скриптов для старта виртуалки. Запускать в строгой последовательности =)

https://gist.github.com/rhamdeew/5922423

Другие проекты:

telegram-catalog.top

rhamdeew © 2020