Задача тривиальная, но быстрого, простого и самое главное — пошагового рецепта не нашел, поэтому по итогам успешной инсталляции решил выложить примитивный 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)
bykvaadm
11.01.2017 17:06+1а чем KVM не угодил? Virtualbox это все-таки больше workstation виртуализация, хотя при наличии таких вот костылей из нее можно сделать что-то вроде «серверной» с веб-интерфейсом.
Или например почему бы не воспользоваться бесплатной лицензией для vmware vsphere? явно вам хватит ее бесплатного ограничения, если уж вы рассматриваете virtualbox как сервер виртуализации.
Из бесплатного и похожего на VMware можно посмотреть на openVZ, он вообще позволяет строить кластера и работать с серверами как vcenter. и не надо никакого virtualboxRathil
12.01.2017 00:06Лично мне подошёл только виртуалбокс, т.к. у остальных я не нашел нужный мне функционал.
sazhyk
12.01.2017 16:04Согласен, к чему такие сложности?
apt install kvm libvirt qemu virtmanager (если надо gui)
Потом коннектиться к серву обычными способами по ssh
ssh user@server -X
vitalegkhua
11.01.2017 18:40+3Помню несколько лет назад тестил phpvbox, он глючил тогда, работать было тяжело. Надеюсь исправили. В любом случае, с тех пор предпочитаю Proxmox.
kirill_zaycev
12.01.2017 16:11В данный момент серьезных ошибок нет, разве что иногда web-интерфейс с первого раза не дает список машин. Решается однократным F5 в браузере.
PaulZi
11.01.2017 19:43Поднимал phpVirtualBox на домашнем сервачке, только на основе nginx. Очень удобно!
Rathil
12.01.2017 00:04Для авто автостарта машины достаточно разово вызчать sudo -u VBOXUSER -i bash -c 'VBoxManage modifyvm VM_NAME --autostart-enabled on'
без автозапуска в системе
klirichek
12.01.2017 06:59+1Про "распаковку с помощью mc" — попробуйте распаковать им тарболл приличного размера (например, что-нибудь от jetbrains), и сравните с "олдскулом". Лично у меня разница по времени вышла раз в десять.
Vevin
12.01.2017 16:14Хорошо, если использовать ваш метод виртуализации, то не проще в конфигах указывать localhost вместо внешнего ip?
time2rfc
12.01.2017 17:47а зачем перезагружатся?
kirill_zaycev
12.01.2017 17:51Это не обязательно, но для собственного успокоения проверки работоспособности после условно-вынужденного ребута, можно пожертвовать парой минут.
asolokha
12.01.2017 17:52virtualbox, java, ubuntu 16.04
а кто-то говорил что 640к хватит всем…
виртуализация
для linux — lxd
для всего остального — kvm
за это инвайт? хабр катится в блог пошаговых самоучителейkirill_zaycev
12.01.2017 17:56Этот пост не несет в себе задачу выбора идельного решения, а лишь кратко описывает один из вариантов.
asolokha
12.01.2017 23:57«Недавно столкнулся с задачей быстрого и простого развертывания серверов на основе связки Ubuntu»
Этот пост вообще ничего не несет. Даже смысловой нагрузки ноль
Все это получается после установки proxmox (там кнопка есть next)
А после комментария — «Пожелание и привычка заказчика»
Даже уже спорить чтобы «родить истину» не стоит
p.s. Не посмотрел что автор ответил
Автор открой для себя proxmox и не мучай ни себя ни заказчика
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.
MaxElc
Если готовы выделить машину целиком под виртуалки, то стоит посмотреть тот же Proxmox
А иначе проще apt install kvm libvirt-bin и добавить Kimchi или просто использовать удаленный virt-manager. Еще и несколько эффективнее обычно, если речь не идет о всякой 3d-графике в гостях.
4dmonster
Proxmox тоже можно поставить на существующую систему.
SchmeL
Только на debian.
Вот за Kimchi спасибо, надо попробовать, давно искал альтернативу webvirtmgr.
А так еще есть virtio, archipel, opennebula и тп — но все они имхо какие-то монструозные.
А от Virtualbox на сервере отказался давно — при обновлении ядра, часто его нужно было заново переставлять.