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

Автор: vik_kr Дата: . Категория: Статьи

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


Всем удачи!