26 de abril de 2009

Instalación de un Servidor de Desarrollo - Parte 1: Virtualizando Linux con VirtualBox

Algunas veces queremos probar el funcionamiento de nuestros sistemas en algún sistema operativo distinto al sistema que tenemos instalado en nuestras máquinas. Comunmente esto ocurre cuando nuestro ambiente de desarrollo se encuentra en un sistema operativo y nuestro ambiente de producción o de deploy se encuentra en otro. O si queremos comprobar que nuestra aplicación funcione en distintos ambientes.

Esto ocurre frecuentemente cuando desarrollamos en Windows e instalamos en un servidor que se encuentra en algún Unix (Linux, HP-UX, Solaris, etc.). Es por eso que es importante que podamos intercambiar de un sistema a otro de forma rápida, y en nuestra misma maquina, mientras nos encontramos en etapas de desarollo.

Es en estos casos en los que es útil usar la virtualización de un sistema. Existen varias aplicaciones que nos permiten hacer esto. Una de ellas que es gratuita y, en lo personal me parece, es fácil de usar y configurar es VirtualBox de Sun Microsystems.


VirtualBox es una aplicación que nos permite virtualizar casi cualquier sistema operativo y podemos instalarlo en casi cualquier sistema operativo.

En este post mostraré como instalar y configurar la última versión de VirtualBox (actualmente la 2.2.0) en una máquina con Windows Vista para virtualizar una máquina con Debian 5.0 (nombre clave lenny), estas mismas instrucciones servirán para Ubuntu que está basado en Debian. También deberían servir para la mayoria de los Linux, tratare de dar las instrucciones para otras distribuciones siempre que sea posible. Además configuraremos algunos directorios compartidos entre estos dos sistemas para que podamos hacer un intercambio rápido de archivos, y configuraremos la red para que ambos se "vean".


Nota: Al día siguiente de publicar este post salió la versión 2.2.2 de VirtualBox. El proceso de instalación y configuración es basicamente igual, con excepción de la configuración de red en la que se modificó ligeramente la interfaz gráfica. En la sección correspondiente (sección 5) explicaré esta diferencia.


El post siguientes mostraré además cómo instalar en nuestro Debian algunas aplicaciones para convertirlo en un servidor de pruebas y de producción para aplicaciones web con Java, e instalaremos algunas aplicaciones para trabajo colaborativo, y para monitorear el avance del desarrollo.

Comencemos entonces con la instalación de VirtualBox.

1 - Instalación de VirtualBox

Lo primero que haremos es descargar la última versión de VirtualBox desde esta página. Bajen la versión más adecuada para el sitema en el que estén trabajando. En mi caso será VirtualBox 2.2.0 for Windows hosts.

Aprovecho para dar algunos términos:
  • Cuando hablamos de host (anfitrión) nos referimos al sistema en el que será instalado VirtualBox, en mi caso Windows.
  • Cuando hablamos de guest (huésped) nos referimos al sistema que será instalado en VirtualBox, en este caso Debian.
Una vez descargado VirtualBox simplmente realizan la instalación normal en el sistema en el que están trabajando (en mi caso es dar doble click al ejecutable que acabo de descargar).

Con esto se abrirá un wizard que ayudará durante el proceso de instalación. Les recomiendo que no hagan la instalción cuando estén bajando algún archivo grande de Internet ya que durante el proceso puede ocurrir que se desconecte su red.


Ninguna de las opciones de instalación es importante así que pueden seleccionar las opciones por default, pero cuando lleguen al paso de la adventencia de las interfaces de red:


Digan que si. Esto es importante para que los dos sistemas puedan "verse" en la red. Es por este paso por el que podemos perder momentaneamente la conexión a la red.

Después de algunos pasos más comenzará la instalación de VirtualBox.


Cuando les pregunten si quieren instalar los controladores para dispositivos USB también digan que si. Esto les permitirá ver los dispositivos USB conectados en su máquina desde su sistema huésped:


Lo mismo cuando pregunte de los controladores de red:


Lo mismo para los puentes de red:

y para los adaptadores de red ^-^!:


Y finalmente después de unos minutos tendrán VirtualBox instalado en su computadora ^-^.



Habiliten la opción "Start Sun xVM VirtualBox after installation" y presionen el botón "Finish". Con esto se abrirá VirtualBox. Seguramente les aparecerá un formulario de registro como este:


Solo llenenlo y presionen el botón "Confirm". Finalmente verán la siguiente pantalla, con lo que VirtualBox ha quedado instalado existosamente:


Ahora instalaremos Debian como sistema huésped.


2 - Instalación de Debian

Antes de instalar Debian debemos descargar Debian ^-^, por lo que nos dirigimos a la web oficial.

Existen distintas opciones para obtener Debian, entre las que se encuentran descargar imagenes de CDs o DVDs. Creo que esa es la mejor opción para la mayoría de nosotros y es la que usaré.

Descargaré la "imagen de CD mínima de arranque" e instalaré lo que necesite por mi cuenta conforme lo necesite.

Mi máquina tiene un procesador intel así que descargaré la versión correspondiente.

Una vez terminada la descarga tendremos un archivo llamado "debian-501-i386-netinst.iso". El cual es una imagen de un disco. Existen varias opciones para su instalación:
  • Pueden quemar esta imagen a un CD y usar este CD para la instalación.
  • Usar una aplicación que permita montar imagenes de disco en formato iso, como Virtual CloneDrive de SlySoft (la cual es gratuita).
Yo usaré la última opción. Después de instalar Virtual CloneDrive instalaré una unidad virtual de discos.


Ahora tengo dos unidades de disco, una física y una virtual.

Será en esta última en la que montaremos la imagen que acabamos de descargar. Hacemos click derecho en la unidad virtual con lo que se abrirá un menú contextual. Veremos que en este menú hay una entrada que dice "Virtual CloneDrive". Seleccionamos esta opción y se mostrará otra opción que dice "Mount..." seleccionamos esta opción:


Buscamos y seleccionamos el archivo "debian-501-i386-netinst.iso" que acabamos de descargar, con esto ya tendremos montada la imagen de disco.

Si se abre la ventana de reproducción automática solo cierrenla.

Ahora regresemos a VirtualBox. Ahi veremos un gran botón que dice "Nueva" (nueva máquina virtual):


Presionamos este botón con lo que se abrirá la ventana del "Asistente para la creación de una nueva Máquina Virtual":


Presionamos el botón "Siguiente >" para iniciar el proceso de creación. Lo primero que debemos hacer es dar un nombre a la nueva máquina virtual. Este será el nombre con el que se identificará a esta máquina virtual. También seleccionamos el tipo de sistema huésped que vamos a instalar, en este caso Linux, y la versión, en este caso Debian:


El el siguiente paso debemos decir cuánta RAM se le asignará a la máquina virtual. Los requerimientos de hardware de Debian indican que requiere por lo menos 512 MB de RAM, así que yo le daré el doble. Dependiendo de la distribución que esten tratando de instalár dederán verificar los requerimientos particulares:


Después deberemos seleccionar el disco duro virtual para instalar el sistema operativo huésped. Como no he creado ninguno aquí deberé seleccionar la opción de crear uno nuevo.



Al presionar el botón "Siguiente >" se abrirá la ventana del "Asistente para la creación de un nuevo Disco Virtual":


Lo primero que haremos es indicar qué tipo de disco duro virtual queremos crear. Hay dos alternativas: La primera es un disco que expande de forma dinámica la capacidad de almacenaje conforme se vaya necesitando. La segunda es un disco duro de un tamaño indicado. Useré la primera ya que no quiero dar un espacio más grande de que vaya a terminar usando, pero tampoco quiero dar uno muy pequeño y ver después que necesito más espacio.


En el siguiente paso daremos un tamaño inicial al disco duro virtual. El tamaño por default es de 8Gb, yo lo dejaré en 4Gb.


El último paso es un resumen de con qué caractarísticas y en dónde estará el disco duro virtual. Presionamos el botón "Terminar" para regresar al asistente para la creación de la maáquina virtual, la cual nos mostrará otro resumen:


Al dar click en "Terminar" veremos que ya tenemos la nueva máquina virtual creada y lista para usarse:


Aún debemos hacer una cosa más para poder trabajar con nuestro sistema operativo huésped, y es... instalar el sistema operativo huésped. Para esto usaremos la imagen que tenemos montada en nuestra unidad virtual de discos.

Hacemos click en el botón "Configuración" de nuestra máquina virtual:


para abrir la ventana de configuración.


Esta será la ventana el la que configuraremos varios elementos, como la red o los directorios compartidos. En este momento lo único que haremos será configurar la máquina virtual para que use nuestra unidad virtual de discos. Vamos a la sección de "CD/DVD-ROM" y habilitamos la opción "Montar la unidad de CD/DVD", seleccionamos la opción "Unidad CD/DVD Anfitrión" y escogemos la únidad en la que se encuentra la imagen de nuestro disco (en mi caso es la G:):


Presionamos el botón "OK" y ahora estamos listos para iniciar con el proceso de instalación. Precionamos el botón "Iniciar" con lo que se abrirá una nueva ventana, que mostrará nuestro sistema huésped, que es este caso arrancará desde el CD de la unidad virtual, por lo que comenzará con el proceso de instalación.


La instalación depende del sistema operativo, la distribución, y la versión que esten instalando así que no la mencionaré. Pero en particular la instalación de debian toma algunas horas, en mi caso fueron como 5, pero esto depende de los paquetes que quieran instalar, la velocidad de su conexión a Internet (si es que requiere bajar más paquetes) y la velocidad de la máquina anfitrión.

Importante: Si estas instalando tu sistema huésped en forma gráfica tal vez notarán que no podrán sacar su ratón del sistema huésped. Esto es normal ya que el sistema ha tomado el control de las entradas del ratón. Para poder recuperar su ratón en el sistema anfitrión deben presionar la "host key" que varia dependiendo del sistema operativo en el que esté el anfitrión. En el caso de Windows es la tecla Ctrl derecha. Para no tener que estar haciendo esto cada vez que queremos cambiar de un sistema a otro es necesario instalar en el huésped unas aplicaciones propias de VirtualBox conocidas como las "Guest Additions" que será lo que haremos en el siguiente paso.

Continuemos con la configuración de los Guest Additions o "Aplicaciones del Huésped" de VirtualBox.


3 - Instalación de las "Guest Additions"

Algo muy importante que deben saber al usar VirtualBox es que existe una "tecla maestra" (o host key) que nos permite interactuar con VirtualBox. Esta tecla depende del sistema anfitrión. en Windows es la tecla Ctrl del lado derecho del teclado. Al presionarla podremos intercambiar entre el control del ratón en el sitema anfitrión y el sitema huésped, cambiar el huésped a pantalla completa, entrar en modo "fluido" (un modo muy interesante que nos permite tener ventanas de ambos sistemas conviviendo en el mismo entorno al mismo tiempo), intercambiar datos en el portapapeles, etc.

Algunas de estas funciones no están "activadas" por defaúlt, es necesario que instalemos una serie de aplicaciones especiales, en el huésped, que VirtualBox nos proporciona. Estas aplicaciones se conocen como las "Guest Additions".

Estas nos permiten además arreglas algunas cosas en el sistema huésped, como por ejemplo, en la siguiente imagen pueden ver que el escritorio en mi sistema huésped es más grande que la ventana de VirtualBox en la que lo veo:


No solo se está desperdiciando espacio importante a los lados, sino que no veo mi barra inferior ni este aviso:


Con las Guest Additions también corregiremos esto.

Comencemos con la instalación. El sistema como está en este momento no es apto para la instalción. Debemos configurarlo un poco. Mostraré esto para que quede más claro.

Lo primero que haremos es ir al menú "Dispositivos -> Instalar "Guest Additions" (Aplicaciones del Huésped)...":


Con esto se montará un disco virtual que tiene las "Guest Additions":


A partir de ahora trabajaremos como superusuario, así que abriremos una terminal y nos loguearemos como tal:


Nota: A partir de aqui lo que haré es para Debian. En otras distribuciones debe funcionar de forma similar o debe haber equivalentes.

Entramos a la unidad de disco que se ha montado (/media/cdrom0/). Si vemos el contenido del disco nos encontraremos con algo como esto:


Que son los "instaladores" de las Guest Additions para los distintos sistemas operativos. El que me interesa, en este caso, es la versión la Linux de 32 bits (VBoxLinuxAdditions-x86.run). Trataré de ejecutar desde aquí el instalador (./VBoxLinuxAdditions-x86.run):


Como vemos, me da un error: "Permiso denegado". Esto es porque este directorio no tiene permiso de ejecución (¿seguridad?). Podemos solucionar esto dando permisos al directorio o, como yo lo haré, copiando el instalador a otra ubicación que si tenga permiso. Yo lo moveré al escritorio del usuario alex (cp VBoxLinuxAdditions-x86.run /home/alex/Desktop/VBoxLinuxAdditions-x86.run). Y ejecutaré el instalador desde aquí:


Como vemos me da más errores. Dependiendo de la distribución y versión que estén tratando de instalar seguramente obtendrán un error distinto ^-^. Las Guest Additions requeren la versión 2.6.x del kernel de linux, junto con sus archivos de construcción (build) y cabeceras (headers). En mi caso la versión del kernel es correcta, lo que me facilitará un poco el trabajo, pero no tengo los archivos build ni las cabeceras. Además de que no tengo instalado make ni un compilador gnu, así que tendremos que instalarlos.

Podríamos instalar cada uno por separado (gcc cpp g++ libc6-dev make), pero afortunadamente Debian proporciona un paquete llamado "build-essential" que ya los proporciona (si su distribución no tiene algo similar pueden instalar las aplicaciones que mencioné al principio de este parrafo). Para instalarlo usaremos "apt-get".

Como queremos obtener las últimas versiones de los paquetes lo primero que haremos es actualizar la base de datos de apt ("apt-get update") y después instalaremos las últimas actualizaciones de los paquetes ya instalados ("apt-get upgrade"), antes de instalar "build-essential":

apt-get update
apt-get upgrade

apt-get install build-essential





Después de unos minutos terminará la instalación. Ese fué solo el primer paso, ya tenemos instalado el compilador gnu y make. Aún falta que instalemos los archivos build y cabeceras del kernel.

Instalaremos el paquete "module-assistant", que preparará el sistema para que las Guest Additions puedan recompilar los módulos necesarios del kernel ("apt-get install module-assistant"). Después configuraremos el sistema para construir estos módulos del kernel ("m-a prepare"):

apt-get install module-assistant
m-a prepare





Después de unos minutos todo estará listo para instalar las Guest Additions. Volvemos a ejecutar el instalador (./VBoxLinuxAdditions-x86.run):


Esta ves todo se instalará bien ^-^. Ahora solo reiniciaremos el sistema huésped (reboot) y veremos un gran cambio.

Lo primero que notarán es que ahora la integración del ratón con el sistema huésped es directa (no más Ctrl derecho ^-^). Además ahora el espacio está mejor aprovechado:


De hecho, si presionan la "host key" + A y luego la "host key" + G, se aprovechará aún mejor.

A continuación agregaremos un directorio compartido y después configuraremos la red para poder ver nuestro sistema huésped desde el sistema anfitrión y conectarnos a través de putty, usando ssh.


4 - Agregando Directorios Compartidos

Lo primero es elegir un directorio en el sistema anfitrión para compartir con el sitema huésped. En mi caso crearé un directorio en los directorios compartidos de Windows (que en vista están en "C:\Users\Public\"), llamado "compartidos VirtualBox".


Crearé un archivo de texto llamado "prueba.txt" que contendra la línea "^-^" para que podamos comprobar que el directorio efectivamente se compartió.

Ahora iremos a VirtualBox, al menú "Dispositivos -> Directorios compartidos...":


Con esto se abrirá la ventana de "Directorios Compartidos":


Presionamos el botón para agregar un nuevo directorio compartido, con lo que se abrirá una ventana en la que debemos indicar el directorio que queremos compartir, y un nombre lógico para identificarlo dentro del sistema huésped. En el campo "Folder Path" indicamos el directorio de nuestra máquina ("C:\Users\Public\compartidos VirtualBox" en mi caso), y en "Folder Name" el nombre lógico del directorio (que en mi caso será "compartidosVB"). Habiliamos la opción "Hacer Permanente" para... hacer este directorio permanentemente compartido:


Presionamos el botón "OK" y vamos al sistema huésped. Creamos un directorio para montar posteriormente el directorio compartido (en mi caso será "/mnt/compartidos"):

mkdir /mnt/compartidos

y montamos el directorio con el siguiente comando:

mount.vboxsf compartidosVB /mnt/compartidos/

Ahora nos dirigimos la ruta "/mnt/compartidos" y listamos su contenido. Debemos ver el archivo "prueba.txt" que creamos hace unos momentos:


Comprobando que el directorio ha quedado compartido ^-^.


5 - Configurando la red

Para terminar configuraremos la red para que nuestro sistemas anfitrión y huésped se "vean". Para hacer eso primero debemos apagar el sistema huésped. En VirtualBox presionamos el botón "Configuración":


En la ventana que se abre seleccionamos la categoría "Red". Ahi tendremos 4 pestañas, de "Adaptador 1" hasta "Adaptador 4". Seleccionamos "Adaptador 1" si es que no lo está, y debemos ver algo como esto:


Esto quiere decir que estamos saliendo a Internet desde una NAT en el sistema huésped, por lo que, aunque tenemos Internet en el huésped, este no está en la misma red que el anfitrión. Corregiremos esto en unos instantes.

Cambiamos el "Adapter Type" de "PCnet-FAST III" a "Intel PRO/1000 T Server" y "Attached to" de "NAT" a "Bridged Network" (si están usando una versión de VirtualBox anterior a la 2.2 deben seleccionar "Host Interface").


Luego presionamos el pequeño ícono de destornillador para abrir la ventana de detalles (en versiones anteriores de VirtualBox esto no existe, los detalles se ven en la misma pestaña que se está configurando):

Cambiamos el valor de "Bridged Network Adapter" de lo que tenga a la interface en la máquina anfitrión que nos dá acceso a Internet. En mi caso es una tarjeta inalambrica llamada "Dell Wireless 1510 Wireless-N WLAN Mini-Card", así que seleccionaré esa. También habiliten la opción "Cable connected":



En la versión 2.2.2 de VirtualBox esta pantalla cambia un poco. En la nueva versión se ha reemplazado el ícono del destornillador por un engrane, que ahora solo sirve para mostrarnos la dirección MAC. Además en vez de colocar el nombre de la tarjeta que nos dá salida a Internet en una ventana separada podemos colocarlo aquí mismo. La configuración de la red en VirtualBox 2.2.2 queda de la siguiente forma:



Presionamos "OK" y esto es todo, nuestra red está configurada ^-^. Ahora iniciamos nuestro sistema huésped, abrimos una consola y nos logueamos como superusuario.

Revisamos nuestra ip con el comando ifconfig, y veremos en la interface de red eth0, entre otros datos:



Aquí vemos que en Linux mi ip es 192.168.0.7. Ahora veamos mi ip en Windows con el comando ipconfig:


En Windows mi ip es 192.168.0.2. Usemos un ping para ver si las dos máquinas se ven. Usaré el modo fluido ("tecla host" + L) para que sea más claro:

Como vemos ambas máquinas se ven perfectamente ^-^. Por lo que podremos usar la máquina con Linux como servidor. Ah, y por si alguien tenia dudas, la máquina con Linux continúa teniendo salida a Internet (era un problema común en VirtualBox que configurabamos las máquinas para que se vieran, pero nos quedabamos sin Internet en el huésped, pero no más =D):


Para terminar este largo post, veremos como instalar un servidor de ssh en nuestro sistema huésped, para poder conectarnos a el usando putty (que es como nos conectaremos a partir de los siguientes posts).


6- Instalando un servidor de SSH

Si intentamos conectarnos a nuestro sistema huésped así como está, usando putty, veremos el siguiente error:


Esto es porque, a pesar de que nuestros sistemas se ven, el sistema huésped (al que estamos tratando de conectarnos) no tiene un servidor de ssh para atender nuestras peticiones.

Afortunadamente instalar uno es muy simple, haremos uso nuevamente de "apt-get". Regresamos a nuestro sistema huésped y ejecutamos, con permisos de superusuario, el comando "apt-get install openssh-server".


Una vez que termine la instalación podremos volver a intentar conectarnos. Esta vez veremos otro mensaje, una alerta de seguridad. Solo la aceptamos:


Se nos preguntará el nombre de usuario y contraseña para ingresar a nuestro servidor ^-^.


Ahora podremos trabajar en nuestro servidor Linux de forma "remota". Aún falta instalar servidores, bases de datos, algunas otras herramientas, etc. Pero eso será en otros tutoriales. Por ahora hemos terminado.

Espero que les sea de utilidad. No olviden dejar sus dudas, comentarios, y sugerencias.

Saludos

Entradas Relacionadas: