[Из песочницы] Виртуализация с использованием 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

Всем удачи!

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

© Habrahabr.ru