VirtualBox без X сервера (Headless mode) & phpVirtualBox
В этой заметке я хочу рассказать о развертывании системы виртуализации на базе 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:
1 2 3 |
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
1 2 |
var $username = 'ian'; var $password = 'pass'; |
свои логин и пароль к учетной записи на Ubuntu. Скачиваем vboxwebsrv и делаем файл исполняемым. Перемещаем в /etc/init.d У меня веб-сервер работает на php5-fpm + nginx, поэтому приведу вам конфиг для него:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 |
# 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)
1 |
192.168.0.17 vm.com |
Запускаем:
1 2 3 |
$ 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 ставим клиента на машину, откуда будем коннектиться.
1 |
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
Я бы еще кое-чего добавил конечно же, но по сути сказано практически все.
как сделать чтобы виртуальные машины стартовали сразу при запуске хостовой?
С помощью следующей команды запускаются вируталки. Добавьте её в ваш стартовый скрипт.
VBoxMange startvm [vm name]
Вот кстати мануалка на эту тему.
Немного недопонял по поводу того, как избавиться от задвоенного курсора. Собрал вчера phpVirtualbox и сам виртуалбокс версии 5.0. Проблема с задвоенным курсором получилась только на виртуальной windows7, линукс с КДЕ нормально. Какой куда образ запихать, чтоб на винде нормальный курсор был? Можете прокомментировать?
Все. Понял. На том же диске есть и для винды exe файл и сертификаты. Все установил – проблемы кончились. За тему спасибо!
Ну, да, Дмитрий! Установка Guest Additions решает проблему с курсором. Удачи!