Данная заметка о том, как установить VirtualBox 5 и веб-морду phpVirtualBox на сервер. Понимаю, что это достаточно простая задача, но мне проще, когда всё есть под рукой хотя бы в роли чек листа.
Заметка состоит из трех частей:
1. Установка VirtualBox на сервер
2. Установка phpVirtualBox
3. Создание и настройка виртуального хоста на Nginx
Установка VirtualBox Guest Additions на виртуальную машину будет в отдельной заметке.
1. Установка VirtualBox на сервер
Добавим репозиторий в source.list:
# nano /etc/apt/sources.list
Добавим следущее:
# VirtualBox repository deb http://download.virtualbox.org/virtualbox/debian jessie contrib non-free
Скачиваем публичный ключ для репозитория:
# wget -q http://download.virtualbox.org/virtualbox/debian/oracle_vbox.asc -O- | apt-key add -
Обновляем репозиторий и устанавливаем VirtualBox 5:
# apt-get update && apt-get install virtualbox-5.0
Теперь нужно поставить Extension Pack для VirtualBox. Чтобы это сделать нужно узнать версию установленого VirtualBox-сервера:
# VBoxManage -V 5.0.8r103449
Как видим, у меня это 5.0.8 сборки 103449… Нужно скачать и установить Extension Pack для данной версии. Заходим на страницу загрузок и находим папку с нашей версией VirtualBox, а внутри ее будет нас ждать Extension Pack:
http://download.virtualbox.org/virtualbox/
Для меня такая ссылка вышла:
http://download.virtualbox.org/virtualbox/5.0.8/Oracle_VM_VirtualBox_Extension_Pack-5.0.8-103449.vbox-extpack
Забираем пакет на сервер:
# wget http://download.virtualbox.org/virtualbox/5.0.8/Oracle_VM_VirtualBox_Extension_Pack-5.0.8-103449.vbox-extpack
Устанавливаем Extension Pack:
VBoxManage extpack install Oracle_VM_VirtualBox_Extension_Pack-5.0.8-103449.vbox-extpack
Перезагрузим сервис:
# service vboxweb-service restart
Теперь нужно создать пользователя, с помощью которого мы будем управлять virtualbox через веб-морду (пароль нужно запомнить, он нужен для настройки веб-морды):
# adduser vbox
2. Установка phpVirtualBox
phpVirtualBox — это веб-морда для управления virtualbox через браузер. Не особо уступает привычной панели управления на компьютерах. Ставить ее можно куда угодно и управлять она может несколькими серверами, что является несомненным плюсом.
Выбрать подходящую версию можно тут (нужно выбирать версию панели под версию сервера):
http://sourceforge.net/projects/phpvirtualbox/files/
Так как у меня версия VirtualBox 5.0.8, а последняя версия панели 5.0.3, то скачиваю ее на сервер:
# wget -O phpvirtualbox-5.0-3.zip http://sourceforge.net/projects/phpvirtualbox/files/phpvirtualbox-5.0-3.zip/download
Распакуем архив в нужное место (у меня это /home/www/):
# unzip phpvirtualbox-5.0-3.zip -d /home/www/
Переименуем папку c веб-мордой (можно не делать, т.к. это моя хотелка):
# mv /home/www/phpvirtualbox-5.0-3/ /home/www/phpvirtualbox
# Переходим в папку:
# cd /home/www/phpvirtualbox/
Создадим файл config.php из примера:
# cp config.php-example config.php
Редактируем конфиг:
# nano config.php
Припустим, что VirtualBox и phpVirtualBox установлены на одном и том же сервере с IP 192.168.0.1.
Меняем указанные параметры:
var $username = 'vbox'; // Имя пользователя на сервере для управления virtualbox var $password = 'pass'; // Пароль пользователя на сервере для управления virtualbox var $location = 'http://192.168.0.1:18083/'; // Адрес сервера с VirtualBox (нужно указать внешний IP сервера) var $consoleHost = '192.168.0.1'; // Адрес сервера с VirtualBox (нужно указать внешний IP сервера)
ВНИМАНИЕ! Если хотите работать с несколькими серверами через одну веб-морду, параметры выше можно закомментировать и использовать настройки через массив $servers (пример массива есть в config.php).
Теперь нужно создать конфиги для запуска сервиса vboxweb-service. Для этого создадим файл:
# nano /etc/default/virtualbox
И запишем в него следующее (больше информации в wiki http://sourceforge.net/p/phpvirtualbox/wiki/vboxweb-service%20Configuration%20in%20Linux/):
VBOXWEB_USER=vbox VBOXWEB_HOST=192.168.0.1 VBOXWEB_PORT=18083
Перезагрузим сервис:
# service vboxweb-service restart
3. Создание и настройка виртуального хоста на Nginx
Для веб-морды phpVirtualBox я захотел создать поддомен и заходить по нему. Поддомен будет вида vbox.site.com. На сервере, где развернута веб-морда работает nginx.
Создадим конфиг виртуального хоста:
# nano /etc/nginx/sites-available/vbox.site.com
Напишем в него следующее:
server { listen 192.168.0.1:80; server_name vbox.site.com www.vbox.site.com; access_log /var/log/nginx/access-vbox.site.com.log; root /home/www/phpvirtualbox/; index index.php index.html index.htm; location / { try_files $uri $uri/ /index.html; } location ~ \.php$ { try_files $uri =404; fastcgi_split_path_info ^(.+.php)(.*)$; fastcgi_pass unix:/tmp/php-fpm.sock; fastcgi_index index.php; fastcgi_param SCRIPT_FILENAME $document_root$fastcgi_script_name; include fastcgi_params; } }
Прошу обратить внимание на параметры access_log, root и fastcgi_pass. У Вас они будут другими, т.к. настройки серверов зачастую отличаются.
Теперь подсунем nginx новый конфиг, забросив его в папку sites-enabled:
# ln -s /etc/nginx/sites-available/vbox.site.com /etc/nginx/sites-enabled/
Проверим конфиг:
# nginx -t nginx: the configuration file /etc/nginx/nginx.conf syntax is ok nginx: configuration file /etc/nginx/nginx.conf test is successful
Если получили такой же ответ, это значит, что ошибок в конфиге нет и можно делать релоад nginx:
# service nginx reload
Всё, теперь можно проверять работоспособность веб-морды по адресу http://vbox.site.com/. Логин и пароль — admin.
Успехов! 🙂