Недавно столкнулся с задачей быстрого и простого развертывания серверов на основе связки 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

Всем удачи!
Поделиться с друзьями
-->

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


  1. MaxElc
    11.01.2017 12:30
    +4

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


    1. 4dmonster
      11.01.2017 13:35

      Proxmox тоже можно поставить на существующую систему.


    1. SchmeL
      11.01.2017 15:18

      Proxmox тоже можно поставить на существующую систему.

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

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

      А от Virtualbox на сервере отказался давно — при обновлении ядра, часто его нужно было заново переставлять.


  1. bykvaadm
    11.01.2017 17:06
    +1

    а чем KVM не угодил? Virtualbox это все-таки больше workstation виртуализация, хотя при наличии таких вот костылей из нее можно сделать что-то вроде «серверной» с веб-интерфейсом.
    Или например почему бы не воспользоваться бесплатной лицензией для vmware vsphere? явно вам хватит ее бесплатного ограничения, если уж вы рассматриваете virtualbox как сервер виртуализации.
    Из бесплатного и похожего на VMware можно посмотреть на openVZ, он вообще позволяет строить кластера и работать с серверами как vcenter. и не надо никакого virtualbox


    1. Rathil
      12.01.2017 00:06

      Лично мне подошёл только виртуалбокс, т.к. у остальных я не нашел нужный мне функционал.


      1. bykvaadm
        12.01.2017 11:46

        какой например?


        1. Rathil
          12.01.2017 14:02

          Мне нужно было устанавливать нестандартные разрешения экрана.


      1. jidckii
        12.01.2017 16:04

        Да, какой ?)


        1. Rathil
          12.01.2017 17:01

          Ответ выше.


    1. sazhyk
      12.01.2017 16:04

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


      1. kirill_zaycev
        12.01.2017 16:05

        Пожелание и привычка заказчика


  1. vitalegkhua
    11.01.2017 18:40
    +3

    Помню несколько лет назад тестил phpvbox, он глючил тогда, работать было тяжело. Надеюсь исправили. В любом случае, с тех пор предпочитаю Proxmox.


    1. kirill_zaycev
      12.01.2017 16:11

      В данный момент серьезных ошибок нет, разве что иногда web-интерфейс с первого раза не дает список машин. Решается однократным F5 в браузере.


  1. PaulZi
    11.01.2017 19:43

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


  1. AdmAlexus
    11.01.2017 20:59

    А мне вполне достаточно ESXi.


    1. varnav
      11.01.2017 22:08
      -1

      Веб-клиент у него недурён, есть бесплатная лицензия, и система (при всей моей любви к Virtualbox и даже Proxmox) всё таки мощнее конкурентов.


  1. Rathil
    12.01.2017 00:04

    Для авто автостарта машины достаточно разово вызчать sudo -u VBOXUSER -i bash -c 'VBoxManage modifyvm VM_NAME --autostart-enabled on'
    без автозапуска в системе


  1. klirichek
    12.01.2017 06:59
    +1

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


  1. Vevin
    12.01.2017 16:14

    Хорошо, если использовать ваш метод виртуализации, то не проще в конфигах указывать localhost вместо внешнего ip?


    1. kirill_zaycev
      12.01.2017 16:22

      Hеудобно попадать на веб-моруду с удаленной машины


  1. time2rfc
    12.01.2017 17:47

    а зачем перезагружатся?


    1. kirill_zaycev
      12.01.2017 17:51

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


  1. asolokha
    12.01.2017 17:52

    virtualbox, java, ubuntu 16.04
    а кто-то говорил что 640к хватит всем…

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

    за это инвайт? хабр катится в блог пошаговых самоучителей


    1. kirill_zaycev
      12.01.2017 17:56

      Этот пост не несет в себе задачу выбора идельного решения, а лишь кратко описывает один из вариантов.


      1. asolokha
        12.01.2017 23:57

        «Недавно столкнулся с задачей быстрого и простого развертывания серверов на основе связки Ubuntu»

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

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

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

        Автор открой для себя proxmox и не мучай ни себя ни заказчика


  1. UnderV
    12.01.2017 17:57
    +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.


  1. PaulZi
    12.01.2017 20:49

    Дополню статью скриншотами:

    Скриншоты