domingo, 8 de enero de 2012

Cómo instalar jetty 7.x en Ubuntu

Después de mucho buscar por la red, logré encontrar por fin referencias sobre como instalar jetty 7 en Ubuntu, es bastante simple pero me parece que es buena idea dejar aquí guardados los pasos para el fúturo cuando me hagan falta y de paso si le son de ayuda a alguien más pues mejor.

Estoy basando me en este post, aunque voy a tocar algunos temas que Jawher no menciona.

Esta guía está hecha y probada en Ubuntu 11.10 (oneiric); en teoría debería funcionar también para la versión 11.04, tan pronto pueda lo verifico.

Si bien jetty (mas aquí) está disponible en los repositorios de oneiric la versión disponible es la 6 considerada madura y es algo vieja, por otra parte jetty 7 es considerado estable y jetty 8 beta (en desarrollo).

$ aptitude show jetty
Paquete: jetty                                  
Estado: sin instalar
Versión: 6.1.24-6
...

Los pasos a seguir para instalar son:
  • Descargar la versión que queremos usar:
    cd /usr/local/
    sudo wget -c http://dist.codehaus.org/jetty/jetty-hightide-7.5.4/jetty-hightide-7.5.4.v20111024.tar.gz
    sudo tar -xzvf jetty-hightide-7.5.4.v20111024.tar.gz
    sudo ln -s jetty-hightide-7.5.4.v20111024 jetty
    actualmente existe dos tipos de  distribuciones de jetty, la de eclipse y la de codehaus, pueden ver aquí para más detalles, yo usé la de codehaus versión 7.5.4.v20111024.
    Por comodidad descomprimí el tar.gz y cree un enlace a la carpeta llamado jetty, que es fácil de recordar.
  • Configuración:
    sudo touch /etc/default/jetty
    Según la documentación de jetty, si el archivo que acabamos de crear existe, es leído para determinar la configuración que el servidor va a usar. Entonces con nuestro editor preferido abrimos dicho archivo y agregamos cómo mínimo lo siguiente (por favor ajustar los valores a su gusto)
    NO_START=0
    #maquina virtual de java
    JAVA_HOME=/usr/lib/jvm/java-7-openjdk-i386
    #instalación de jetty
    JETTY_HOME=/usr/local/jetty
    #para escuchar a todas las interfaces (redes)
    JETTY_HOST=0.0.0.0
    #puerto a usar por jetty
    JETTY_PORT=80
  • Jetty como servicio:
    sudo cp /usr/local/jetty/bin/jetty.sh /etc/init.d/jetty
    sudo update-rc.d jetty defaults
    como mencioné en un post anterior el comando update-rc.d se puede usar para configurar un programa para que se ejecute de forma automática al inicio, justo lo que debe hacer un servicio.
Todo listo, ya solo nos queda ejecutar el servidor y lo podemos hacer de la siguiente forma:
sudo /etc/init.d/jetty start
Pueden ejecutar el comando sin ningún parámetro para que les muestre las opciones posibles, merece la pena resaltar supervise, que ejecuta jetty y muestra todos los mensajes en la consola, así podemos ver en pantalla si algo falla.
sudo /etc/init.d/jetty supervise
Consideraciones adicionales:
De acuerdo a los expertos, debemos tratar de tener java actualizado a la versión estable más reciente y eliminar las antiguas que no necesitamos, en general esto aplica para muchos programas, para instalar la openjdk 7 usamos el comando
sudo aptitude install openjdk-7-jdk openjdk-7-jre
Jetty es capaz de servir tanto contenido estático como aplicaciones, por lo que no necesitamos otro servidor extra, de ahí que lo puse directamente en el puerto 80, pero deben recordad de adiconal a establecer el valor de JETTY_HOST a 0.0.0.0 en el archivo /etc/default/jetty hay que asignar los permisos al firewall, por ejemplo usando ufw sería algo como lo siguiente:
sudo ufw allow 80
Saludos y será hasta la proxima.