Пользователь
12,8
рейтинг
11 января в 11:33

Администрирование → Виртуализация с использованием Ubuntu Server 16.04 и pHpVirtualBox 5.0.5 из песочницы

Недавно столкнулся с задачей быстрого и простого развертывания серверов на основе связки Ubuntu Server 16.04 и pHpVirtualBox 5.0.5 для дальнейшей виртуализации всяческих OS.
Задача тривиальная, но быстрого, простого и самое главное — пошагового рецепта не нашел, поэтому по итогам успешной инсталляции решил выложить примитивный FAQ для всех интересующихся.

И так, сперва устанавливаем систему — в моем случае это Ubuntu Server 16.04 LTS 64-bit. Процесс описывать не буду, здесь все стандартно.

Далее не забываем обновить нашу систему:

sudo apt update
sudo apt upgrade

Ждем завершения и перезагружаемся:

sudo shutdown -R now

Следующий шаг после перезагрузки — необходимо добавить репозитарий и ключ:

sudo echo 'deb http://download.virtualbox.org/virtualbox/debian precise contrib' >> /etc/apt/sources.list

wget -q http://download.virtualbox.org/virtualbox/debian/oracle_vbox.asc -O- | apt-key add -

После этого устанавливаем сам VirtualBox и дополнительные модули:

sudo apt-get install virtualbox
sudo apt-get install dkms
sudo apt-get install libcurl3

Дождавшись окончания инсталляции, проверяем версию установленного VirtualBox командой:

vboxwebsrv -V

На основании полученной информации о версии, идем по адресу http://download.virtualbox.org/virtualbox и качаем подходящую версию Extension Pack. В моей случае это версия 5.0.24-108355:

wget http://download.virtualbox.org/virtualbox/5.0.24/Oracle_VM_VirtualBox_Extension_Pack-5.0.24-108355a.vbox-extpack

Когда загрузка завершиться необходимо установить его:

sudo vboxmanage extpack install Oracle_VM_VirtualBox_Extension_Pack-5.0.24-108355a.vbox-extpack

Дожидаемся установки и перестартовываем сервис:

sudo /etc/init.d/virtualbox stop
sudo /etc/init.d/virtualbox start

После этого можно создать и занести в группу пользователя, из под которого будет стартовать наш VirtualBox:

sudo adduser vbox
sudo usermod -a -G vboxusers 'vbox'

Теперь установим Apache2 и PHP:

sudo apt-get install apache2
sudo apt-get install php
sudo apt-get install -y php7.0-mbstring php7.0-zip php7.0-xml

Не забудем разрешить права на папку:

sudo chown -R www-data:www-data /var/www

И еще немного шаманства:

sudo service apache2 restart
sudo a2enconf php7.0-fpm
sudo service apache2 reload
sudo apt-get install php-soap
sudo service apache2 reload

Если на машине нет архиватора, необходимо исправить это досадное обстоятельство:

sudo apt-get install unzip unrar

Дожидаемся окончания процесса, и приступаем к скачиванию phpVirtualBox:

wget http://sourceforge.net/projects/phpvirtualbox/files/phpvirtualbox-5.0-5.zip

Попутное замечание — если не установлен Midnight Commander рекомендую установить и запустить (адепты старой школы могут снисходительно усмехнуться, но мне так удобнее):

sudo apt-get install mc
sudo mc 

Теперь находясь в уютном и привычном интерфейсе mc разархивируем содержимое phpvirtualbox-5.0-5.zip в /var/www/html предварительно почистив папку /html.

Далее находим в папке /html файл сonfig.php-example и делаем из него config.php.
После редактируем в нем следующие параметры:

var $username = 'user';  имя пользователя, у меня vbox
var $password = 'password'; пароль пользователя
var $location = 'http://192.168.0.1:18083/'; адрес нашего будущего веб-сервера
var $vrdeports = '9000-9100'; порты
var $consoleHost = '192.168.0.1'; адрес сервера на котором будет крутиться VirtualBox

А строку var servers = array — закомментируем.

Сохраняем изменения, выходим из mc и еще немного магии для групп пользователя:

sudo chgrp vboxusers /etc/vbox
sudo chmod 1775 /etc/vbox

Почти готово, осталось научить VirtualBox самостоятельности, а конкретно — автоматически поднимать сервиса.

Для этого идем в папку /etc/vbox и создаем файл autostart.cfg внутри которого прописываем:

default_policy = deny

vbox = {
allow = true
startup_delay = 10
}

Сохраняем, далее создаем файлы vbox.start и vbox.stop.

Внутри каждого файла прописываем значение 1 и не забываем сохранить.

Следующий шаг — открываем файл редактором /etc/default/virtualbox прописываем:

VBOXWEB_USER=vbox
VBOXWEB_HOST=192.168.0.1
VBOXWEB_PORT=18083
VBOXAOTPSTART_DB=/etc/vbox
VBOXAOTPSTART_CONFIG=/etc/vbox/autostart.cfg

Сохраняемся, идем дальше в файл /etc/rc.local и дописываем строчку:

sudo -u vbox vboxwebsrv --host 192.168.0.1

Это придаст нашему сервису самостоятельности при дальнейших перезагрузках системы. Сохраняем и перезагружаемся командой:

sudo shutdown -R now

После перезагрузки системы отрываем браузер на удаленной машине и заходим по адресу 192.168.0.1, где нас встречает привлекательный графический интерфейс.

Доступ по умолчанию:

логин — admin
пароль — admin

Здесь могут быть проблемы с ограничением доступа из за JAVA. Что бы пустил, прописываем в JAVA policy исключения:

permission java.net.SocketPermission "192.168.0.1:1024-65535","connect,accept,resolve";	
permission java.net.SocketPermission "192.168.0.1:1-1023","connect,resolve";

После создания виртуальных машин, можно сделать их автостарт при незапланированной перезагрузке. Для этого я просто дописываю в файле /etc/rc.local:

sudo -H -u vbox vboxmanage startvm имя_вашей_машины --type headless

Всем удачи!
Kirill Zaycev @kirill_zaycev
карма
3,0
рейтинг 12,8
Пользователь

Самое читаемое Администрирование

Комментарии (27)

  • +4
    Если готовы выделить машину целиком под виртуалки, то стоит посмотреть тот же Proxmox
    А иначе проще apt install kvm libvirt-bin и добавить Kimchi или просто использовать удаленный virt-manager. Еще и несколько эффективнее обычно, если речь не идет о всякой 3d-графике в гостях.
    • 0
      Proxmox тоже можно поставить на существующую систему.
    • 0
      Proxmox тоже можно поставить на существующую систему.

      Только на debian.
      А иначе проще apt install kvm libvirt-bin и добавить Kimchi или просто использовать удаленный virt-manager.

      Вот за Kimchi спасибо, надо попробовать, давно искал альтернативу webvirtmgr.
      А так еще есть virtio, archipel, opennebula и тп — но все они имхо какие-то монструозные.

      А от Virtualbox на сервере отказался давно — при обновлении ядра, часто его нужно было заново переставлять.
  • +1
    а чем KVM не угодил? Virtualbox это все-таки больше workstation виртуализация, хотя при наличии таких вот костылей из нее можно сделать что-то вроде «серверной» с веб-интерфейсом.
    Или например почему бы не воспользоваться бесплатной лицензией для vmware vsphere? явно вам хватит ее бесплатного ограничения, если уж вы рассматриваете virtualbox как сервер виртуализации.
    Из бесплатного и похожего на VMware можно посмотреть на openVZ, он вообще позволяет строить кластера и работать с серверами как vcenter. и не надо никакого virtualbox
    • 0
      Лично мне подошёл только виртуалбокс, т.к. у остальных я не нашел нужный мне функционал.
      • 0
        какой например?
        • 0
          Мне нужно было устанавливать нестандартные разрешения экрана.
      • 0
        Да, какой ?)
        • 0
          Ответ выше.
    • 0

      Согласен, к чему такие сложности?
      apt install kvm libvirt qemu virtmanager (если надо gui)
      Потом коннектиться к серву обычными способами по ssh
      ssh user@server -X

      • 0
        Пожелание и привычка заказчика
  • +3
    Помню несколько лет назад тестил phpvbox, он глючил тогда, работать было тяжело. Надеюсь исправили. В любом случае, с тех пор предпочитаю Proxmox.
    • 0
      В данный момент серьезных ошибок нет, разве что иногда web-интерфейс с первого раза не дает список машин. Решается однократным F5 в браузере.
  • 0

    Поднимал phpVirtualBox на домашнем сервачке, только на основе nginx. Очень удобно!

  • 0
    А мне вполне достаточно ESXi.
    • –1
      Веб-клиент у него недурён, есть бесплатная лицензия, и система (при всей моей любви к Virtualbox и даже Proxmox) всё таки мощнее конкурентов.
  • 0
    Для авто автостарта машины достаточно разово вызчать sudo -u VBOXUSER -i bash -c 'VBoxManage modifyvm VM_NAME --autostart-enabled on'
    без автозапуска в системе
  • +1

    Про "распаковку с помощью mc" — попробуйте распаковать им тарболл приличного размера (например, что-нибудь от jetbrains), и сравните с "олдскулом". Лично у меня разница по времени вышла раз в десять.

  • 0
    Хорошо, если использовать ваш метод виртуализации, то не проще в конфигах указывать localhost вместо внешнего ip?
    • 0
      Hеудобно попадать на веб-моруду с удаленной машины
  • 0
    а зачем перезагружатся?
    • 0
      Это не обязательно, но для собственного успокоения проверки работоспособности после условно-вынужденного ребута, можно пожертвовать парой минут.
  • 0
    virtualbox, java, ubuntu 16.04
    а кто-то говорил что 640к хватит всем…

    виртуализация
    для linux — lxd
    для всего остального — kvm

    за это инвайт? хабр катится в блог пошаговых самоучителей
    • 0
      Этот пост не несет в себе задачу выбора идельного решения, а лишь кратко описывает один из вариантов.
      • 0
        «Недавно столкнулся с задачей быстрого и простого развертывания серверов на основе связки Ubuntu»

        Этот пост вообще ничего не несет. Даже смысловой нагрузки ноль
        Все это получается после установки proxmox (там кнопка есть next)

        А после комментария — «Пожелание и привычка заказчика»
        Даже уже спорить чтобы «родить истину» не стоит

        p.s. Не посмотрел что автор ответил

        Автор открой для себя proxmox и не мучай ни себя ни заказчика
  • +1
    Не надо забывать что Oracle VM VirtualBox Extension Pack не для коммерческого использования. Это чудо распространяется под VirtualBox Personal Use and Evaluation License (PUEL).
    Не дай бог заработаешь на этом решении пару евро — Oracle найдёт тебя :)

    Если серьезно, то KVM хороший серверный вариант. Я изпользую без GUI. Кода лень тогда запускаю virt-manager через «X11 forwarding» по ssh на лаптоп.
    Можно web прикрутить или поставить готовое решение — Proxmox.
    Самое главное — есть во всех дистрибутивах и ненадо переживать после обновления.

    Virtualbox хорошо ставить на рабочую станцию — Windows или MacOS.
  • 0
    Дополню статью скриншотами:
    Скриншоты




Только зарегистрированные пользователи могут оставлять комментарии. Войдите, пожалуйста.