Web интерфейс для управления VirtualBox
В данной заметке я покажу, как настроить Web интерфейс для управления виртуальными машинами подготовленными чере з VirtualBox на системе Ubuntu Server 12.04. (если ставите на Desktop‘ую систему, но присутствуют затраты на RAM (оперативная память), а она Вам очень пригодиться при развертывании виртуальных машин, в моем случае так оно и было (её не хватало), но в целом Вам решать.) В управление входят все такие же действия, как и при запуске самой программы локально:
- выключение
- перезагрузка
- создание снимков системы для последующего отката и многое другое.
ekzorchik@polygon:~$ uname -a && lsb_release -a
Linux polygon 3.2.0-23-generic-pae #36-Ubuntu SMP Tue Apr 10 22:19:09 UTC 2012 i686 i686 i386 GNU/Linux
No LSB modules are available.
Description: Ubuntu 12.04 LTS
Подключим репозитарии virtualbox:
ekzorchik@polygon:~$ sudo nano /etc/apt/sources.list
deb http://download.virtualbox.org/virtualbox/debian precise contrib
ekzorchik@polygon:~$ sudo wget -q http://download.virtualbox.org/virtualbox/debian/oracle_vbox.asc -O- | sudo apt-key add —
ekzorchik@polygon:~$ sudo apt-get update
Устанавливаем Virtualbox 4.2 в систему :
ekzorchik@polygon:~$ sudo apt-cache search virtualbox-4.2
virtualbox-4.2 — Oracle VM VirtualBox
ekzorchik@polygon:~$ sudo apt-get install virtualbox-4.2
Устанавливаем Apache, формируем виртуальный сайт phpvirtualbox:
- apache2-utils — utility programs for webservers
- apache2.2-bin — Apache HTTP Server common binary files
- apache2.2-common — Apache HTTP Server common files
ekzorchik@polygon:~$ sudo apt-get install apache2 apache2.2-bin apache2.2-common
ekzorchik@polygon:~$ sudo nano /etc/apache2/sites-available/default
ekzorchik@polygon:~$ sudo nano /etc/apache2/apache2.conf
# Include the virtual host configurations:
ekzorchik@polygon:~$ sudo /etc/init.d/apache2 reload
* Reloading web server config apache2 [ OK ]
ekzorchik@polygon:~$ sudo mkdir -p /var/www/phpvirtualbox
ekzorchik@polygon:~$ sudo mkdir -p /var/www/phpvirtualbox/log
ekzorchik@polygon:~$ sudo nano /etc/apache2/sites-available/phpvirtualbox.conf
CustomLog /var/www/phpvirtualbox/log/access.log combined
ekzorchik@polygon:~$ sudo service apache2 reload
* Reloading web server config apache2 [ OK ]
ekzorchik@polygon:~$ sudo a2ensite phpvirtualbox.conf
Site phpvirtualbox.conf already enabled
ekzorchik@polygon:~$ sudo apachectl restart
phpVirtualBox — это такая панель управления VirtualBox, доступная по определённому адресу и открываемая в браузере.
ekzorchik@polygon:~$ cd /var/www/phpvirtualbox/
ekzorchik@polygon:/var/www/phpvirtualbox$ sudo wget wget -q -O — http://phpvirtualbox.googlecode.com/files/LATEST.txt -O phpvirtualbox-latest.zip
— -2013-01-17 16:24:24— http://phpvirtualbox.googlecode.com/files/phpvirtualbox-4.2-4.zip
Resolving phpvirtualbox.googlecode.com (phpvirtualbox.googlecode.com)… 173.194.71.82, 2a00:1450:4010:c04::52
Connecting to phpvirtualbox.googlecode.com (phpvirtualbox.googlecode.com)|173.194.71.82|:80… connected.
HTTP request sent, awaiting response… 200 OK
Length: 3663173 (3,5M) [application/zip]
Saving to: phpvirtualbox-latest.zip’
2013-01-17 16:24:27 (1,04 MB/s) — phpvirtualbox-latest.zip’ saved [3663173/3663173]
ekzorchik@polygon:/var/www/phpvirtualbox$ sudo unzip phpvirtualbox-latest.zip
ekzorchik@polygon:/var/www/phpvirtualbox$ sudo mv phpvirtualbox-4.2-4/ php
ekzorchik@polygon:/var/www/phpvirtualbox$ cd php
ekzorchik@polygon:/var/www/phpvirtualbox/php$ sudo cp config.php-example config.php-example.backup
ekzorchik@polygon:/var/www/phpvirtualbox/php$ sudo mv config.php-example config.php
ekzorchik@polygon:/var/www/phpvirtualbox/php$ sudo nano config.php
/* Username / Password for system user that runs VirtualBox */
/* Указываем логи и пароль для системного пользователя из под которого будет запускаться приложение Virtualbox, я использовал запуск под своей учетной записью – ekzorchik */
ekzorchik@polygon:/var/www/phpvirtualbox/php$ sudo wget -c http://phpvirtualbox.googlecode.com/files/vboxwebsrv
—2013-01-17 16:27:59— http://phpvirtualbox.googlecode.com/files/vboxwebsrv
Resolving phpvirtualbox.googlecode.com (phpvirtualbox.googlecode.com)… 173.194.71.82, 2a00:1450:4010:c04::52
Connecting to phpvirtualbox.googlecode.com (phpvirtualbox.googlecode.com)|173.194.71.82|:80… connected.
HTTP request sent, awaiting response… 200 OK
Length: 2446 (2,4K) [application/x-shellscript]
2013-01-17 16:27:59 (41,1 KB/s) — vboxwebsrv’ saved [2446/2446]
ekzorchik@polygon:/var/www/phpvirtualbox/php$ sudo chmod +x vboxwebsrv
ekzorchik@polygon:/var/www/phpvirtualbox/php$ sudo cp vboxwebsrv /etc/init.d/
ekzorchik@polygon:/var/www/phpvirtualbox/php$ sudo vboxwebsrv -b
Oracle VM VirtualBox web service Version 4.2.6
(C) 2007-2012 Oracle Corporation
VirtualBox web service 4.2.6 r82870 linux.x86 (Dec 19 2012 14:55:50) release log
00:00:00.013385 main Log opened 2013-01-17T12:28:57.566185000Z
00:00:00.013390 main OS Product: Linux
00:00:00.013391 main OS Release: 3.2.0-23-generic-pae
00:00:00.013393 main OS Version: #36-Ubuntu SMP Tue Apr 10 22:19:09 UTC 2012
00:00:00.013427 main DMI Product Name: VirtualBox
00:00:00.013434 main DMI Product Version: 1.2
00:00:00.013442 main Host RAM: 692MB total, 89MB available
00:00:00.013445 main Executable: /usr/lib/virtualbox/vboxwebsrv
00:00:00.013446 main Process ID: 9276
00:00:00.013448 main Package type: LINUX_32BITS_UBUNTU_12_04
К примеру, на этой станции, у меня установлено графическое окружение: Applications – Internet – FirefoxWebBrowser
http://localhost/phpvirtualbox/php
Смотрим какие версии пакетов virtualbox, apache и php установлены в системе :
ekzorchik@polygon:~$ sudo dpkg -l | grep -iE ‘(virtualbox|apache|php)’
Устанавливаем php5 в систему:
ekzorchik@polygon:~$ sudo apt-get install php5
ekzorchik@polygon:~$ sudo /etc/init.d/apache2 restart
* Restarting web server apache2 … waiting [ OK ]
Запускаем снова и открываем браузер:
ekzorchik@polygon:~$ cd /var/www/phpvirtualbox/php/ && vboxwebsrv &
ekzorchik@polygon:~$ Oracle VM VirtualBox web service Version 4.2.6
(C) 2007-2012 Oracle Corporation
VirtualBox web service 4.2.6 r82870 linux.x86 (Dec 19 2012 14:55:50) release log
00:00:00.001171 main Log opened 2013-01-18T04:22:48.494421000Z
00:00:00.001175 main OS Product: Linux
00:00:00.001176 main OS Release: 3.2.0-23-generic-pae
00:00:00.001178 main OS Version: #36-Ubuntu SMP Tue Apr 10 22:19:09 UTC 2012
00:00:00.001205 main DMI Product Name: VirtualBox
00:00:00.001213 main DMI Product Version: 1.2
00:00:00.001220 main Host RAM: 692MB total, 64MB available
00:00:00.001223 main Executable: /usr/lib/virtualbox/vboxwebsrv
00:00:00.001224 main Process ID: 10871
00:00:00.001225 main Package type: LINUX_32BITS_UBUNTU_12_04
00:00:00.164802 SQPmp #### SOAP FAULT: Address already in use [SOAP-ENV:Server]
при открытии браузера наблюдаем окно ввода логина и пароля:
Для входа на Web -интерфейс управления виртуальными машинами используем логин: admin и пароль admin .
http://ekzorchik.ru/phpvirtualbox/php — это мой внутренний адрес в моей локальной сети, в Вашем случае можно указыть как полное DNS имя, так и IP адрес Вашей системы на которой разворачиваете Virtualbox.
На заметку: В данном примере я рассмотрел на примере VirtualBox 4.2.6, но на сегодняшний день уже существует версия 4.2.12, так что принцип и шаге одинаковы один в один.
В результате мы получили и настроили бесплатный Web-интерфейс реализованный на PHP и использующий встроенную в VirtualBox службы удалённого управления VirtualBox Web Service. Всё это было сделано, для того чтобы управлять из любого места своими тестовыми система, будь-то домашняя локальная сеть либо в компании. На этом всё, удачи. Следите за обновления на моём блоге.
От ekzorchik
Всем хорошего дня, меня зовут Александр. Я под ником — ekzorchik, являюсь автором всех написанных, разобранных заметок. Большинство вещей с которыми мне приходиться разбираться, как на работе, так и дома выложены на моем блоге в виде пошаговых инструкции. По сути блог — это шпаргалка онлайн. Каждая новая работа где мне случалось работать вносила новые знания и нюансы работы и соответственно я расписываю как сделать/решить ту или иную задачу. Это очень помогает. Когда сам разбираешь задачу, стараешься ее приподнести в виде структурированной заметки чтобы было все наглядно и просто, то процесс усвоения идет в гору.
Аникин
Установка virtualbox с web-интерфейсом на сервер.
Имеем сервер на ubuntu 14.04. Нужно установить virtualbox с веб интерфейсом, чтобы установить несколько виртуальных машин на сервер.
Скрипт автоустановки для ленивых
Установка virtualbox.
Для начала установим сам virtualbox последней версии с репозиториев oracle.
Добавляем репозиторий и импортируем ключ
# echo "deb http://download.virtualbox.org/virtualbox/debian $(lsb_release -sc) contrib" | sudo tee -a /etc/apt/sources.list # wget -q https://www.virtualbox.org/download/oracle_vbox.asc -O- | sudo apt-key add -
Устанавливаем virtualbox и модули ядра
# apt-get update # apt-get install dkms virtualbox-5.0
Установим пакет дополнений гостевой ОС. Смотрим версию virtualbox
# vboxwebsrv -V Oracle VM VirtualBox web service Version 5.0.2 (C) 2007-2015 Oracle Corporation All rights reserved. 5.0.2r102096
И на этой странице берем ссылку для дополнений для нужной нам версии.
Скачиваем
# wget http://download.virtualbox.org/virtualbox/5.0.2/Oracle_VM_VirtualBox_Extension_Pack-5.0.2-102096.vbox-extpack
# VBoxManage extpack install Oracle_VM_VirtualBox_Extension_Pack-5.0.2-102096.vbox-extpack
Теперь создадим юзера, под которым будут работать наши виртуальные машины и добавим его в группу vboxusers
# adduser vbox # usermod -a -G vboxusers 'vbox'
Не забываем пароль, который мы назначили пользователю vbox. Он нам ещё потребуется.
Настраиваем веб-сервис virtualbox
# nano /etc/default/virtualbox
VBOXWEB_USER=vbox #пользователь под которым работает virtualbox VBOXWEB_HOST=xxx.xxx.xxx.xxx #ip VBOXWEB_PORT=18083 #порт для веб-сервиса
# service vboxweb-service stop # service vboxweb-service start
Установка web-интервейса.
Для работы веб интерфейса нам потребуется веб-сервер(мы будем использовать nginx) и php. Установим их.
# apt-get install nginx php5-common php5-fpm php-pear
Для ubuntu 16.04 кликнуть сюда
# apt-get install nginx php-common php-fpm php-pear php-soap
Создадим каталог для виртуального хоста.
# mkdir /var/www && mkdir /var/www/phpvirtualbox
На этой странице мы можем получить ссылки на архивы веб-интерфейса phpvirtualbox для разных версий virtualbox. В данном случае скачиваем и распаковываем в каталог виртуального хоста phpvirtualbox для нашей версии.
# cd /var/www/phpvirtualbox/ && wget http://sourceforge.net/projects/phpvirtualbox/files/phpvirtualbox-5.0-2.zip/download && mv download phpvirtualbox-5.0-2.zip # unzip phpvirtualbox-5.0-2.zip && mv ./phpvirtualbox-5.0-2/* /var/www/phpvirtualbox
# cp /var/www/phpvirtualbox/config.php-example /var/www/phpvirtualbox/config.php
# nano /var/www/phpvirtualbox/config.php
# Пользователь и пароль под которым работает virtualbox var $username = 'vbox'; var $password = 'PaS$w0rd'; # Адрес веб-сервиса var $location = 'http://xxx.xxx.xxx.xxx:18083/'; # Диапазон rdp портов var $vrdeports = '9000-9100'; # IP сервера var $consoleHost = 'xxx.xxx.xxx.xxx';
Создаем файл виртуального хоста в nginx
# nano /etc/nginx/conf.d/phpvirtualbox.conf
server < listen xxx.xxx.xxx.xxx:80; root /var/www/phpvirtualbox/; index index.php index.html index.htm; location / < # First attempt to serve request as file, then # as directory, then fall back to index.html try_files $uri $uri/ /index.html; # Uncomment to enable naxsi on this location # include /etc/nginx/naxsi.rules ># pass the PHP scripts to FastCGI server listening on 1$ # location ~ \.php$ < try_files $uri =404; fastcgi_split_path_info ^(.+.php)(.*)$; fastcgi_pass unix:/var/run/php5-fpm.sock; fastcgi_index index.php; fastcgi_param SCRIPT_FILENAME $document_root$fastcgi_script_name; include fastcgi_params; >>
Для ubuntu 16.04 конфиг такой
server < listen XXX.XXX.XXX.XXX:80; root /var/www/phpvirtualbox/; index index.php index.html index.htm; location / < # First attempt to serve request as file, then # as directory, then fall back to index.html try_files $uri $uri/ /index.html; # Uncomment to enable naxsi on this location # include /etc/nginx/naxsi.rules ># pass the PHP scripts to FastCGI server listening on 1$ # location ~ \.php$ < try_files $uri =404; fastcgi_split_path_info ^(.+.php)(.*)$; fastcgi_pass unix:/var/run/php/php7.0-fpm.sock; fastcgi_index index.php; fastcgi_param SCRIPT_FILENAME $document_root$fastcgi_script_name; include fastcgi_params; >>
Теперь перейдя по адресу http://ip-сервера/ мы увидим форму логина. По умолчанию логин — admin и пароль — admin. Логинимся, открываем меню File, пункт Preferences и меняем пароль в графе Users. В графе Language можно поставить русский язык.
Установка виртуальной машины.
Скачиваем установочный образ нужной нам ОС(в данном случае debian 8) в домашний каталог юзера vbox
# cd /home/vbox/ # wget http://mirror.yandex.ru/debian-cd/8.1.0/amd64/iso-cd/debian-8.1.0-amd64-CD-1.iso
Затем в веб-интерфейсе, кликаем кнопку создать и создаем виртуальную машину с нужными нам характеристиками.
Переходим в настройки виртуальной машины — Дисплей. И во вкладке «Удаленный дисплей» включаем доступ по rdp с нужными нам данными авторизации и портом.
Запускаем нашу виртуальную машину. При первом запуске она спросит установочный iso образ, который мы скачали в домашний каталог пользователя vbox.
После запуска виртуальной машины мы можем подключится любым rdp клиентом к хост-машине по порту указанному в настройках удаленного дисплея и продолжить установку как обычно. Также можно подключится прямо через веб-интерфейс, просто кликнув «Консоль» справа сверху.