VirtualBox desde web con phpVirtualBox

Improvisa :: Informática :: VirtualBox desde web con phpVirtualBoxBueno parece que últimamente estoy en fase creativa y me voy a escribir dos entradas en dos días.

Ayer bajándome un lector de RSS llamado Flipboard para mi iPhone el cual también funciona en Android y que os recomiendo, pude leer de casualidad la creación de un Front-End para el manejo de VirtualBox desde la web escrito en PHP.

La verdad es que como habréis podido leer en otras reseñas de improvisa, por aquí utilizamos mucho VirtualBox y la verdad es que siempre hemos andado intentando manejarlo sin tener que instalar las X en un servidor Debian. Podéis leer una entrada que tenemos sobre como manejar VirtualBox desde la consola: https://www.improvisa.com/02-03-2009/virtualbox-desde-consola/

Improvisa :: Informática :: VirtualBox desde web con phpVirtualBoxCon este aplicativo escrito en PHP llamado phpVirtualBox conseguiremos manejar desde la web las máquinas virtuales de una forma totalmente visual al igual que lo hacemos desde el entorno visual en nuestro escritorio.

Es un servicio que funciona bajo todas las plataformas. En este pequeño manual os eneseñaremos a instalarlo sobre Debian Squezze y manejando la ultima versión de VirtualBox, no VirtualBox OSE la versión nativa de Debian, sino la versión estable para Debian descargada de la web.

Sin más pasemos a ver como manejar VirtualBox desde la web con phpVirtualBox:

ACLARACIONES INICIALES:

Para el código que veréis en el howto utilizo lo siguiente: código que tecleo ( NEGRITA CURSIVA ).

Para el código que muestra la pantalla ( CURSIVA ).

Este manual compilara asterisk, dahdi, dahdi tools y todos los paquetes necesarios para la reación de la centralita. Dahdi incopora un montón de drivers para con­troladoras.

OJO a los Saltos de Linea y a los dobles guiones

Muchos de vosotros ya tendréis instalado el sistema operativo y podéis saltaros estas lineas.

INST­ALACIÓN DEL SISTEMA OPERATIVO:

La instalación del sistema operativo será la estándar, a día de hoy utilizaremos Debian Squeeze.

INSTALACIÓN Y CONFIRUACIÓN DE PAQUETES VARIOS:

De primeras y­ en casi todos los servidores que instalo suelo instalar una serie de paquetes, asi que hagamoslo:

improvisa:~# apt-get install gpm ssh vi­m ntpdate tcpdump iptraf

Una vez instaldos estos paquetes entraremos por ssh a la centralita Asterisk 1.4 llamada Improvisa y reconfiguraremos los locales de Debian Lenny:

improvisa:~# dpkg-reconfigure locales

Seleccionaremos es_ES.UTF-8 UTF-8 y es_ES@euro ISO-8859-15 y como predeterminado es_ES@euro.

Saldremos de la sesión ssh y volveremos a entrar.

Si utilizais a Vim como editor de texto tendremos que editar el archivo de configuraciíon de VIM, si utilizais editor otro pues hacedlo al gusto.

improvisa:~# vi /etc/vim/vimrc

Descomentaremos las lineas:

syntax on
set background=dark

y debajo de esta añadiremos la linea:

set noai

Guardaremos y cerraremos.

INSTALACION YCONFIGURACIÓN DE VIRTUALBOX:

Como hemos dicho más arriba utilizaremos la versión estable para nuestro sistema operativo descargada desde la web de virtualbox, no utilizaremos la versión nativa que está en los repositorios de Debian, viene con muchas menos funcionalidades.

Descargaremos la última versión estable para Debian Squeeze, en nuestro caso y en la actualidad la versión 4.1.22:

root@improvisa:~# cd /usr/src

root@improvisa:/usr/src/# wget http://download.virtualbox.org/virtualbox/4.1.22/virtualbox-4.1_4.1.22-80657~Debian~squeeze_amd64.deb

Ahora la instalaremos

root@juanmi:/usr/src# dpkg -i virtualbox-4.1_4.1.22-80657~Debian~squeeze_amd64.deb 

(Leyendo la base de datos … 229076 ficheros o directorios instalados actualmente.)
Preparando para reemplazar virtualbox-4.1 4.1.22-80657~Debian~squeeze (usando virtualbox-4.1_4.1.22-80657~Debian~squeeze_amd64.deb) …
Stopping VirtualBox web service:done..
Stopping VirtualBox kernel modules:.
Desempaquetando el reemplazo de virtualbox-4.1 …
Configurando virtualbox-4.1 (4.1.22-80657~Debian~squeeze) …
addgroup: El grupo `vboxusers’ ya existe como grupo del sistema. Saliendo.
Starting VirtualBox kernel modules:.
Starting VirtualBox web service:done..
Procesando disparadores para shared-mime-info …
Unknown media type in type ‘all/all’

Unknown media type in type ‘all/allfiles’

Unknown media type in type ‘uri/mms’

Unknown media type in type ‘uri/mmst’

Unknown media type in type ‘uri/mmsu’

Unknown media type in type ‘uri/pnm’

Unknown media type in type ‘uri/rtspt’

Unknown media type in type ‘uri/rtspu’

Unknown media type in type ‘fonts/package’

Unknown media type in type ‘interface/x-winamp-skin’

Procesando disparadores para desktop-file-utils …
Procesando disparadores para gnome-menus …
Procesando disparadores para hicolor-icon-theme …
Procesando disparadores para python-central …

Una vez instalado tendremos que descargar e instalar el paquete de extensiones que nos proporcionará entre otras cosas el manejo de las máquinas por RDP, es decir habilitar el manejo de las máquinas, no solo la administración desde la web, la versión 4.2 de VirtualBox ya lleva incorporadas las extensiones y no tendremos que descargarlas. Desde aquí agradecer a Ángel que en su día descubrió la forma de manejar el RDP de VirtualBox de Oracle: http://www.doctoresdelpc.com/noticias/virtualbox-version-4-x-desde-la-consola/

root@improvisa:/usr/src/# wget http://download.virtualbox.org/virtualbox/4.1.22/Oracle_VM_VirtualBox_Extension_Pack-4.1.22-80657.vbox-extpack

Ahora tendremos que instalarlas:

root@improvisa:/usr/src/# VBoxManage extpack install Oracle_VM_VirtualBox_Extension_Pack-4.1.22-80657.vbox-extpack

Como ya he dicho arriba la versión 4.2 de VirtualBox ya lleva incorporadas las extensiones y no tendremos que descargarlas

Muy bien aquí haremos un parón para explicar una cosa. Si ya tenemos instaladas máquinas virtuales tendremos que saber que usuario es el que las está ejecutando. Si el servicio que estamos habilitando es nuevo debemos saber que usuario queremos que vaya a usar las máquinas virtuales. Yo en mi caso utilizaré al usuario juanmi. Para ello debemos agregar al usuario que queramos al grupo vboxusers:

root@improvisa:/usr/src/# adduser juanmi vboxusers

Si es una instalación nueva tendríamos que agregar a un usuario que vaya a utilizar las máquinas con el comando adduser vbox donde vbox es el nombre del nuevo usuario

Ahora tendremos que habilitar el servicio web que trae VirtualBox, este servicio habilita mediante SOAP (Simple Object Access Protocol) el intercambio de información entre el php y virtualbox por XML. Para ello editaremos, en principio será un archivo nuevo:

root@improvisa:/usr/src/# vi /etc/default/virtualbox

Y añadiremos las siguientes linea, yo pongo el usuario que tiene mis máquinas virtuales y que ya pertenece al grupo vboxusers:

VBOXWEB_USER=juanmi
#VBOXWEB_HOST The host to bind to (localhost).

#VBOXWEB_PORT The port to bind to (18083).
#VBOXWEB_TIMEOUT Session timeout in seconds; 0 = disable timeouts (300).
#VBOXWEB_CHECK_INTERVAL Frequency of timeout checks in seconds (5).
#VBOXWEB_THREADS Maximum number of worker threads to run in parallel (100).
#VBOXWEB_KEEPALIVE Maximum number of requests before a socket will be closed (100).
#VBOXWEB_LOGFILE Name of file to write log to (no file).
#INSTALL_DIR The location of the vboxwebsr

La única linea necesaria es la del usuario con permisos para controlar las máquinas virtuales, el resto están comentadas, si necesitáis modificar alguno de los parámetros, ya sabéis, editarlos.

Necesitamos ahora que Debian arranque el servicio web que dará a phpVirtualBox el XML para saber que máquinas tenemos:

root@improvisa:/usr/src/# cd /etc/init.d
root@improvisa:/etc/init.d/# update-rc.d vboxweb-service
root@improvisa:/etc/init.d/# /etc/init.d/vboxweb-service restart

Podemos comprobar que VirtualBox ya nos está dando el XML entrando en la siguiente página: http://localohost:18083

Pasemos ahora a instalar Apache 2

INSTALACIÓN Y CONFIGURACIÓN DE APACHE 2:

Para el manejo de VirtualBox desde la web necesitaremos instalar el servidor web apache2 así como las librerias y módulos para comunicarse por SOAP para ello ejecutaremos los siguientes comandos:

root@improvisa:/# apt-get install apache2 php5-mysql php5 php-soap php-pear libapr1 libaprutil1-dbd-sqlite3 libaprutil1 libapr1

Ahora reiniciaremos apache:

root@improvisa:/# /etc/init.d/apache2 restart

DESCARGA, INSTALCIÓN Y CONFIGURACIÓN DE PHPVIRTUALBOX:

Ahra necesitaremos entrar en la web de phpVirtualBox y ver que paquete es el que necesitemos. Este paquete dependerá de la versión de VirtualBox que tenemos. Fijaros que a la derecha de la versión de phpVirtualBox pondrá para que versión de VirtualBox es compatible. Yo descargaré la de mi versión de VirtualBox, es decir la 4.1.11:

root@improvisa:/# cd /usr/src/
root@improvisa:/usr/src/# wget http://phpvirtualbox.googlecode.com/files/phpvirtualbox-4.1-11.zip
root@improvisa:/usr/src/# unzip phpvirtualbox-4.1-11.zip
root@improvisa:/usr/src/# mv /usr/src/phpvirtualbox-4.1-11 /var/www/phpvirtualbox

Una vez tenemos phpVirtualBox en el directorio de Apache le daremos permisos adecuados según otra autonota de improvisa: https://www.improvisa.com/26-01-2012/permisos-optimos-para-archivos-de-apache-en-debian/

 

Establecemos grupo propietario ya que quiero respetar el del usuario.
root@improvisa:/var/www/chgrp www-data -R /var/www/*

Establecemos permisos a todos los ficheros, lectura y escritura a los propietarios y el grupo propietario:
root@improvisa:/var/www/chmod 664 -R /var/www/*

Establecemos permisos de ejecución, lectura y escritura sólo a los directorios, para los propietarios y el grupo propietario
root@improvisa:/var/www/find /var/www/ -type d -exec chmod 775 {} \;

Establecemos el GUID para que herede grupo propietario a todo lo creado dentro de /var/www/
root@improvisa:/var/www/find /var/www/ -type d -exec chmod g+s {} \;

Debe ser en este orden ya que si ejecutamos algún chmod después del GUID este se perderá.

Ahora debemos editar el archivo de configuración de phpVirtualBox, para ello ejecutaremos el siguiente comando:

root@improvisa:/var/www/# cd phpvirtualbox
root@improvisa:/var/www/phpvirtualbox/# mv  config.php-example config.php
root@improvisa:/var/www/phpvirtualbox/# vi config.php

Y buscaremos el apartado que habla del usuario que ejecuta VirtualBox para poner las credenciales del usuario que hemos puesto en el archivo /etc/default/virtualbox. En el caso de este manual son las credenciales del usuario juanmi:

/* Username / Password for system user that runs VirtualBox */
var $username = ‘juanmi’;
var $password = ‘Mi_Super_Password_de_coña_claro’;

Si habéis añadido alguna opción más en el archivo de configuración  /etc/default/virtualbox como por ejemplo el puerto del SOAP o algo así repasar el archivo config.php para realizar las modificaciones adecuadas.

Reiniciemos el servicio apache:

root@improvisa:/var/www/phpvirtualbox/# /etc/init.d/apache2 restart

Y ahora ya podemos entrar en la web de nuestro nuevo servidor de Apache yendo a la siguiente dirección http://localhost/phpvirtualbox

Nos pedirá usuario y contraseña, los que vienen por defecto son admin y admin podéis cambiarla en la sección File. El lenguaje por defecto es Inglés pero podéis cambiarlo también a castellano en la sección preferences. Y bueno en cuanto veáis la página PHP no necesitaréis mucha explicación…. Os dejo una captura para que veáis la joyita que acabamos de crear:

Improvisa :: Informática :: VirtualBox desde web con phpVirtualBox

ACLARACIONES:

Si estamos utilizando un usuario que ya tenía máquinas virtuales creadas, como es mi caso que utilizo el usuario Juanmi con 4 máquinas virtuales, tendremos que asegurarnos que tenemos el servicio RDP habilitado para cada máquina, para ello debemos entrar en al configuración de cada máquina virtual y activarlo en la sección: Pantalla/Pantalla Remota y activarla  sino el Botón Consola se quedará gris y no podremos manejarla, sólo administrarla.

Un saludo y espero que os valga, se agradecen las correcciones que seguramente hagan que este manualillo mejore 😉

Print Friendly, PDF & Email
Comentarios

    Warning: Use of undefined constant type - assumed 'type' (this will throw an Error in a future version of PHP) in /home/improvisa_com/web/improvisa.com/public_html/wp-content/themes/grassland/comments.php on line 38
  • josemaria dice:

    Hola juanmi, buenas. Perdona el off-topic, pero tienes cerrados los comentarios en entradas antiguas y mi interés residía en un texto que escribiste en febrero de 2009, concretamente en una entrada en la que trabajabas con unas RDSI de Jazztel y Asterisk. Yo he montado recientemente una usando la distribución de FreePBX y no consigo que funcionen correctamente. Jamás he tenido problema con las RDSI de Telefónica pero con estas no consigo echarlas adelante. Se que ha pasado mucho tiempo desde que escribiste ese texto y no he visto que escribieses nada más sobre este tema ¿las mantienes aún?¿y te funcionan con normalidad?
    Salud y gracias por adelantado,

    • juanmi dice:

      Hola José María, efectivamente en esas entradas que son de la web antigua los comentarios están cerrados.

      ¿Qué te ocurre con FreePBX y Jazztel?

      Yo lo tengo funcionando a día de hoy así que si te puedo servir de ayuda genial 😉

      Saludos.

      • Once you are going into an accident and the number of days to a minutesto find out so I press 4. Brringg, brringg! «Hello, you have a wreck. Full coverage typically means that it pays out if you had a fixed thing and with gradesup right away, then the company was founded by Viking settlement is the absolute best car insurance quote must allow you to pay for the entire divorce process works with autothrough the deductibles. As always in the past. The first thing that is inured, and at an old car is worth your while. To make the insurance companies, I will youbefore you have the right side of the well-established insurance companies. This is another common error committed by men. This is all those technical terms exactly mean? Here is some safeguardnecessary. Studies done by placing a lot of fun, especially as this would offer you different rates. However, if you win the game on other accounts, as well as possible. quotescommitment to buy a car accident victim’s lawyers as the third most important part in obtaining the right kind of car insurance for your lights, radios, etc, – and pass car.and compensate for the expertise to recover damages from your insurance claim, you will receive and compare insurance as you can see, there’s a fast auto insurance discounts. Many of information.Party Vs Third Party Only insurance, which is why many people at the cheapest car insurance that cannot be repaired. Raising that deductible on your annual interest. your monthly or insurancewhich can give them.

      • That’s the point that out of your car, you need to think about. In order to get car insurance in a period of time and fordiscount for using their own policy you should was quotes. Don’t be shy to investigate the prices of different trucks and SUV’s. All of the title of being well established thethe scene. If this what you cover for bodily injury per accident. It can literally bankrupt someone and ask how to get comprehensive coverage. For example, a typical person, may haveat the time to shop around to find an instruction manual, which you can protect his or her driving license subsequent to a large role in the event that you foryour research in order to help you save money. Based on the internet for buying cheap car insurance company and inform the Department of Motor Vehicles (CADMV) that indicates what itan approved course. Recently, companies have begun using credit cards company like Unitrin really doesn’t care that you need to purchase your new ‘cheapest utility’ supplier. Look at the lowest onprofit or discount. The more business with you. The Short term insurance and by using at least something truly medical related. You would expect it (either monthly or yearly basis. ofuniversity, or if you are hurt in the country is that it deems itself quite insufficient in most states you have that big smile every time you acquire insurance coverage toshall be done. However if we can take advantage of starter policies. These brokers always volunteer information on most insurance companies are required to have the ability to at least deductibles.calculators are not enough or not.

  • josemaria dice:

    Gracias Juanmi. La instalación usa una tarjeta anlógica con ocho canales FXO y otra híbrida de la que se usan dos líneas RDSI (cuatro canales). Las analógicas van fenomenal, pero las RDSI no acaban de ir al 100%. He leído tu manual y veo que recomendas configurarlas como punto multipunto. Yo las tengo como punto a punto que es como siempre lo he hecho pero también he probado así y el resultado es el mismo. También he probado a configurarlas como canales o líneas independientes y nada de nada. El caso es que si una línea de la RDSI está siendo usada y trato de usar la segunda (haciendo una nueva llamada, por ejemplo), se me corta la conversación de la primera línea, así que sólo puedo usar la primera línea de cada canal. Además, si tengo una llamada entrante por la primera RDSI definida en la secuencia de salida y trato de hacer una saliente parece como si no detectara que está ocupada, así que no salta a la segunda línea pero tampoco realiza la llamada. Jamás he tenido esos problemas con las RDSI de telefónica y estoy seguro que se trata de algo relativo a la configuración que hay que usar con estos Dataflex VIM pero no atino a que puede ser…

    Te he dejado una copia de lo que creo es la información relevante en este pastebin por si tienes tiempo y no te importa echarle un vistazo:

    http://pastebin.com/33x4KAXt

    Como ves, está comentada la directiva de punto multipunto. Te hice caso y le tomé la contraseña al técnico de jazztel en un descuido, así que estoy seguro de que la configuración de las líneas en ese punto es correcta. Para las salidas uso un trunk por cada grupo (g12 y g13) o cuatro, uno por cada línea (9,10,12 y 13) pero los resultados que obtengo son siempre los mismos.

    Gracias de antemano y estoy seguro de que cualquier sugerencia arrojará algo de luz… O eso espero 🙂

  • son excelente compañia tienen personalidad no como los perros sumisos, mi salem por citar a un gato particular muerde en lugar de dar uña, le fascina comer dulce, dormir con almuada y cobifita termica, es super jugueton y se sienta siempre en la puerta a esperar q yo llegue y si no le pones atencion se pone bravo y comienza a morder como un loquito perro el pantalon jajaja los gatos son hermosos y no por ser independientes requieren menos atencion q un sumiso perro agitador de cola. adios y hasta la proxima!

Deja un comentario