Aplicaciones PHP en Windows Azure

A lo largo de este post intentaré paso a paso cómo es posible desplegar una aplicación PHP en Windows Azure, una versión muy simple, pero que puede servir para que los programadores de PHP puedan conocer cómo podrían empezar a trabajar con la plataforma.

Más adelante intentaré explicará cosas más avanzadas de cómo es posible usar los servicios de Azure desde PHP, pero ahora me centraré en los aspectos más básicos.

Lo primero es preparar el entorno de trabajo local con todo lo necesario para poder trabajar, en mi caso sobre entorno Windows también.

  • Instalar IIS 7 y configurar FastCGI
  • Instalar el SDK de Windows Azure.
  • Instalar SQL Server Express ( o superior)
  • Instalar PHP, en mi caso tengo la versión 5.3.1

Una vez instalados estos componentes, el último paso es descargarse el SDK de PHP para Windows Azure, el cuál se encuentra disponible en codeplex; http://phpazure.codeplex.com/ 

Una vez descargado el SDK, básicamente es descomprimir el fichero comprimido que te descargas, dejarlo en un directorio y modificar la variable de entorno %PATH% para que apunte al directorio bin del SDK de PHP.

01-PHPAzure

 

Este SDK open source permite simplificar la creación y despliegue de aplicaciones PHP en Windows Azure, a  la vez que ofrece una serie de librerías que permiten simplicar el trabajo con los diferentes servicios que ofrece Windows Azure, como pueden ser las colas, tablas o blobs del Windows Azure Storage.

00-PHPAzure

Una vez tenemos el entorno preparado ya podemos crear y desplegar nuestra primera aplicación PHP.

Para poder desplegar una aplicación en Windows Azure, independientemente del lenguaje con el que se trabaje, la plataforma necesita que se le proporcionen siempre dos ficheros cuando se despliega un servicio: el archivo de definición del servicio y el archivo de configuración del servicio. El primero de ellos básicamente contiene los ficheros que conforman parte de la aplicación que queremos desplegar, mientras el segundo contiene toda la información necesaria para indicarle a la plataforma cómo tiene que realizar dicho despligue; número de máquinas, tamaño etc..

Los diferentes SDKs disponibles lo que hacen es ayudarte a empaquetar las aplicaciones (PHP, Java, C#…) en estos dos tipos de ficheros.

Volviendo ya a nuestra primera aplicación SDK, el primer paso es lanzar esta línea de comandos desde un cmd, la cuál creará la estructura básica que necesita Windows Azure.

> scaffolder run -out="C:tempWindowsAzurePHPApp”

Esta operación lo que hace es generar una estructura de ficheros y directorios a partir de la plantilla por defecto que tiene el SDK de PHP para poder incluir dentro nuestra aplicación PHP para posteriormente poder empaquetarla y desplegarla en la plataforma. Dentro del directorio del SDK podéis encontrar un directorio llamando scaffolders dónde se encuentran las plantillas a partir de cuál se ha generado esta estructura. Hay una que es la de por defecto, pero se pueden crear plantillas personalizadas o simplemente descargarse otras, por ejemplo para poder trabajar con WordPress o Drupal.

01.1-PHPAzure

Dentro del directorio PhpOnAzure.Web podemos crear una página llamada index.php y simplemente añadir un comando para mostrar la información de PHP.

<?php
    phpinfo();
?>

Una vez hecho esto, ya podemos probar la aplicación en el entorno local de emulación que se instala junto con el SDK de Windows Azure.  Con este comando se arrancará el sistema de emulación local y podemos probar nuestra aplicación como si ésta estuviera desplegada en la plataforma.

> package create -in="C:tempWindowsAzurePHPApp" -out="C:tempWindowsAzurePHPAppbuild" -dev=true

y si queremos desplegarla en un entorno real, sería lanzar la misma línea de comandos pero con “-dev=false”.

> package create -in="C:tempWindowsAzurePHPApp" -out="C:tempWindowsAzurePHPAppbuild" -dev=false

Esta operación lo que hace es crear los dos ficheros que comentábamos anteriormente; el archivo de definición del servicio y el archivo de configuración del servicio.

01.2-PHPAzure

Con esto ya tenemos todo lo necesario para poder hacer el despliegue real. l

El primer paso será disponer de una subscripción Windows Azure (existen versiones trial de 90 días). Una vez disponemos de ella tenemos que entrar al portal de administración a través de http://www.windowsazure.com

02-PHPAzure

Una vez nos hemos autenticado en el portal, el siguiente paso es crear un servicio hosteado sobre el cuál desplegaremos la aplicación.

03-PHPAzure

Le damos un nombre al servicio, indicamos la URL única y el datacenter sobre el que queremos desplegar la aplicación. Podemos desplegar en producción, en staging o simplemente crear el servicio para desplegar posteriormente.

04-PHPAzure

Si sólo hemos creado el servicio, posteriormente se puede crear el despliegue. Como veis, un despliegue lo único que necesita son los dos ficheros de configuración que hemos generado con el SDK de PHP.

05-PHPAzure

Y ya está, ya está desplegada la aplicación. Después de unos minutos la aplicación estará desplegada y disponible a través de la URL que hemos configurado en la configuración del servicio.

07-PHPAzure

Ibon Landa

bon Landa lleva más de 15 años dedicado al desarrollo de software. Durante este tiempo ha trabajado en diferentes empresas en las cuáles ha podido trabajar en diferentes entornos y tecnologías. Actualmente está focalizado principalmente en tareas de desarrollo, arquitectura, en las herramientas del ciclo de vida y en todo lo relacionado con la plataforma de Cloud Computing Microsoft Azure, área en el que ha sido reconocido como MVP. Participa de forma activa en la comunidad, escribiendo su blog, manteniendo un portal sobre Microsoft Azure y colaborando con Microsoft y grupos de usuarios en eventos de formación, talleres y giras de producto.

2 comentarios en “Aplicaciones PHP en Windows Azure”

  1. Muy interesante el post

    Una duda ¿Es esta la única forma d desplegar una aplicación PHP?
    En mi empresa al igual supongo que otras tenemos un producto que es un B2B el cuál solemos acompañar de una web de presencia en internet para nuestro cliente (ambo bajo el mismo dominio).
    Mientras que el B2B lo desarrollamos nosotros en ASP.NET. El resto del portal lo hace una empresa externa utilizando PHP y un gestor de contenidos basado en Symphony.
    Veo dificil q dicha empresa externa quiera adaptarse a las peculiaridades de Azure a la hora de mantener su aplicación PHP en la nube. Existe alguna posibilidad de que se el código PHP de la web esté almacenado en un VHD accesible via FTP. Para que dicha empresa no note la diferencia entre trabajar en Azure y trabajar en un hosting convencional.
    ¿Suponiendo que esto se pudiera hacer crees que tendrían que hacer alguna adaptación extra a su código PHP para funcionar en Azure? A parte claro de los cambios necesario para en lugar de usar MySql pasar a usar SqlServer como base de datos subyacente.

    Un saludo!

  2. Hola,

    No es la única manera, pero el SDK te simplifica bastante el despliegue de aplicaciones PHP, y en principio yo recomiendo hacerlo así.

    Es complicado desplegar aplicaciones en Windows Azure con la funcionalidad actual sin que el que lo desarrolla lo sepa, algunas características hay que conocerlas, como el hecho de que son máquinas sin estado.

    Echale un ojo al VMRole por si pudiera servirte. Básicamente es un VHD dónde despliegas e instalas tu aplicaciones, para luego «montarla» en Azure…eso sí, máquinas sin estado. http://www.windowsazure.com/es-es/home/features/virtual-machines/

Deja un comentario

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