Установка Virtualbox на сервер Ubuntu 12.04 с управлением через веб интерфейс phpvirtualbox и автозапуском виртуальных машин | |||||
|
Необходимо настроить репозиторий с оффициального сайта 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. Создаем виртульную машину с помощью мастера нажав на кнопку создать, и подключив образ нужного диска и выбрав в сдроме образ выполняем установку операционной системы. Делаем автозапуск виртуальных машин при включении сервера, сохранение текущего состояния гостевой машины (не выключение) при выключении физическогосервера с восстановлением текущего состояния при включении сервера. Автозапуск гостевой машины 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) Это значит, что пользователю под которым мы запускаем виртуальную машину, в нашем случае это vbox нет прав на пользование физическим приводом CD/DVD. Для лечения этой ошибки достаточно добавить пользователя vbox в группу cdrom командой: usermod -G cdrom -a vbox Задача выполнена, Virtualbox установлен на сервер с Ubuntu 12.04 Precise, установлен и настроен веб интерфейс PHPVirtualbox, настроен автозапуск виртуальных машин. Часть 1: Часть 2:
|