VirtualBox без X сервера (Headless mode) & phpVirtualBox

// Декабрь 29th, 2010 // Ubuntu, Аппаратное обеспечение, Виртуализация

В этой заметке я хочу рассказать о развертывании системы виртуализации на базе Ubuntu 10.10 Server + VirtualBox + phpVirtualBox. Думаю, вы в курсе, что это такое и с чем его едят. Преимущества и недостатки VirtualBox, как системы виртуализации, я оставлю за рамками этой статьи.Наша задача: развернуть инфраструктуру виртуализации на хост-машине без графического интерфейса (X-сервера). В начале имеем установленную Ubuntu 10.10 Server со всеми обновлёнными пакетами (sudo apt-get update & sudo apt-get upgrade). Ставить будем версию 3.2.12 VirtualBox. Я знаю, что уже доступна 4 версия, однако phpvirtualbox-0.5 с ней работать не будет. На сайте проекта уже есть Issue на этй тему, однако авторы похоже уже ушли на каникулы :-)

Right now phpVirtualBox is incompatible with VirtualBox 4.0. I hope to have this fixed right after the Christmas holiday weekend.

Установка VirtualBox

На сайте VirtualBox можно найти нужную нам  версию. Качаем её, ставим dkms драйвер и саму virtualbox:

wget http://download.virtualbox.org/virtualbox/debian/pool/non-free/v/virtualbox-3.2/virtualbox-3.2_3.2.12-68302~Ubuntu~maverick_amd64.deb
sudo apt-get install dkms
sudo dpkg -i ./virtualbox-3.2_3.2.12-68302~Ubuntu~maverick_amd64.deb

Отлично, система установлена. Теперь очередь за phpvirtualbox. Скачиваем phpvirtualbox-0.5.zip и распаковываем. Папку phpvirtualbox-0.5 перемещаем в директорию web-сервера (у меня — /var/www/phpvirtualbox)
Редактируем файл config.php Вписываем в строки вместо ian и pass

var $username = 'ian';
var $password = 'pass';

свои логин и пароль к учетной записи на Ubuntu. Скачиваем vboxwebsrv и делаем файл исполняемым. Перемещаем в /etc/init.d У меня веб-сервер работает на php5-fpm + nginx, поэтому приведу вам конфиг для него:

# PHP-FPM (backend)
upstream php-fpm {
server 127.0.0.1:9010;
}

# Конфиг Nginx (frontend)
server {

# Порт, принимаемые HOST и путь к сайту
listen 80;
server_name www.vm.com vm.com;
set $root_path '/var/www/phpvirtualbox';
root $root_path;

# Для картинок
location ~* \.(css|js|png|jpg|gif|html|htm|ico|swf)$ {
root $root_path;
# access_log off;
# expires    30d;
}

# Запросы непосредственно .php-файлов, например утилит или index.php (не кэшируются)
location ~ \.php$ {
include /etc/nginx/fastcgi_params;
fastcgi_param SCRIPT_FILENAME $root_path/$fastcgi_script_name;
fastcgi_param DOCUMENT_ROOT $root_path; # этот параметр нужен несмотря на root в секции server
fastcgi_pass php-fpm;
}

# Копия предыдущего для internal переадресации
location @phpscripts {
include /etc/nginx/fastcgi_params;
fastcgi_param SCRIPT_FILENAME $root_path/$fastcgi_script_name;
fastcgi_param DOCUMENT_ROOT $root_path; # этот параметр нужен несмотря на root в секции server
fastcgi_pass php-fpm;
}

# Остальные запросы также идут на PHP-FPM, если $uri не существует (через memcache)
location / {
#add_header    Content-Type  "text/html";
root  $root_path;
error_page 404 502 504 405 = @php;
}

# Веб-приложение
location @php {
include /etc/nginx/fastcgi_params;
fastcgi_param SCRIPT_FILENAME $root_path/index.php;
fastcgi_pass php-fpm;
}
}

Теперь на локальной машине (откуда будем коннектиться) прописываем запись в /etc/hosts для хост-машины с виртуалками (192.168.0.17)

192.168.0.17      vm.com

Запускаем:

$ sudo service php5-fpm start
$ sudo service nginx start
$ vboxwebsrv &

В броузере топаем по адресу: vm.com и у нас открывается такой же интерфейс, как и у десктопной версии!

UP. Установка в Ubuntu 11.10

Прежде всего стоит отметить, что теперь для адекватной работы RPD нужно установить VirtualBox 4.1.10 Oracle VM VirtualBox Extension Pack.

Скачиваем его отсюда:

wget http://download.virtualbox.org/virtualbox/4.1.10/Oracle_VM_VirtualBox_Extension_Pack-4.1.10-76795.vbox-extpack

Затем надо от root запустить установку расширений:

# VBoxManage extpack install Oracle_VM_VirtualBox_Extension_Pack-4.1.10-76795.vbox-extpack

После установки перезаружаем машину, и в phpvirtualbox в закладке display появится вкладка RDP, после чего можно будет коннектиться к виртуалке.

См. раз, два, три.

Установка виртуальных машин

В качестве эксперимента попробуем поставить Ubuntu 10.10 Desktop на виртуальную машину. Работа с phpVirtualBox аналогична десктопной версии.
Переходим на страницу, что настроили в Apache:

Cоздаём новую машину:

Вводим название и выбираем устанавливаемую ОС:

Выбираем объём оперативной памяти:

Выбираем существующий диск или создаём новый:

Выбираем тип жесткого диска, фиксированный размер или динамичиски
увеличивающийся до определённого размера:

Задаём размер нашего диска:

Просматриваем суммарную информацию по выбранной конфигурации:

В списке виртуальных компьютеров выбираем наш компьютер и запускаем его:

В настройках виртуалки не забываем включить RDP. По умолчанию он будет открыт на 3389 порту. В качестве CD-ROM монтируем ISO образ с Ubuntu.

Установка виртуальной ОС

После нажатия на кнопку Start в phpVirtualBox машина начнет загружаться. Но, т.к. клиент у нас не десктопный мы этого не увидим. Для того, чтобы подконнектиться к виртуальке по rdp ставим клиента на машину, откуда будем коннектиться.

sudo apt-get install gnome-rdp

Потом запускаем его и коннектимся на 3389 порт ХОСТ-МАШИНЫ. Я поначалу коннектился к виртуалке, а там порт был закрыт. Отлично, теперь мы видим графический установщик убунты. Но в окне у нас почему-то два курсора. Дальше я напишу, как исправить это баг, но установку придется производить с двумя курсорами. После установки виртуалки выключаем машину. Тут была ещё одна странность, машина не выключалась сама, пришлось выключить её через веб-морду. Дальше идем в веб-мордду и там отмонтируем ISO образ от машины и монтируем вместо него образ /usr/share/virtualbox/VBoxGuestAdditions.iso

Загружаем машину, на рабочем столе видим CD-ROM, правой кнопкой кликаем по нему, выбираем autorun. Ставятся Guest Additions, нажимаем Enter в консоле, когда попросят и перезагружаем машину. После этого  будет один курсор и нормальный графический режим (не забудьте выставить его и в RDP-клиенте). Ну вот, отлично, теперь имеем виртуалку,  и при этом мы не устанавливали тяжелые Xы на хост-машине.

Будут вопросы, пишите в комментах.

Ссылки

http://www.opennet.ru/base/sys/virtualbox_freebsd.txt.html

VirtualBox 4.1.10 Oracle VM VirtualBox Extension Pack

Share

Спасибо!


Если вам помогла статья, или вы хотите поддержать мои исследования и блог - вот лучший способ сделать это:


6 Responses to “VirtualBox без X сервера (Headless mode) & phpVirtualBox”

  1. Лала:

    Я бы еще кое-чего добавил конечно же, но по сути сказано практически все.

  2. max:

    как сделать чтобы виртуальные машины стартовали сразу при запуске хостовой?

  3. Дмитрий:

    Немного недопонял по поводу того, как избавиться от задвоенного курсора. Собрал вчера phpVirtualbox и сам виртуалбокс версии 5.0. Проблема с задвоенным курсором получилась только на виртуальной windows7, линукс с КДЕ нормально. Какой куда образ запихать, чтоб на винде нормальный курсор был? Можете прокомментировать?

    • Дмитрий:

      Все. Понял. На том же диске есть и для винды exe файл и сертификаты. Все установил — проблемы кончились. За тему спасибо!

      • google.com Андрей Токарчук:

        Ну, да, Дмитрий! Установка Guest Additions решает проблему с курсором. Удачи!

Комментировать