Установка Virtualbox на сервер Ubuntu 12.04 с управлением через веб интерфейс phpvirtualbox и автозапуском виртуальных машин
Размещено: 31-05-2014, 15:19 | Просмотров: 13507 | Комментариев: 0
Необходимо настроить репозиторий с оффициального сайта Virtualbox.
Добавляем в source.list репозиторий для Ubuntu 12.04
nano /etc/apt/sources.list
deb https://download.virtualbox.org/virtualbox/debian precise contrib

Либо же добавить репозиторий командой:
echo 'deb https://download.virtualbox.org/virtualbox/debian precise contrib' >> /etc/apt/sources.list

Добавляем публичный ключ репозитория virtualbox командой:
wget -q https://download.virtualbox.org/virtualbox/debian/oracle_vbox.asc -O- | apt-key add -

wget -q https://download.virtualbox.org/virtualbox/debian/oracle_vbox.asc
sudo apt-key add oracle_vbox.asc

Обновляем репозиторий и запускаем установку virtualbox командами:
apt-get update

Обновляем систему до самых свежих версий командой:
apt-get dist-upgrade

После обновления перезагружаемся, чтобы загрузиться в обновленное ядро командой:
reboot

Запускаем установку Virtualbox 4.2 командой соглашаясь на требования установщика:
apt-get install virtualbox-4.2

Для того, чтобы у нас работал доступ к RDP через web интерфейс и USB2 для виртуальной машины, необходимо скачать и установить дополнительный пакет virtualbox
Но перед тем как установить пакет дополнений, необходимо узнать версию установленного virtualbox командой:
vboxwebsrv -V

Ответ системы:
Oracle VM VirtualBox web service Version 4.2.4
(C) 2007-2012 Oracle Corporation
All rights reserved.
4.2.4r81684

Получается, что у нас стоит версия 4.2.4r81684, потому заходим на страницу и открываем директорию 4.2.4 и в самом верху видим файлы
Oracle_VM_VirtualBox_Extension_Pack-4.2.4-81684.vbox-extpack и Oracle_VM_VirtualBox_Extension_Pack-4.2.4.vbox-extpack, они идентичные, но просто имеют разное имя, потому качать можно любой, я для удобства ниже прописываю файл без привязки к имени.
Для этого скачиваем дополнительный пакет командой:
wget https://download.virtualbox.org/virtualbox/4.2.4/Oracle_VM_VirtualBox_Extension_Pack-4.2.4.vbox-extpack

Устанавливаем скачанный пакет для работы rdp и usb2 командой:
VBoxManage extpack install Oracle_VM_VirtualBox_Extension_Pack-4.2*.vbox-extpack

После установки необходимо перезагрузить сервис vboxweb-service командами:
/etc/init.d/vboxweb-service stop
/etc/init.d/vboxweb-service start

Для работы Virtualbox необходимо создать пользователя под которым будут работать виртуальные машины.
Добавляем пользователя vbox в систему командой:
adduser vbox

Указываем пароль пользователя vbox, предварительно записав его в свой блокнот для паролей.
Создаем файл отвечающий на каком айпи и порту будет работать virtualbox
nano /etc/default/virtualbox
VBOXWEB_USER=vbox
VBOXWEB_HOST=192.168.0.1
VBOXWEB_PORT=18083

Внимание!!! можно указать IP 127.0.0.1, но для того, чтобы работал rdp через веб интерфейс, необходимо указать не 127.0.0.1 а внутренний либо внешний IP , например 192.168.0.1(внутренний адрес сервера)
Перезагружаем virtualbox командой:
/etc/init.d/vboxweb-service restart

Установка phpvirtualbox
Для того, чтобы работал phpvirtualbox через веб интерфейс, необходимо установить веб сервер с поддержкой PHP.
Устанавливаем програмное обеспечение командой:
apt-get install apache2 php5 mc unzip unrar

Далее качаем сам phpvirtualbox (предварительно удостоверившись на странице, что это на данный момент самая последняя версия) командой:
wget https://phpvirtualbox.googlecode.com/files/phpvirtualbox-4.2-4.zip

распаковываем содержимое архива phpvirtualbox-4.2-4.zip в папку /var/www/ предварительно удалив в ней все с помощью программы mc.
Меняем права на файлы phpvirtualbox для веб сервера командой:
chown -R www-data:www-data /var/www/*

Перегружаем веб сервер командой:
/etc/init.d/apache2 restart

Далее переходим в папку /var/www/ командой:
cd /var/www/

Создаем конфигурационный файл из дефолтного командой:
mv config.php-example config.php

изменяем config.php:
nano config.php
/* Username / Password for system user that runs VirtualBox */
var $username = 'vbox';
var $password = 'pass';

где pass - ваш пароль введенный при создании пользователя vbox
Изменяем далее:
было:
/* SOAP URL of vboxwebsrv (not phpVirtualBox's URL) */
var $location = 'https://127.0.0.1:18083/';

Внимание!!! Для того, чтобы работал rdp через веб интерфейс, необходимо указать не 127.0.0.1 а внутренний либо внешний IP , например 192.168.0.1(внутренний адрес сервера)
стало:
/* SOAP URL of vboxwebsrv (not phpVirtualBox's URL) */
var $location = 'https://192.168.0.1:18083/';

было:
// Host / ip to use for console connections
#var $consoleHost = '192.168.1.40';

стало:
// Host / ip to use for console connections
var $consoleHost = '192.168.0.1';

Открываем в браузере адрес нашего сервера:
https://192.168.0.1/

и вводим
логин: admin
пароль: admin

Откроется веб интерфейс на английском языке, который можно изменить в настройках на русский, кстати настоятельно рекомендую изменить у пользователя пароль, а лучше создать администратора с не типичным именем и сложным паролем, а текущий удалить, тогда если у Вас интерфейс глядит в инет (что не рекомендуется для безопасности) пароль и логин будет гораздо сложнее (практически не возможно) подобрать.
Установка Virtualbox на сервер Ubuntu 12.04 с управлением через веб интерфейс phpvirtualbox и автозапуском виртуальных машин

Интерфейс веб интерфейса практически ничем не отличается от десктопной версии Virtualbox.
Создаем виртульную машину с помощью мастера нажав на кнопку создать, и подключив образ нужного диска и выбрав в сдроме образ выполняем установку операционной системы.
Установка Virtualbox на сервер Ubuntu 12.04 с управлением через веб интерфейс phpvirtualbox и автозапуском виртуальных машин

Делаем автозапуск виртуальных машин при включении сервера, сохранение текущего состояния гостевой машины (не выключение) при выключении физическогосервера с восстановлением текущего состояния при включении сервера.
Автозапуск гостевой машины Virtualbox
Создаем скрипт, который будет запускать и сохранять гостевые машины при включении, выключении сервера:
nano /etc/init.d/virtualbox

#!/bin/bash
START="/bin/bash"

#if [ ! -f /etc/rc.vm ]; then
# echo "/etc/rc.vm does not exist"
# exit 0
#fi

VBOXDIR="/etc/vbox"
VM_USER="vbox"
SU="su - $VM_USER -c"
VBOXMANAGE="VBoxManage -nologo"
VM="Gateway"

case "$1" in
start)
echo -n "Starting up virtual maschine $VM"
$SU "VBoxHeadless --startvm $VM > /dev/null 2>&1 &"
echo "done."
;;
restart)
$SU "VBoxManage controlvm $VM reset"
;;
stop)
$SU "VBoxManage controlvm $VM savestate"
;;
stopacpi)
$SU "VBoxManage controlvm $VM acpipowerbutton"
exit 0
;;
*)
echo "Usage: $N {start|restart|stop}" >&2
exit 1
;;
esac

exit 0

В этом файле необходимо изменить только переменную VM, в ней нужно указать название вашей виртуальной машины, которая отображается в веб интерфейсе phpvirtualbox.
Делаем файл исполняемым и добавляем его в автозагрузку командами:
chmod +x /etc/init.d/virtualbox
update-rc.d virtualbox defaults

Для каждой гостевой машины необходимо сделать свой файл запускающий и сохраняющий виртуальную машину при включении-выключении сервера.

Ошибки!!!
!!! Если при открытии веб интерфейса выдает ошибку:
Error logging in to vboxwebsrv

необходимо запустить команду под пользователем vbox:
su vbox
VBoxManage setproperty websrvauthlibrary null
Ctrl+d

Затем перезагрузить virtualbox командой:
/etc/init.d/vboxweb-service restart

!!! Если выдает такую ошибку при подключении к RDP:
Disconnect reason: I: MCS: Disconnect Request I: RDPCLIENT: The server has dropped connection.

Необходимо: Свойства виртуальной машины - Дисплей - Удаленный дисплей - Дополнительные возможности - поставить галочку на Разрешить несколько подключений
!!! Если Вы в виртуальной машине вместо образа установочного диска выбрали использовать физический привод CD/DVD и Вам веб интерфейс PHPVirtualbox выдал ошибку:
Cannot open host device '/dev/sr0' for readonly access. Check the permissions of that device ('/bin/ls -l /dev/sr0'): Most probably you need to be member of the device group. Make sure that you logout/login after changing the group settings of the current user (VERR_ACCESS_DENIED)

Установка Virtualbox на сервер Ubuntu 12.04 с управлением через веб интерфейс phpvirtualbox и автозапуском виртуальных машин

Это значит, что пользователю под которым мы запускаем виртуальную машину, в нашем случае это vbox нет прав на пользование физическим приводом CD/DVD.
Для лечения этой ошибки достаточно добавить пользователя vbox в группу cdrom командой:
usermod -G cdrom -a vbox

Задача выполнена, Virtualbox установлен на сервер с Ubuntu 12.04 Precise, установлен и настроен веб интерфейс PHPVirtualbox, настроен автозапуск виртуальных машин.

Часть 1:


Часть 2: