Всем привет!
Давненько я уже не писал ничего, вот решил чуток исправиться. На сей раз опишу процесс настройки виртуальных машин для веб-разработки в 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 для доступа к веб-серверу нужно прокидывать порты с хост машины на гостевую. В принципе все довольно неплохо прокидывается, но тут есть нюансы:
- Порты ниже 1024 можно забиндить только из под рута поэтому придется запускать virtualbox под рутом
- Легко перепутать порты хост машины и гостевой так как обращения все будут к локалхосту.
ИМХО самый лучший вариант это запускать машины с виртуальным сетевым адаптером которы выполняя роль 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
- Вперед
- Назад