Недавно столкнулся с задачей быстрого и простого развертывания серверов на основе связки Ubuntu Server 16.04 и pHpVirtualBox 5.0.5 для дальнейшей виртуализации всяческих OS.
Задача тривиальная, но быстрого, простого и самое главное — пошагового рецепта не нашел, поэтому по итогам успешной инсталляции решил выложить примитивный FAQ для всех интересующихся.
И так, сперва устанавливаем систему — в моем случае это Ubuntu Server 16.04 LTS 64-bit. Процесс описывать не буду, здесь все стандартно.
Далее не забываем обновить нашу систему:
sudo apt update
sudo apt upgrade
Ждем завершения и перезагружаемся:
sudo shutdown -R now
Следующий шаг после перезагрузки — необходимо добавить репозитарий и ключ:
sudo echo 'deb http://download.virtualbox.org/virtualbox/debian precise contrib' >> /etc/apt/sources.list
wget -q http://download.virtualbox.org/virtualbox/debian/oracle_vbox.asc -O- | apt-key add -
После этого устанавливаем сам VirtualBox и дополнительные модули:
sudo apt-get install virtualbox
sudo apt-get install dkms
sudo apt-get install libcurl3
Дождавшись окончания инсталляции, проверяем версию установленного VirtualBox командой:
vboxwebsrv -V
На основании полученной информации о версии, идем по адресу http://download.virtualbox.org/virtualbox и качаем подходящую версию Extension Pack. В моей случае это версия 5.0.24-108355:
wget http://download.virtualbox.org/virtualbox/5.0.24/Oracle_VM_VirtualBox_Extension_Pack-5.0.24-108355a.vbox-extpack
Когда загрузка завершиться необходимо установить его:
sudo vboxmanage extpack install Oracle_VM_VirtualBox_Extension_Pack-5.0.24-108355a.vbox-extpack
Дожидаемся установки и перестартовываем сервис:
sudo /etc/init.d/virtualbox stop
sudo /etc/init.d/virtualbox start
После этого можно создать и занести в группу пользователя, из под которого будет стартовать наш VirtualBox:
sudo adduser vbox
sudo usermod -a -G vboxusers 'vbox'
Теперь установим Apache2 и PHP:
sudo apt-get install apache2
sudo apt-get install php
sudo apt-get install -y php7.0-mbstring php7.0-zip php7.0-xml
Не забудем разрешить права на папку:
sudo chown -R www-data:www-data /var/www
И еще немного шаманства:
sudo service apache2 restart
sudo a2enconf php7.0-fpm
sudo service apache2 reload
sudo apt-get install php-soap
sudo service apache2 reload
Если на машине нет архиватора, необходимо исправить это досадное обстоятельство:
sudo apt-get install unzip unrar
Дожидаемся окончания процесса, и приступаем к скачиванию phpVirtualBox:
wget http://sourceforge.net/projects/phpvirtualbox/files/phpvirtualbox-5.0-5.zip
Попутное замечание — если не установлен Midnight Commander рекомендую установить и запустить (адепты старой школы могут снисходительно усмехнуться, но мне так удобнее):
sudo apt-get install mc
sudo mc
Теперь находясь в уютном и привычном интерфейсе mc разархивируем содержимое phpvirtualbox-5.0-5.zip в /var/www/html предварительно почистив папку /html.
Далее находим в папке /html файл сonfig.php-example и делаем из него config.php.
После редактируем в нем следующие параметры:
var $username = 'user'; имя пользователя, у меня vbox
var $password = 'password'; пароль пользователя
var $location = 'http://192.168.0.1:18083/'; адрес нашего будущего веб-сервера
var $vrdeports = '9000-9100'; порты
var $consoleHost = '192.168.0.1'; адрес сервера на котором будет крутиться VirtualBox
А строку var servers = array
— закомментируем.
Сохраняем изменения, выходим из mc и еще немного магии для групп пользователя:
sudo chgrp vboxusers /etc/vbox
sudo chmod 1775 /etc/vbox
Почти готово, осталось научить VirtualBox самостоятельности, а конкретно — автоматически поднимать сервиса.
Для этого идем в папку /etc/vbox и создаем файл autostart.cfg внутри которого прописываем:
default_policy = deny
vbox = {
allow = true
startup_delay = 10
}
Сохраняем, далее создаем файлы vbox.start и vbox.stop.
Внутри каждого файла прописываем значение 1 и не забываем сохранить.
Следующий шаг — открываем файл редактором /etc/default/virtualbox прописываем:
VBOXWEB_USER=vbox
VBOXWEB_HOST=192.168.0.1
VBOXWEB_PORT=18083
VBOXAOTPSTART_DB=/etc/vbox
VBOXAOTPSTART_CONFIG=/etc/vbox/autostart.cfg
Сохраняемся, идем дальше в файл /etc/rc.local и дописываем строчку:
sudo -u vbox vboxwebsrv --host 192.168.0.1
Это придаст нашему сервису самостоятельности при дальнейших перезагрузках системы. Сохраняем и перезагружаемся командой:
sudo shutdown -R now
После перезагрузки системы отрываем браузер на удаленной машине и заходим по адресу 192.168.0.1, где нас встречает привлекательный графический интерфейс.
Доступ по умолчанию:
логин — admin
пароль — admin
Здесь могут быть проблемы с ограничением доступа из за JAVA. Что бы пустил, прописываем в JAVA policy исключения:
permission java.net.SocketPermission "192.168.0.1:1024-65535","connect,accept,resolve";
permission java.net.SocketPermission "192.168.0.1:1-1023","connect,resolve";
После создания виртуальных машин, можно сделать их автостарт при незапланированной перезагрузке. Для этого я просто дописываю в файле /etc/rc.local:
sudo -H -u vbox vboxmanage startvm имя_вашей_машины --type headless
Всем удачи!
Автор: kirill_zaycev