Aplicaciones no .NET en Azure

Tienes un intérprete para tu lenguaje? Pues puedes hace un proyecto con él y alojarlo en Windows Azure. Esta capacidad de subir aplicaciones no .NET fue anunciada en el MIX 09 en Las Vegas.

Estuve siguiendo un laboratorio del Azure Training Kit – April que mostraba como hacerlo. Pero creo que tiene un problema, el laboratorio está demasiado orientado a línea de comandos y archivos de texto, cuando todo se puede hacer perfectamente bien desde Visual Studio.

Esta bien saber que lo podemos hacer con línea de comandos, editando archivos de configuración, configurando el IIS con appcmd, ejecutando aplicaciones que empaquetan el servicio para subirlo a la nube y blah blah blah… es cool, pero no es realista 😉 Sinceramente, si tienes la posibilidad de utilizar Visual Studio, te vas a ahorrar muchos rompederos de cabeza. A si que, venga! a comprar todo el mundo! que si no a ver que van a comer mis gatos! 😉

Volviendo a la aplicación no .NET en Azure. Yo escogí PHP para probar, ¿por qué? Pues porque sé que funciona sin problemas sobre fastCGI y ESE es el requisito para subir aplicaciones no .NET a Azure, que trabajen bien con fastCGI

Aquí esta el resultado!

image

 

( si, lo sé, no es ninguna joya de aplicación, pero lo primero es probar que funcione el lenguaje per sé, no? )

Y cómo se hace esto?, pues en unos sencillos pasos ( poned tono de bricomanía )

 

Instalar PHP, sssta tirao!  vamos a la página de www.php.net y bajamos el último paquete non-thread safe… que por qué? Descomprimidlo en c:PHP

Turno de habilitar fastCGI en el servidor web y asociar la extensión .php con fastCGI hay innumerables guías que te ayudan a hacerlo, configurar php no es el objetivo del post, a sí que os referencio una…. http://learn.iis.net/page.aspx/246/using-fastcgi-to-host-php-applications-on-iis-70

En teoría, ya podemos correr aplicaciones php en nuestro servidor, podéis probar localmente con la típica página de prueba <?php phpinfo(); ?> para confirmar que todo funciona correctamente.

Ahora que sabemos que PHP funciona en el equipo…al lío con la aplicación!

Abrimos Visual Studio 2008 y creamos un proyecto de tipo Cloud en blanco. Le añadimos un proyecto de tipo CGIWebRole y finalmente sobre el proyecto en blanco, referenciamos el CGI web role existente. Para tener estos tipos de proyectos necesitaréis instaladas las Azure tools for vs

 

image

Añadimos una página PHP que haga lo que quieras Podéis reutilizar la página del phpinfo de antes.

Adecuamos los ficheros de configuración Hay que indicarle al fabric/Azure de algún modo, que la página que estamos subiendo se va a interpretar con un programa específico, que no intente procesarlo de forma tradicional. Abrid el Web.roleconfig del proyecto ( es un archivo especial que no aparece en otros tipos de proyectos de Cloud, es para configurar el comportamiento del servidor ) y aseguraos de que tenemos referenciado el intérprete, en nuestro caso, algo tal que así

image

y también editamos el Web.config, para añadir un handler a aplicaciones .php y para configurar la página por defecto ( si no lo hacemos intentará default.aspx y siempre tendremos que poner a mano el nombre de nuestra página php). Para la página por defecto…

image  

y para el handler… en la sección de system.webserver  / handlers  añadimos uno nuevo

image

finalmente, en el serviceDefinition.csdef especificamos que enablenativecontentexecution=”true”

image

Copiamos en intérprete en el proyecto

En el paso anterior habéis visto que se utiliza una ruta específica….  %RoleRoot%phpphp-cgi.exe  Tenemos que asegurarnos de que el intérprete está en esta ruta. De modo que nos ponemos sobre el proyecto y abrimos la carpeta en el explorador. Vamos a c: y copiamos la carpeta PHP en el directorio del CgiWebrole (Esto es a lo bruto, lo suyo es copiar sólo lo necesario). No la veremos en el explorador de soluciones hasta que  hasta que hagáis click en Show All Files

image

Entonces os ponéis sobre la carpeta php y botón derecho > Include In Project 

image

Y  A compilar!!!

{{

puede que os encontréis con el siguiente mensaje de error

CCT: Error: FastCGI module at C:Windowssystem32inetsrviisfcgi.dll with version 7.0.6001.18000 is not up-to-date.
CCT: The system is missing a prerequisite to execute the service. Please see the release notes.

Don´t panic!  instalad este FIX y listo http://support.microsoft.com/kb/967131 Como referencia, mi versión de la iisfcgi.dll es la 7.0.6001.22365

}}

Volved a compilar… y a que ahora funciona? 😀  Ya sólo nos queda desplegar la aplicación en la nube.

En las propiedades del proyecto, en la sección de Portal, introducid vuestro Application ID de Azure

image

grabamos y botón derecho sobre la solución > Publish!

Esto nos abrirá el portal para que subamos los archivos de descripción y de configuración del servicio. Dado que hemos incorporado el intérprete al proyecto, llevará un poco más de tiempo el upload, pero todo es cuestión de paciencia.

 

image

Una vez este todo subido, acordaos de hacer click en Run y listo! en unos minutos tendréis brillando vuestra aplicación PHP en el entorno de Staging de Azure 🙂

image

a que no es tan difícil?

Happy Hacking!

~ds

PD –> Por cierto… para los acérrimos del PHP.. que sepáis que hay un Visual Studio para PHP 😉  http://www.devsource.com/c/a/Add-Ons/VSPHP-Brings-PHP-Coding-Power-to-Visual-Studio/

PD 2 –> Estás planteándote hacer cosas para Azure? Estás subiendo algún proyecto a producción?  Contáctame por el blog! puede que tengamos algún recurso que ofrecerte 😉

Publicado por

Un comentario en “Aplicaciones no .NET en Azure”

Deja un comentario

Tu dirección de correo electrónico no será publicada. Los campos obligatorios están marcados con *