Виртуальная машина, как сервер для web-разработки

2 июня 2014
Рубрика: Заметки

Zeboton

Несколько лет назад, в очередной раз настроив окружение для web-разработчика на новом компьютере, я понял что этот процесс нужно как-то автоматизировать. Немного поразмыслив, я понял, как это удобнее всего сделать — виртуальная машина.

В виртуальной машине, в моём случае VirtualBox, устанавливается Ubuntu Server, в нём поднимается всё серверное окружение: ssh, web-сервер, БД, PHP и другие нужные программы, например, screen. При необходимости переезда на другой компьютер: либо просто копируется виртуальный жёсткий диск, либо делается Экспорт конфигурации в VirtualBox. Что позволяет за считанные минуты получить полноценный и уже полностью настроенный сервер на новом компьютере. Безумно удобно! ( Есть, конечно, небольшая проблема с переносом 9-20 GiB файлов виртуальной машины с одного компьютера на другой, но она очень легко решается, например, передачей файла во внутренней сети или архиваторами, которые умеют разрезать файл на части ).

Ещё одно удобство от наличия сервера в виртуальной машине — все проекты уже настроены и готовы для работы над ними. Как же добраться до исходных кодов с хост-машины, чтобы при этом в IDE подхватилась CVS? Всё очень просто 🙂

В VirtualBox есть возможность в Свойствах ( Ctrl+S ) виртуальной машины, в разделе Сеть, указать, что Тип подключения: Сетевой мост. Если не вдаваться в подробности работы механизма, то можно сказать, что виртуальная машина появится в той же сети, что и хост-машина, то есть она обратиться к роутеру и получит IP-адрес из той же подсети. У меня хост-машина имеет IP 10.5.5.10/255.255.255.0, а виртуальная машина получила IP 10.5.5.101/255.255.255.0. ( Есть вариант подключения так, чтобы
виртуальная машина VirtualBox, была доступна с хост-машины без «внешней сети», имела доступ в интернет при наличии «внешней сети» и к другим виртуальным машинам на этой хост-машине. ) Что это даёт?

Так как «компьютеры» находятся в одной сети, то можно подключиться с одного к другому по NFS ( подключение к NFS обычному (не sudo) пользователю ).

Класс! Когда нужно работать, достаточно запустить виртуальную машину, подключиться к ней по NFS и всё, можно запускать свою любимую IDE и работать! В /etc/hosts, естественно, нужно прописать по каким доменам на какой IP стучаться, чтобы видеть в браузере то, что творишь. У меня /etc/hosts содержит что-то типа:
10.5.5.101 myproject.dev
10.5.5.101 subdomain.myproject.dev

Плюсы такого подхода несомненны:

  1. Настраивать сервер нужно только один раз.
  2. Если разработка не ведётся, то можно выключить виртуальную машину и серверные программы не будут есть ресурсы хост-машины.
  3. Можно делать резервные копии сразу всего сервера.
  4. Использование CVS, например, git, позволяет поддерживать актуальность исходных кодов во всех виртуальных машинах (БД в любом случае лучше восстанавливать из последней резервной копии production сервера).

Минус нашёл только один:

  1. Перенос большого файла-образа виртуальной машины с одного компьютера на другой.

Однако, он легко исправляется, а время на перенос и развёртывание виртуальной машины в разы меньше чем настройка нового сервера.

Похожие записи:

5 комментариев для “Виртуальная машина, как сервер для web-разработки”

  1. myr4ik072 июня 2014 ~ 21:58

    Приветствую, да, виртуальная машина используется у меня ежедневно. Хочу попробовать некие утилиты — использую виртуальную систему, да бы не засорять хостовую, хочу протестировать что то, использую виртуальную машину + делаю снапшоты системы, что бы быстро восстановить до установки тестируемых программ. Хочу протестировать лайвсд или установить новую систему, ставлю в первую очередь на вирт. машину, сервер? естественно на вирт. машину или же хостовой ставиться серверная версия сисемы + в вирт. машине еще пару шт. вирт. серверных систем. Да, виртуализация это прогресс.

  2. Анатолий21 сентября 2014 ~ 18:12

    Привет!

    На какой именно машине изменен /etc/hosts?

  3. Zeboton22 сентября 2014 ~ 13:12

    Анатолий, /etc/hosts необходимо править на той машине, с которой вы будете обращаться к серверу, чтобы он знал с каким IP связан домен, то есть на хост машине.

  4. Сергей2 апреля 2015 ~ 12:47

    Попробуйте Vagrant, это невероятно удобная вещь для любых эскпериментов

  5. Zeboton4 апреля 2015 ~ 11:34

    Да, Vagrant и Ansible очень помогают при развёртывании новых виртуальных машин.

Ваш комментарий

*