Szerveren is lehet kényelem: phpVirtualBox

phpVirtualBox logó
Ha letagadnám, akkor is mindenki tudná, hogy lusta vagyok, különösen olyan dolgokban, amiket esetleg lehet automatizálni vagy egyszerűbben kezelhetővé tenni. Van pár kiszolgáló, ahol praktikussági okokból VirtualBoxot használok virtualizálásra (Xen és OpenVZ esetén nem térült volna meg a befektetett idő, az LXC meg szimplán kuka).

Ha új virtuális gépet szerettem volna készíteni, akkor eddig kénytelen voltam végigszöszölni a „VBoxManage creatvevm...” utat. Hála a phpVirtualBoxnak, csak pár kattintás, és kész az új virtuális gép :)

Telepítsünk!

1. A phpVirtualBox működéséhez mindenképpen szükségünk van valamilyen PHP-t futtatni képes webszerverre. Ez lehet apache, nginx, lighttpd, bármi. Fontos, hogy telepítsük a php-soap csomagot (vagy legyen soap flag-je a PHP-nak)!

2. Telepítsük a VirtualBoxot. A Debian és az RPM alapú disztribúciók esetén lehetőségünk van felvenni az adott tárolót a tárolóink közé, minden szükséges információ megtalálható itt: http://www.virtualbox.org/wiki/Linux_Downloads
Ubuntu:

wget -q http://download.virtualbox.org/virtualbox/debian/oracle_vbox.asc -O- | sudo apt-key add - && apt-get update && apt-get install build-essential virtualbox-4.0

Gentoo esetén a VirtualBox benne van a portage fában. Arch és licensz (PUEL) mask van a Virtualbox csomagokon, ezeket kéretik eltávolítani.

/etc/portage/package.license fájlt egészítsük ki (vagy hozzuk létre) a következő tartalommal:

app-emulation/virtualbox-additions PUEL
app-emulation/virtualbox-extpack-oracle PUEL

Virtualbox logó

A /etc/portage/package.keywords állományba pedig a következő sorok kerüljenek:

app-emulation/virtualbox-modules 		~amd64 vagy x86
app-emulation/virtualbox			~amd64 vagy x86
app-emulation/virtualbox-additions		~amd64 vagy x86
app-emulation/virtualbox-extpack-oracle		~amd64 vagy x86  # RDP miatt

Én a következő use flag-ekkel telepítettem a Virtualboxot:
additions extensions headless java sdk vboxwebsrv -alsa -doc -elibc_FreeBSD -opengl -pulseaudio -python -qt4 -vnc

Külön felhívnám a figyelmet a headless, vboxwebsrv java és sdk opciókra. Ha nem headless, akkor telepíti a GUI-t is, ez pedig nekünk nem kell. A vboxwebsrv miatt kell a java és az sdk flag is, ezek nélkül nem fordul le, nem mellesleg a vboxwebsrv-n keresztül kommunikál majd a PHP-s gui.

Telepítsünk végre:

emerge app-emulation/virtualbox app-emulation/virtualbox-modules app-emulation/virtualbox-additions app-emulation/virtualbox-extpack-oracle

A telepítés után az RDP miatt szükségünk van az Oracle kiegészítő csomagjára. Gentoo alatt már semmi dolgunk sincs, az települt. Más rendszereken azonban le kell tölteni a kiegészítő csomagot és telepíteni kell.

wget http://download.virtualbox.org/virtualbox/4.0.8/Oracle_VM_VirtualBox_Extension_Pack-4.0.8-71778.vbox-extpack && VBoxManage extpack install Oracle_VM_VirtualBox_Extension_Pack-4.0.8-71778.vbox-extpack

Hozzunk létre, vagy adjunk hozzá egy felhasználót a vboxusers csoporthoz. Ez azért fontos, mert a nevében fog futni a VirtualBox.

Adjunk hozzá egy új felhasználót.

useradd -G vboxusers -p vboxpass vboxuser

Vagy egy meglévő felhasználónak adjuk meg a futtatáshoz a jogokat.

gpasswd -a vboxuser vboxusers

Töltsük le valahova (ahol persze eléri a webszerver) a legfrissebb phpVirtualbox-ot innen: http://code.google.com/p/phpvirtualbox/downloads/list

Csomagoljuk ki, majd szerkesszük egy kicsit a config.php-t.

var  = 'vboxuser'; // Felhasználó, aki nevében futtatjuk a virtualbox-ot
var  = 'vboxpass'; // Felhasználó jelszava.
var  = 'http://127.0.0.1:18083/'; //Gép IP címe, ahol fut a vboxwebsrv.

VBoxWebSRV konfigurálása
[Ubuntu]
Ahhoz, hogy az init script tudja, hogyan kell indítania a vboxwebsrv-t, szüksége van egy konfigurációs állományra a /etc/default könyvtárban virtualbox néven. Tartalma:

VBOXWEB_USER=vboxuser
VBOXWEB_HOST=localhost
VBOXWEB_PORT=18083
VBOXWEB_TIMEOUT=20
VBOXWEB_CHECK_INTERVAL=0

Ubuntu esetén a telepítés kész.
Elindítod (

/etc/init.d/vboxweb-service start

), megy, örülsz.

A [Gentoo] egy picit mókásabb:
Ahhoz, hogy a megadott felhasználó nevében fusson a VirtualBox, egy kis konfiguráció turkálásra van szükség.

A /etc/conf.d/vboxwebsrv állományhoz hozzá kell adni egy sort:

VBOXWEBSRV_USER="vboxuser" 

A többi beállítást értelemszerűen (akár a fenti alapján) töltsd ki, jól kommentezett az állomány :)

A /etc/init.d/vboxwebsrv start része pedig így nézzen ki:

start() {
	#checkconfig || return $?
 
	ebegin "Starting VirtualBox WebService"
	start-stop-daemon --start --quiet --pidfile /var/run/vboxwebsrv.pid \
		--background --make-pidfile --user  --exec /usr/bin/vboxwebsrv \
		-- -H  -p  -t  -i 
	eend $?
}

Kész. Ha minden jól megy, akkor /etc/init.d/vboxwebsrv start parancsra el kell, hogy induljon.

Már a célegyenesben vagyunk!

A telepített phpVirtualBox URL-jét írjuk be a böngészőbe. Pl. 127.0.0.1/phpvirtualbox

bejelentkezés

Az alapértelmezett név és jelszó: admin/admin. Ezt illik megváltoztatni valami bonyolultabbra. Ezt megteheted a File → Change Password menüpontban.

jelszó

Fontos: Amikor RDP elérést akarsz a virtuális gépedhez, akkor mindig add meg a szerver IP címét és portját is! Ne tartományt (pl. 3389-4000), mert úgy nem fog működni.

beállítások

Készen is vagyunk. Kedvcsinálónak álljon itt még pár kép:
kezdőlap

virtuális gép

új virtuális gép

beállítások 2

beállítások 3

beállítások 4

beállítások 6

beállítások 5

beállítások 7

beállítások 8