Virtualbox - система виртуализации, на данный момент одна из наилучших бесплатных программных продуктов виртуализации. Лично тестировал работу гостевых: XP, Windows 2003, 2008, Debian, Ubuntu работает стабильно.
phpVirtualBox - AJAX реализация пользовательского интерфейса VirtualBox, написанного на PHP. Это веб-интерфейс для получения удалённого доступа к виртуальным машинам.
Для установки Virtualbox мы будем используем операционную систему Linux Debian GNU/Linux с установленной панелью управления хостингом ISPConfig установленную по инструкции: Устанавливаем и настраиваем хостинг панель ISPConfig 3 в Debian
Обновленная версия инструкции по установке Virtualbox 5.1 в Debian 9 (Stretch) и Ubuntu 18.04 (Bionic) с управлением через PHPVirtualBOX, устаревшую можно почитать ниже
Имеем установленную версию операционной системы Debian 9 (Stretch) либо Ubuntu 18.04 (Bionic), проверяем, чтобы на сервере был прописан репозиторий Virtualbox в файл /etc/apt/sources.list:
Для Debian 9 (если необходимо установить другую версию Debian заменяем stretch на другое имя дистрибутива):
deb http://download.virtualbox.org/virtualbox/debian stretch contrib
можно репозиторий добавить командой:
echo 'deb http://download.virtualbox.org/virtualbox/debian stretch contrib' >> /etc/apt/sources.list
Также, чтобы был прописан в операционной системе репозиторий main contrib non-free, например такой:
deb http://ftp.debian.org/debian/ stretch main contrib non-free
Для Ubuntu 18.04 (если необходимо установить на другую версию Ubuntu заменяем bionic на другое имя дистрибутива):
deb https://download.virtualbox.org/virtualbox/debian bionic contrib
можно добавить командой:
echo 'deb https://download.virtualbox.org/virtualbox/debian bionic contrib' >> /etc/apt/sources.list
Добавляем публичный ключ репозитория virtualbox командой:
wget -q https://www.virtualbox.org/download/oracle_vbox_2016.asc -O- | apt-key add - wget -q https://www.virtualbox.org/download/oracle_vbox.asc -O- | apt-key add -
Обновляем репозиторий и запускаем установку virtualbox командами:
aptitude update
Для установки Virtualbox 5.1 выполняем команду:
aptitude install virtualbox-5.1
Проверяем версию установшегося virtualbox выполнив команду:
vboxwebsrv -V
Ответ:
Oracle VM VirtualBox web service Version 5.1.38 (C) 2007-2018 Oracle Corporation All rights reserved. 5.1.38r122592
Версия 5.1.38r122592, потому качаем VirtualBox Extension Pack нужной версии и устанавливаем выполнив команды:
wget http://download.virtualbox.org/virtualbox/5.1.38/Oracle_VM_VirtualBox_Extension_Pack-5.1.38-122592.vbox-extpack vboxmanage extpack install Oracle_VM_VirtualBox_Extension_Pack-5.1.38-122592.vbox-extpack
Настраиваем автозапуск виртуалок, создаем файлы с содержимым:
vi /etc/vbox/autostart.cfg
default_policy = deny
vbox = {
allow = true
startup_delay = 10
}
vi /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
где 192.168.0.1 - внутренний айпи сервера в локальной сети:
Для работы Virtualbox необходимо создать пользователя под которым будут работать виртуальные машины. Добавляем пользователя vbox в систему командой:
useradd -d /home/vbox -m -g vboxusers -s /bin/bash vbox chgrp vboxusers /etc/vbox usermod -aG vboxusers vbox usermod -G cdrom -a vbox
Устанавливаем php и веб сервер выполнив команду:
aptitude install -y apache2 libapache2-mod-php php php-soap php-xml
Скачиваем phpvirtualbox выполнив команду:
wget http://sourceforge.net/projects/phpvirtualbox/files/latest/download -O phpvirtualbox.zip
Разархивируем скачанный дистрибутив phpvirtualbox:
unzip phpvirtualbox.zip
Копируем содержимое архива в папку /var/www веб сервера:
cp -Rp phpvirtualbox-5.0-5/* /var/www/html/
Создаем конфигурационный файл из дефолтного командой в консоли:
mv /var/www/html/config.php-example /var/www/html/config.php
Если закачиваете файлы phpvirtualbox через фтп, просто переименовываем и редактируем настройки как ниже в инструкции:
изменяем config.php:
vi /var/www/html/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 = 'http://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 = 'http://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';
   Так как разработчик Phpvirtualbox не сделал еще версию веб интерфейса для 5.1 и выше, то необходимо внести изменения в конфигурационный файл phpvirtualbox и создать ссылки на файлы выполнив команды: 
cd /var/www/html/endpoints/lib vi config.php
было:
define('PHPVBOX_VER', '5.0-5');стало:
define('PHPVBOX_VER', '5.1-38');
ln -s vboxweb-5.0.wsdl vboxweb-5.1.wsdl
ln -s vboxwebService-5.0.wsdl vboxwebService-5.1.wsdlСоздаем файл лога и даем на него права:
touch /var/log/vboxweb chown -R vbox:vboxusers /var/log/vboxweb
Перезагружаем virtualbox сервис:
service vboxweb-service restart service vboxweb-service status
Авторизируемся под пользователем vbox и выполняем команды:
su vbox VBoxManage setproperty websrvauthlibrary null VBoxManage setproperty autostartdbpath /etc/vbox
Когда Вы создадите виртуальную машину и захотите настроить её автозагрузку после включения сервера, и сохранения состояния машины при выключении сервера, выключите виртуальную машину, и авторизовавшись под пользователем vbox выполните команду, заменив имя сервера Server на имя вашей виртуальной машины:
su vbox VBoxManage modifyvm Server --autostart-enabled on --autostop-type savestate
   Внимание!!! можно указать IP 127.0.0.1, но для того, чтобы работал rdp через веб интерфейс, необходимо указать не 127.0.0.1 а внутренний либо внешний IP , например 192.168.1.1(внутренний адрес сервера)
Перезагружаем virtualbox командой:
Старая версия инструкции для устаревших дистрибутивов
Добавляем репозиторий с оффициального сайта Virtualbox.
Добавляем в source.list репозиторий командой:
Для Debian Wheezy:
echo 'deb http://download.virtualbox.org/virtualbox/debian wheezy contrib' >> /etc/apt/sources.list
Для Debian Jessie:
echo 'deb http://download.virtualbox.org/virtualbox/debian jessie contrib' >> /etc/apt/sources.list
Добавляем публичный ключ репозитория virtualbox командой:
wget -q https://www.virtualbox.org/download/oracle_vbox_2016.asc -O- | apt-key add - wget -q https://www.virtualbox.org/download/oracle_vbox.asc -O- | apt-key add -
Обновляем репозиторий и запускаем установку virtualbox командами:
aptitude update
Для установки Virtualbox 4.3 выполняем команду:
aptitude install virtualbox-4.3
Для установки Virtualbox 5 выполняем команды:
aptitude install virtualbox-5.0
или:
aptitude install virtualbox-5.1
Для того, чтобы у нас работал доступ к RDP через web интерфейс и USB2 для виртуальной машины, необходимо скачать и установить дополнительный пакет virtualbox
Но перед тем как установить пакет дополнений, необходимо узнать версию установленного virtualbox командой:
vboxwebsrv -V Oracle VM VirtualBox web service Version 4.3.40 (C) 2007-2016 Oracle Corporation All rights reserved. 4.3.40r110317
либо:
vboxwebsrv -V Oracle VM VirtualBox web service Version 5.0.10 (C) 2007-2015 Oracle Corporation All rights reserved. 5.0.14r105127
или:
vboxwebsrv -V Oracle VM VirtualBox web service Version 5.1.24 (C) 2007-2017 Oracle Corporation All rights reserved. 5.1.24r117012
Получается, что у нас стоит версия 4.3.34 либо 5.0.14, потому заходим на страницу http://download.virtualbox.org/virtualbox/ и открываем директорию 4.3.34либо 5.0.14 и в самом верху видим файл Oracle_VM_VirtualBox_Extension_Pack-4.3.34.vbox-extpack, его то нам нужно скачать и установить.
Для этого скачиваем дополнительный пакет командой:
wget http://download.virtualbox.org/virtualbox/4.3.40/Oracle_VM_VirtualBox_Extension_Pack-4.3.40-110317a.vbox-extpack
Для версии 5.0:
wget http://download.virtualbox.org/virtualbox/5.0.14/Oracle_VM_VirtualBox_Extension_Pack-5.0.14.vbox-extpack
Для версии 5.1:
wget http://download.virtualbox.org/virtualbox/5.1.24/Oracle_VM_VirtualBox_Extension_Pack-5.1.24-117012.vbox-extpack
И устанавливаем скачанный пакет для работы rdp и usb2 командой:
VBoxManage extpack install Oracle_VM_VirtualBox_Extension_Pack-*.vbox-extpack
Ответ системы на выполнение установки пакета:
0%...10%...20%...30%...40%...50%...60%...70%...80%...90%...100% Successfully installed "Oracle VM VirtualBox Extension Pack".
После установки необходимо перезагрузить сервис vboxweb-service командами:
/etc/init.d/vboxweb-service stop sleep 7 /etc/init.d/vboxweb-service start
   Для работы Virtualbox необходимо создать пользователя под которым будут работать виртуальные машины.
   Добавляем пользователя vbox в систему командой:
adduser vbox
Указываем пароль пользователя vbox, предварительно записав его в свой блокнот для паролей.
Установка phpvirtualbox
   Для того, чтобы работал phpvirtualbox через веб интерфейс, необходимо добавить домен vm.server.loc по примеру как в инструкции Установка почтового веб клиента Roundcube в Debian - ч.5 без базы данных, создаем FTP аккаунт, через который дальше мы закачаем файлы phpvirtualbox.
Далее качаем через браузер phpvirtualbox (предварительно удостоверившись на странице, что это на данный момент самая последняя версия), либо командой в консоли на самом сервере:
Phpvirtualbox для Virtualbox 4.3
wget -c -t0 http://kent.dl.sourceforge.net/project/phpvirtualbox/phpvirtualbox-4.3-3.zip
Phpvirtualbox для Virtualbox 5.0
wget -c -t0 http://netcologne.dl.sourceforge.net/project/phpvirtualbox/phpvirtualbox-5.0-5.zip
Распаковываем содержимое скачанного архива phpvirtualbox нужной Вам версии в папку домена по фтп как в инструкции указанной выше Установка почтового веб клиента Roundcube, либо через консоль сервера, не забыв изменить права веб сервера:
Меняем права на файлы phpvirtualbox для веб сервера по примеру как в инструкции указанной выше.
Перегружаем веб сервер командой:
/etc/init.d/apache2 restart
Далее через консоль переходим в папку домена /var/www/vm.server.loc командой:
cd /var/www/vm.server.loc
Создаем конфигурационный файл из дефолтного командой в консоли:
mv config.php-example config.php
Если закачиваете файлы phpvirtualbox через фтп, просто переименовываем и редактируем настройки как ниже в инструкции:
изменяем 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 = 'http://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 = 'http://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';
Создаем файл отвечающий на каком айпи и порту будет работать virtualbox
echo ' VBOXWEB_USER=vbox VBOXWEB_HOST=192.168.0.1 VBOXWEB_PORT=18083 ' > /etc/default/virtualbox
Внимание!!! можно указать IP 127.0.0.1, но для того, чтобы работал rdp через веб интерфейс, необходимо указать не 127.0.0.1 а внутренний либо внешний IP , например 192.168.0.1(внутренний адрес сервера)
Перезагружаем virtualbox командой:
/etc/init.d/vboxweb-service restart
Открываем в браузере адрес нашего сервера:
http://192.168.0.1/
и вводим
логин:   admin
пароль: admin
Откроется веб интерфейс на английском языке, который можно изменить в настройках на русский, кстати настоятельно рекомендую изменить у пользователя пароль, а лучше создать администратора с не типичным именем и сложным паролем, а текущий удалить, тогда если у Вас интерфейс глядит в инет (что не рекомендуется для безопасности) пароль и логин будет гораздо сложнее (практически не возможно) подобрать.
Интерфейс веб интерфейса практически ничем не отличается от десктопной версии Virtualbox.
Создаем виртульную машину с помощью мастера нажав на кнопку создать, и подключив образ нужного диска и выбрав в сдроме образ выполняем установку операционной системы.
Делаем автозапуск виртуальных машин при включении сервера, сохранение текущего состояния гостевой машины (не выключение) при выключении физическогосервера с восстановлением текущего состояния при включении сервера.
Автозапуск гостевой машины Virtualbox:
Создаем скрипт, который будет запускать и сохранять гостевые машины при включении, выключении сервера:
vi /etc/init.d/virtualbox
#!/bin/bash
### BEGIN INIT INFO 
# Provides: myscript 
# Required-Start: 
# Required-Stop: 
# Default-Start: 2 3 4 5 
# Default-Stop: 1 0 6 
# Short-Description: simple description. 
### END INIT INFO
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"
       sleep 15 && $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 установлен на сервер с Debian GNU/Linux, установлен и настроен веб интерфейс PHPVirtualbox, настроен автозапуск виртуальных машин.
С Вами был Сергей Лазаренко.
После продуктивной работы, можно отвлечься и посмотреть видео о работе с VMware vSphere:
Recoverable fatal error: Argument 1 passed to xmlsitemap_node_create_link() must be an instance of stdClass, boolean given, called in /var/www/clients/client1/web1/web/sites/all/modules/xmlsitemap/xmlsitemap_node/xmlsitemap_node.module on line 28 and defined в функции xmlsitemap_node_create_link() (строка 194 в файле /var/www/clients/client1/web1/web/sites/all/modules/xmlsitemap/xmlsitemap_node/xmlsitemap_node.module).
Recoverable fatal error: Argument 1 passed to xmlsitemap_node_create_link() must be an instance of stdClass, boolean given, called in /var/www/clients/client1/web1/web/sites/all/modules/xmlsitemap/xmlsitemap_node/xmlsitemap_node.module on line 28 and defined в функции xmlsitemap_node_create_link() (строка 194 в файле /var/www/clients/client1/web1/web/sites/all/modules/xmlsitemap/xmlsitemap_node/xmlsitemap_node.module).
Recoverable fatal error: Argument 1 passed to xmlsitemap_node_create_link() must be an instance of stdClass, boolean given, called in /var/www/clients/client1/web1/web/sites/all/modules/xmlsitemap/xmlsitemap_node/xmlsitemap_node.module on line 28 and defined в функции xmlsitemap_node_create_link() (строка 194 в файле /var/www/clients/client1/web1/web/sites/all/modules/xmlsitemap/xmlsitemap_node/xmlsitemap_node.module).



 
Add new comment