Дата поста: 25-07-2014
В этой заметке я хочу рассказать о развертывании системы виртуализации на базе Ubuntu 10.10 Server + VirtualBox + phpVirtualBox. Думаю, вы в курсе, что это такое и с чем его едят. Преимущества и недостатки VirtualBox, как системы виртуализации, я оставлю за рамками этой статьи. Наша задача: развернуть инфраструктуру виртуализации на хост-машине без графического интерфейса (X-сервера). В начале имеем установленную Ubuntu 10.10 Server со всеми обновлёнными пакетами (sudo apt-get update & sudo apt-get upgrade).
Установка 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 перемещаем в директорию web-сервера (у меня — /var/www/phpvirtualbox
)
Редактируем файл config.php
Вписываем в строки вместо alan
и pass
var $username = 'alan';
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
и у нас открывается такой же интерфейс, как и у десктопной версии
Установка в 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, после чего можно будет коннектиться к виртуалке. (подробнее можно почитать здесь)