diciembre 11, 2011

Using PHP on Appengine-JavaWeb projects



Recuerde que..
Este blog esta desarrollado en idioma español pero utilizando Google Traductor puede adecuarlo al lenguaje de su preferencia.. Favor utilice la opcion del recuadro superior derecho... y Bienvenido a Integracion Google.

Continuando con nuestros codelabs referidos al entorno GAE-Java, pasamos ahora a detallar como trabajar con PHP en proyectos Appengine-JavaWeb, utilizando Netbeans IDE como herramienta de desarrollo tal como lo hicimos en nuestra entrada anterior Working GAE-Java projects with Netbeans, pues esta herramienta nos permite un mejor control de los procesos de construcción, compilación, depuración, optimización y despliegue de nuestros proyectos tanto en nuestro servidor local de pruebas, como para su lanzamiento en la plataforma cloud de Google. Si Ud. no esta familiarizado a trabajar con Netbeans en desarrollos Appengine para Java, conviene que de primero una revisión a los codelabs de la mencionada entrada.

PREPARANDO NUESTRO ENTORNO DE DESARROLLO.

Para trabajar con PHP en GAE, como hicimos en nuestros proyectos JavaWeb, debemos descargar la última versión del WAR de Quercus desde la pagina oficial de caucho.com (versión 4.0.18 vigente al 15/12/2011), y grabarla en nuestra carpeta "appengine" que utilizamos en nuestro codelab anterior (para mantener un orden y porque allí también descargamos el SDK de Java).. y listo! ...el resto de operaciones es configurar.

Empecemos con nuestro "build.xml" de cada uno de los proyectos que instalemos ó desarrollemos, y allí debemos indicar la ruta de nuestras descargas tal como tambien hicimos en nuestro codelab anterior; pero en esta oportunidad, también debemos agregar las instrucciones ANT requeridas para que nuestro proyecto Java Web reconozca a PHP-Quercus, ...y para que Google App Engine reconozcan nuestros archivos *.php, por cuanto, en la infraetructura GAE, todos los archivos que no sean *.jsp, contenidos dentro de la estructura de nuestra carpeta WAR, estos son considerados "estáticos", y solo los reconocerá como archivos TXT, y por supuesto, no ejecutará los comandos PHP que contengan.. vale pues resaltar que debemos revisar las instrucciones de nuestros archivos "web.xml" y "appengine-web.xml" alojados en "web/WEB-INF" de la carpeta de nuestro material de apoyo descargado.

Instalando nuestro codelab "gae-phpwithjava" en Netbeans IDE

Como se indica, tenemos por supuesto que haber instalado en nuestro ordenador Netbeans y haberlo habilitado para trabajar con un servidor local Appengine, mediante la instalación de los plug-ins necesarios, y de nuestro servidor local Appengine de pruebas, como ya hemos descrito en nuestro codelab anterior.

Resumiendo el proceso,  tenemos que crear un proyecto JavaWeb vacío sobre la carpeta "appengine",  donde descargamos nuestro SDK de Java y el WAR de Quercus, indicando que vamos a utilizar el servidor Appengine en él. Este proyecto recomendamos llamar "gae-phpwithjava", y luego de creado y probado corriendo el mismo, procedemos a "borrarlo" (deteniendo primero el servidor), y sobre la carpeta "gae-phpwithjava", correspondiente a nuestro proyecto "vacío" creado, descargar nuestro material de apoyo proporcionado, verificar nuestro archivo "build.xml" (la ruta de nuestras descargas del SDK y del WAR de quercus), ...y listo, carguemos nuestro codelab como un proyecto JavaWeb con "fuentes existentes" (indicando que utilizaremos nuestro build.ml), y podremos correr nuestro proyecto "gae-phpwithjava" sobre nuestro servidor local Appengine de pruebas utilizando Netbeans IDE....

Material de Apoyo : 
( do click on blue icons to download )

gae-phpwithjava.rar, que corresponde a nuestra adaptación del proyecto "php-withjava" que describimos en nuestro codelab: Using PHP on JavaWeb projects", pero ahora corriendo sobre la plataforma de Google App Engine.

Al correr este proyecto podrán observar que podemos ejecutar dentro de la infraestructura GAE archivos *.php (de la versión 5.3.2 para la versión de Quercus 4.0.18 vigente a la fecha), inclusive conviviendo con archivos *.jsp y "servlets java".. y en el siguiente codelab observarán como integrar java con PHP en una misma aplicación...



Instalando nuestro codelab "gae-PHPguestbook" como proyecto Appengine JavaWeb en Netbeans IDE


procederemos ahora a correr nuestro codelab que presenta como cambiar el proyecto "guestbook" de los ejemplos de Google App Engine para que trabaje usando PHP (y aprovechando las clases java empleadas en él)... y por supuesto, debemos cargar nuestro material de apoyo a nuestro Netbeans como ya hemos indicado.

Resumiendo el proceso,  tenemos que crear un proyecto JavaWeb vacío sobre la carpeta "appengine",  donde descargamos nuestro SDK de Java y el WAR de Quercus, indicando que vamos a utilizar el servidor Appengine en él. Este proyecto recomendamos llamar "gae-phpguestbook", y luego de creado y probado corriendo el mismo, procedemos a "borrarlo" (deteniendo primero el servidor), y sobre la carpeta "gae-phpguestbook", correspondiente a nuestro proyecto "vacío" creado, descargar el material de apoyo proporcionado, verificar nuestro archivo "build.xml" (la ruta de nuestras descargas del SDK y del WAR de quercus), ...y listo, carguemos nuestro codelab como un proyecto JavaWeb con "fuentes existentes" (indicando que utilizaremos nuestro build.ml), y podremos correr nuestro proyecto "gae-phpguestbook" sobre nuestro servidor local Appengine de pruebas utilizando Netbeans IDE....


Material de Apoyo : 
( do click on blue icons to download )

gae-phpguestbook.rar, que nos muestra el clásico ejemplo "guestbook" de Google App Engine (que utilizan tanto en su plataforma para Java como Phyton, y ahora también en lenguaje "Go" desarrollado por el propio Google), pero ahora utilizando PHP para el manejo de las clases Java que componen el proyecto. Conviene a este respecto que revisemos esta entrada del blog de Caucho.com que nos presenta con mayor detalle la construcción del proyecto:

http://blog.caucho.com/2009/04/28/quercus-on-the-google-app-engine/




...resulta interesante observar como con Quercus pueden interactuar sin mayores conflictos códigos y datos PHP con Java, y ese potencial es el que utilizaremos en el desarrollo de nuetro próximo codelab referido a Google Cloud SQL, que es una implementación de la base de datos MySQL sobre la infraestructura cloud de Google, y por supuesto, para cualquier desarrollador Web resulta  fácilmente comprensible trabajar con PHP+MySQL.(los que son utilizados por proyectos sociales muy difundidos como Drupal, Wordpress, Elgg, phpBB, etc.  ..una larga lista de proyectos, pues veremos que si es posible trabajar manteniendo algunas de esas modalidad pero dentro de la infraestructura de Google App Engine...

pero aún hay más, porque en el mismo blog de caucho.com presentan un ejercicio de como implementar Wordpress para ser instalado y ejecutado completamente sobre la infraestructura de Google App Engine (utilizando Quercus para utilizar las instrucciones PHP propias del proyecto, pero adecuando la conexión a la base de datos para trabajar con el datastore de Google Appengine... éste proyecto creemos que vale propiciar su desarrollo, así que en brevedad, y sobre esta misma página, liberaremos nuestro código respectivo (el cual ya estamos terminando de depurar), ..y realmente esperamos se propicie el interés para adecuar el proyecto a versiones vigentes de Wordpress...

Pueden revisar los detalles del proyecto en el blog de caucho.com, en la siguiente dirección:

Ahora es importante resaltar que, este proyecto ha sido actualizado por lo que conviene revisar con detalle el siguiente enlace :

las fuentes del proyecto se pueden descargar de GitHub :

..y su demo :


NOTAS DE TRABAJO :


1.- No debemos olvidar que para "abrir" un proyecto debemos previamente cerrar el que tengamos abierto, e indicar que el proyecto que vamos a desplegar sea seleccionado como nuestro "Main project". Si no lo hacemos, al correr un proyecto se compilará nuestro proyecto, pero se lanzará a nuestro navegador el proyecto que este marcado como "Main project", lo que podría confundirnos.

2.- En caso que no hayamos cerrado nuestro servidor Appengine en algún proyecto, y ya no lo podamos cerrar con Netbeans, entonces podemos utilizar la herramienta Java VisualVM, y el plug-in "killApplication" que debemos haber instalado en ella, y cerrar los procesos Java que correspondan (solo basta cerrar uno de los procesos pues se eliminan en bloque para una aplicación desplegada)

3.- Podemos configurar nuestros proyectos para utilizar diferentes puertos de salida y "debug", y tener abiertos en forma simultanea al hacer nuestras pruebas. La configuración se realiza en el archivo "build.xml"

4.- Para correr nuestro proyecto utilizando ANT, en su pantalla de comando debe dirigirse a la carpeta que contiene nuestro proyecto (que debe contener a la carpeta build.xml por supuesto), y alli ejecutar el comando : ant runserver (enter)

5.- Para correr nuestro proyecto utilizando los comandos del SDK de Java, conviene que agreguemos a la ruta de descarga de nuestro SDK (y a la carpeta "bin" en particular" como una variable de entorno PATH (opciones avanzadas de propiedades de myPC en Windows), y en la misma posición donde ejecutamos el comando anterior debemos ejecutar el comando : dev_appserver.cmd web (enter). Caso contrario, debemos indicar en nuestro comando toda la ruta de nuestro SDK: (%pathSDK%)/bin/dev_appserver.cmd web(enter).


Saludos @Mlaynes



No hay comentarios: