Desplegando una aplicación Grails en Morph
Morph es un servicio de hosting, que utiliza por detrás los servicios de Amazon, hasta no hace mucho sólo tenía soporte para Rails pero han añadido soporte a Java (vía Jetty), que todavía está en beta.
Morph tiene un plan gratuito para desarrolladores, y he probado a subir una micro-aplicación desarrollada con Grails. Como lo interesante es ver lo sencillo que es desplegar una aplicación, he creado una TODO list muy básica, sin gestión de usuarios y utilizando el scaffolding dinámico, que también podría servir para iniciarse en éste framework.
Primero deberemos registrarnos, y tras esto descargar el morph_deploy.jar y el morph_deploy.properties que usaremos para desplegar nuestra aplicación cuando la tengamos terminada.
Creamos la aplicación y, dentro del directorio de la aplicación que se ha creado, una clase del dominio:
grails create-app todo
grails create-domain-class task
En la clase Task.groovy le añadimos algún atributo:
class Task {
String task
}
Creamos un controller vacío:
grails create-controller task
Y para el andamiaje, añadimos al controller:
def scaffold = true
Para verlo en local (http://localhost:8080/todo/):
grails run-app
Podríamos dejar la configuración a la base de datos con hsqldb y no tener que hacer ninguna modificación al estar embebida, pero para usar PostgreSQL, deberemos descargarnos el driver, añadirlo al directorio /lib de nuestra aplicación y hacer las siguientes modificaciones en el DataSource.groovy, en el entorno de producción:
driverClassName = "org.postgresql.Driver"
url = "jdbc:postgresql://XXX.XXX.XXX.XXX/db_XXX"
username = "XXX"
password = "XXX"
Inicio Actualización 09/06/2008: Utilizando el plugin para Morph, ya no es necesario este paso.
Debemos añadir el recurso del DataSource en el web.xml, que se genera con grails install-templates:
<resource-ref>
<description>Morphlabs Datasource</description>
<res-ref-name>jdbc/morph-ds</res-ref-name>
<res-type>javax.sql.DataSource</res-type>
<res-auth>Container</res-auth>
</resource-ref>
Este recurso, lo tendremos que comentar para probarlo en local, ya que nos dará errores al ejecutar la aplicación.
Fin Actualización
Ya sólo nos quedaría empaquetarlo en un .war:
grails war
Y desplegarlo:
java -jar morph_deploy.jar --config morph_deploy.properties pathdelwar/todo-0.1.war
Que posteriormente, pedirá nuestro usuario/password con los que nos hemos dado de alta en morph y nos desplegará la aplicación.
Tras esto, sólo nos queda esperar unos minutos a que haga se efectúe el despliegue, y ya tenemos la aplicación corriendo. El ejemplo está disponible en http://danilat.morphexchange.com/, como se puede ver, me ha costado más escribir el post que la aplicación+despliegue
.
Los despliegues se pueden hacer también con Ant y Maven, esto y alguna cosita más se puede encontrar en el Java Cookbook de Morph.
Lo que no tengo demasiado claro son las limitaciones que tendrá el servicio, a parte de poder usar sólo PostgreSQL, estando todavía en beta y si habrá muchas diferencias de los planes de pago con el plan gratuito.
June 8th, 2008 at 9:30 pm
Casi que como me quedo con el deploy de aplicaciones php o rails (con mod_rails). Que se reduce a hacer copy paste de la aplicación y punto. (configurar la db y como mucho te podrían salir problemas de permisos).
June 8th, 2008 at 10:21 pm
Hola Blaxter
Por lo general te doy la razón, pero más que por lo fácil sobre todo por no tener que reiniciar un servidor en producción, que siempre será molesto para los usuarios que estén en ese momento.
En caso que tengamos un servidor propio, el deploy se limitaría a ejecutar el comando grails war, copiarlo y reiniciar el servidor(con esos mimsmos ajustes de db y permisos).
Pero se puede ver que para el caso de desplegar aplicaciones en morph con Rails no parece que sea más sencillo: http://assets.mor.ph/guides/rails_dev_cookbook.pdf
June 8th, 2008 at 11:06 pm
Mola.
Se me ocure que se puede hacer un plugin muy sencillo, que modifique el web.xml pa no tener que andar cambiandolo.
June 9th, 2008 at 2:03 am
Hola dahernan,
Dicho y hecho, mañana mismo lo subo a google code
June 9th, 2008 at 4:21 pm
gran recuerso
muchas gracias por el tutorial
saludos desde Chile
June 9th, 2008 at 5:25 pm
[...] Ayer hablaba de los pasos para desarrollar una micro-aplicación con Grails y cómo desplegarla en Morph, había un paso molesto teniendo que generar y modificar el web.xml para añadir un recurso, que había que quitar para ejecutar la aplicación en entornos diferentes al de producción en Morph. [...]