WINDOWS AZURE - CREAR SITIO WEB EN SERVIDOR LINUX CENTOS

Hola amigos, tal como lo había prometido en mi última entrega hoy vamos a ver los pasos para crear un sitio web básico en una máquina Linux creada en Azure. Ya lo hicimos con Windows Server 2012 y fue bastante fácil y divertido.

Lo primero que debemos hacer es crear una máquina nueva Linux tomando como base una imagen ya predeterminada. Como ya hablé de ese mismo tema en un post anterior considero que no vale la pena repetir los mismos pasos, por ello les pido que se remitan a http://blogs.technet.com/b/itprocol/archive/2013/01/18/windows-azure-191-que-puedo-hacer-como-it-pro.aspx en donde se ve cómo crear una máquina desde cero.

Sólo hay que tener en cuenta que en el caso de las máquinas Windows el usuario que se crea por defecto es Administrator y al momento de la creación de la máquina se nos pide asignar una contraseña a este usuario, pero en el caso de las máquinas Linux de Azure se nos pide la creación y asignación de contraseña a un usuario que no es el administrador de la máquina. El usuario con más poder en Linux se denomina root.

En este ejemplo vamos a seleccionar de la galería de máquinas preinstaladas una máquina CentOS

Galería de imágenes - Linux CentOS

Una vez la hayamos seleccionado, el siguiente paso es definir el tamaño de la máquina y el nombre del usuario (que no es un usuario totalmente privilegiado):

Definición de usuario

Aquí estoy usando abarba como nombre de usuario.

El resto de pasos ya es conocido: (ver http://blogs.technet.com/b/itprocol/archive/2013/01/18/windows-azure-191-que-puedo-hacer-como-it-pro.aspx)

Aquí defino el nombre de la máquina y en dónde va a estar almacenada:

Nombre de máquina CentOS

Un clic más y ya estoy listo para crear la VM:

Máquina CentOS lista para ser creada

Una vez se haya creado la máquina, se ven los datos de la misma:

En este caso los datos más importantes son el nombre público o FQDN de la máquina que en este caso es centos01-barba.cloudapp.net y su IP pública 168.62.165.114.

Por defecto en las máquinas Linux de Azure sólo se abre el puerto 22 que corresponde a SSH. Para tener acceso a la máquina puedo usar un cliente como putty que se descargar de http://www.putty.org/

Una vez se haya descargado se puede tener acceso a la máquina ejecutando el programa y colocando los parámetros de IP y puerto (22) como se ve en la siguiente imagen:

Datos de acceso a máquina a través de Putty

Observen que puedo salvar la sesión para su posterior uso, en este caso le asigné el nombre de Azure1.

Tan pronto presiono Open empiezo a establecer conexión con la máquina. Si mi proxy no tiene restricciones para el puerto TCP 22 debo algo similar a:

Cuando ingreso por primera vez se genera una llave RSA2 y debo presionar Yes para almacenar dicha llave en mi máquina local y así no será solicitada la próxima vez que solicite conexión, una vez presione Yes se me pedirá usuario y contraseña:

Aquí debo escribir el usuario y contraseña que asigné a la máquina, en mi ejemplo fue abarba:

Ya estoy como el usuario abarba en la máquina, sin embargo este usuario no es privilegiado, de modo que cuando requiera hacer una tarea privilegiada -como lo es instalar un servidor web- necesitaré tener privilegios de root, que es el usuario más privilegiado o superusuario de Linux.

Para tener temporalmente privilegios de root uso el comando sudo, simplemente escribo sudo <comando> y se me pedirá la contraseña del usuario no privilegiado, en este caso abarba.

Las máquinas Linux en Azure vienen instaladas de una manera básica y sin paquetes adicionales, como en este ejercicio queremos instalar el servidor web Apache, debemos instalarlo usando la utilidad YUM, que guardadas las proporciones es como un Windows Update, entonces debo escribir sudo yum install httpd:

En realidad el servicio se denomina httpd pero es el mismo Apache en la práctica.

Tan pronto descargue los paquetes asociados al servicio se verá una pantalla preguntando si se quiere proceder con la instalación, es necesario confirmar con Y

El proceso de instalación va a iniciar:

Tan pronto termine se verá algo como lo siguiente:

No queda más sino subir el servicio de httpd con el comando sudo service httpd start:

Por defecto las máquinas vienen con el firewall denominado iptables arriba, el cual no tiene el puerto 80 abierto. Para verificar los puertos abiertos y el servicio usamos sudo iptables -nL

No me voy a internar en los comandos para habilitar puertos en iptables, de modo que lo que voy a a hacer es detener el servicio con el comando sudo service iptables stop

También dejo detenido el servicio de manera permanente usando sudo chkconfig iptables off:

Ahora deshabilito el SELINUX, que es un contexto se seguridad en donde viene enmarcada la máquina y que por defecto viene en las máquinas Linux de Azure.

Para tener una máquina más segura se debe dejar habilitado SELINUX, pero en este ejercicio lo voy a dejar deshabilitado, si se quiere más información al respecto se debe consultar toda la documentación que hay en la red al respecto.

Lo hago con el comando setenforce 0

Por ahora ya estoy casi listo.

Ahora regreso al portal de Azure y veo qué reglas o ENDPOINTS están activos para mi máquina. Como ya lo he mencionado, por defecto en las máquinas Windows sólo viene habilitado el puerto TCP 3389 de Terminal Services y en las máquinas Linux el puerto TCP 22 que corresponde a SSH.

Necesito entonces abrir el puerto 80 (HTTP) y para ello en las propiedades de la máquina selecciono ENDPOINTS

Selecciono ADD ENDPOINT

Presiono la flecha

Aquí lo más importante en realidad es el puerto público que es el 80, pero yo usé HTTP como nombre del ENDPOINT para tener un mejor control en mi caso, pero pude haber usado WEB o cualquier otro nombre: 

Espero que el proceso termine y ¡ya estoy listo para usar mi sitio web!

Ahora al abrir con un navegador la URL http://centos01-barba.cloudapp.net/ veré la página de prueba de Apache sobre CentOS

Bueno, espero que les haya gustado.

Como comentarios finales:

Por supuesto que si se requieren otros componentes como PHP, MySQL, Perl, etc es necesario instalarlos e incorporarlos al servidor web.

También si observan en el portal de Azure hay maneras más fáciles de crear sitios web que ya vienen predefinidos y sin necesidad de descargar paquetes y configurar el sistema operativo, pero el espíritu de este documento era el de reflejar los pasos para crear un sitio web desde el punto de vista de IaaS (Infrastructure as a Service).