Admnistrar Máquinas Virtuales en VirtualBox desde la web con PHPVirtualBox

1. Introducción

Hacer uso de máquinas virtuales es algo muy común, sobre todo para mi, sólo utilizo un sistema operativo y tengo varias máquinas virtuales para poder interactuar con otros más. Pero que tal si tenemos un servidor web y queremos habilitar otros servicios pero haciendo uso de máquinas virtuales, pues necesitaríamos administrar dichas máquinas de manera remota, podríamos realizar esto con Virtual Box y PHPVirtualBox.

PHPVirtualBox es un sistema web escrito en PHP que permite la administración remota de máquinas virtuales(a través de la web), esto permite correr dichas máquinas en un servidor y administrarlas sin tener que acceder físicamente al servidor. En este pequeño manual veremos la instalación y configuración de dicha herramienta.

1.1. Contenidos

  1. Instalación de Virtual Box y PHPVirtualBox en Gentoo/Linux
  2. Configuración de vboxwebsrv
  3. Habilitando PHPVirtualBox en apache con vhost
  4. Configuración de PHPVirtualBox
  5. Uso de PHPVirtualBox 

2. Requerimientos

  1. Sistema Operativo de referencia - Gentoo Linux
  2. Virtual Box 4.2.6 configurado y funcionando
  3. Servidor web Apache 2.X configurado y funcionando
  4. PHPVirtualBox, lo puedes descargar desde aquí(Debes escoger la versión que se adecue a tu versión de Virtual Box)

3. Instalación de dependencias - Gentoo Linux

Este capítulo solo tratará de instalar las dependencias necesarias para el uso de PHPVirtualBox en Gentoo Linux, en caso de que esta no sea tu distribución o sistema operativo deberás instalarlo según tu sistema.

3.1. Virtual Box

Para poder instalar la versión 4.2.6 de VIrtual Box primero debemos desenmascarar los paquetes:

cat > /etc/portage/package.keywords/virtual.keywords <<EOF app-emulation/virtualbox-additions app-emulation/virtualbox app-emulation/virtualbox-additions app-emulation/virtualbox-modules app-emulation/virtualbox-extpack-oracle dev-util/kbuild EOF

Agregamos las USEFLAG vboxwebsrv y java para el paquete virtualbox:

echo "app-emulation/virtualbox vboxwebsrv java">>/etc/portage/package.use/vbox.use

Finalmente realizamos la instalación:

emerge virtualbox

3.2. PhpVirtualBox

Gentoo provee un paquete para la instalación de PHPVirtualBox por lo cual no hay necesidad de descargar, pero debemos desenmascararlo:

echo "app-emulation/phpvirtualbox" >> /etc/portage/package.keywords/vbox.keywords

Agregamos el use vhosts al paquete:

echo "app-emulation/phpvirtualbox vhosts" >> /etc/portage/package.use/vbox.use

Instalamos phpvirtualbox

emerge phpvirtualbox

3.2.1. Configurando PHPVirtualBox en Apache

Para la instalación de phpvirtualbox solo es necesario descomprimir el archivo descargado en la carpeta www de apache y abrir en el navegador la ruta localhost, pero en mi caso lo que quiero es acceder a la gestión de mis máquinas virtuales a través de otro puerto y no usar el 80(por defecto) por que lo necesito para otras cosas. Para configurar que apache escuche en el puerto 80 y otro puerto es necesario configurar un vhost, de esta manera tendriamos 2 servicios web en la misma computadora. Para mi caso, configuraré el puerto de escucha para phpvirtualbox al puerto 8071. Primero crearemos un archivo phpvirtualbox.include en la carpeta de vhosts de apache:

cat > /etc/apache2/vhosts.d/phpvirtualbox.include << EOF

ServerAdmin root@localhost

DocumentRoot "/var/www/phpvirtualbox/htdocs/phpvirtualbox/"

<Directory "/var/www/phpvirtualbox/htdocs/phpvirtualbox/">
Options Indexes FollowSymLinks

AllowOverride All
Order allow,deny
Allow from all
</Directory>
EOF

Ahora haremos que apache escuche peticiones no solo en el puerto 80, si no también en el puerto 8071, editamos el archivo /etc/apache2/vhosts.d/00_default_vhost.conf:

Listen 80
Listen 8071
NameVirtualHost *:80
NameVirtualHost *:8071

En el mismo archivo agregamos un bloque VirtualHost que apunte a nuestro archivo phpvirtualbox.include:

<VirtualHost *:8071>
ServerName localhost
Include /etc/apache2/vhosts.d/phpvirtualbox.include

<IfModule mpm_peruser_module>
ServerEnvironment apache apache
</IfModule>
</VirtualHost>

Reiniciamos el servicio apache:

/etc/init.d/apache2 restart

Comprobamos el funcionamiento de PHPVirtualBox:

En mi caso he usado la url 192.168.1.225:8071, esta ip pertenece a mi servidor dentro de mi intranet, también debería funcionar haciendo uso de localhost:8071 en caso de que la prueba la hagas localmente.

4. Configurando vboxwebsrv

4.1. En Gentoo Linux

En Gentoo el programa vboxwebsrv viene instalado como un servicio, lo único que tenemos que hacer es activarlo. Primero cambiaremos el usuario por defecto para la ejecución que es root, editamos el archivo /etc/conf.d/vboxwebsrv y cambiamos la clausula:

VBOXWEBSRV_USER="root"

por:

VBOXWEBSRV_USER="usuario_vbox"

Debes reemplazar usuario_vbox por el usuario que tiene configuradas máquinas virtuales en Virtual Box. Ahora agregamos el servicio vboxwebsrv para que inicie con la máquina:

rc-update add vboxwebsrv default

Iniciamos el servicio:

/etc/init.d/vboxwebsrv start

4.2. Otros Sistemas Operativos

En el caso de que tu sistema operativo no provea un servicio para vboxwebsrv o simplemente lo hayas instalado con los paquetes de VirtualBox simplemente debemos ejecutar el programa desde la línea de comandos:

En el caso de distribuciones Linux (ejecutar desde el usuario que tiene configuradas las máquinas virtuales, no usar root):

vboxwebsrv &

En el caso de windows(Asumiendo que la ruta de instalación de VirtualBox fue C:\Archivos de Programa\Oracle\VirtualBox):

"%ProgramFiles%\Oracle\VirtualBox\vboxwebsrv.exe" >nul

5. Configuración de PHPVirtualBox

Para instalar PHPVirtualBox basta con descomprimir el contenido del archivo descargado en la carpeta www de apache(o tu servidor web). Primero copiaremos el archivo config.php-example de la carpeta de PHPVirtualBox a config.php en la misma carpeta, en el caso de Gentoo:

cd /var/www/phpvirtualbox/htdocs/phpvirtualbox/
cp config.php-example config.php

Ahora editamos el archivo config.php y editamos las líneas:

var $username = 'vbox';
var $password = 'pass';

De tal manera que vbox represente al usuario de tu sistema operativo que esté ejecutando vboxwebsrv y pass la contraseña de dicho usuario, finalmente accedemos por el navegador web a PHPVirtualBox, en caso de que hayas seguido la sección 3.2.1. Configurando PHPVirtualBox en Apache la ruta será localhost:8071, en mi caso utilizo la ip de mi servidor para acceder a el debido a que la configuración lo he hecho remotamente:

El usuario y contraseña por defecto es admin, admin:

6. Usando PHPVirtualBox

6.1. Iniciando una máquina

Para iniciar una máquina virtual la ubicaremos en la lista de maquinas virtuales, y le daremos clic en el botón Start:

Al iniciar la máquina virtual irán apareciendo ventanas de previsualización conforme la máquina vaya iniciando.

6.2. Habilitando el display remoto

Hasta ahora solo hemos podido iniciar la máquina virtual, pero que pasaría si deseamos interactuar con la máquina virtual desde PHVirtualBox, para esto debemos habilitar la opción Remote Display en la configuración. Seleccionamos la máquina virtual a la cual deseamos habilitar dicha opción, damos clic en el botón Settings y damos clic en la opción Settings:

Ahora nos dirigimos a la opción Display, damos clic en la ficha Remote Display y habilitamos el servidor tal como se muestra en la figura:

Finalmente damos clic en el botón OK y esperamos a que los cambios se guarden.

6.3. Conectándose al Server Display

Para poder interactuar con la máquina virtual desde PHPVirtualBox damos clic en el botón Console, en la pantalla que aparece colocamos la ip del servidor de vboxwebsrv o en su defecto localhost y damos clic en connect:

Al realizarse la conexión podremos interactuar con la máquina virtual como si estubieramos haciéndolo desde Virtual Box:

7. Bibliografía

Installation - phpvirtualbox -> http://code.google.com/p/phpvirtualbox/wiki/Installation

Sistemas Operativos: