martes, 11 de junio de 2013

Cómo instalar jetty 9 en ubuntu

Estos pasos los hice en un laptop con Ubuntu 13.04 x64, para detalles sobre versiones anteriores de jetty y ubuntu pueden consultar mi post sobre ¿cómo instalar jetty 7 en ubuntu?
Manos a la obra:
  1. Descargamos jetty 9 desde la sección de descargas del proyecto http://download.eclipse.org/jetty/, en dicha página encontraran muchas versiones del servidor, para este ejemplo usaré la 9.0.3.v20130506. Básicamente ingresamos a la dirección http://download.eclipse.org/jetty/9.0.3.v20130506/dist/ y descargamos la distribución zip de jetty:
    # vamos a la carpeta donde deseamos descargar jetty
    cd /usr/local
    
    # descargamos jetty 9.0.3.v20130506
    sudo wget -c http://eclipse.org/downloads/download.php?file=/jetty/9.0.3.v20130506/dist/jetty-distribution-9.0.3.v20130506.zip&r=1
    
  2. Anora descomprimimos el zip que acabamos de descargar para obtener una carpeta con todos los archivos necesarios:
    unsip jetty-distribution-9.0.3.v20130506.zip
    
    Opté por renombrar la carpeta a jetty-9.0.3.v20130506 porque me resulta más fácil de recordar pero pueden dejar la original o colocar lo que les guste, la idea es identificar de forma simple que contiene la carpeta más tarde
     
    mv jetty-distribution-9.0.3.v20130506 jetty-9.0.3.v20130506
    
  3. Creamos un enlace hacia el directorio que contiene jetty, esto facilita que en un futuro podamos cambiar la de versión cambiando hacia donde apunta el enlace evitando así ajustar cualquier configuración que pueda estar apuntando hacia la instalación del servidor.
    # recuerden que estamos en la ruta /usr/local
    ln -s jetty-9.0.3.v20130506 jetty
    # ahora podemos acceder a jetty en la ruta /usr/local/jetty
    
  4. Ahora configuramos jetty como un servicio en ubuntu, de esta forma iniciará automáticamente al iniciar el sistema operativo y nos permitirá controlar jetty usando el comando service:
    sudo ln -s /usr/local/jetty/bin/jetty.sh /etc/init.d/jetty
    sudo update-rc.d jetty defaults
    
    En mi caso, quiero poder controlar jetty usando el comando service pero no deseo que el servidor arranque con el sistema y permanezca consumiendo recursos por lo que deshabilité el inicio automático, sin embargo hay que resaltar que esto implica que deben iniciarlo manualmente cada vez que lo quieran usar:
    sudo update-rc.d jetty disable
    
    Aquí les dejo algunos ejemplos de como podemos controlar jetty usando el comando service en ubuntu, esto aplica para cualquier servidor que instalen de forma similar a la descrita anteriormente:
    sudo service jetty start       # inicia jetty
    sudo service jetty stop        # detiene jetty
    sudo service jetty restart     # detiene e inicia jetty
    sudo service jetty status      # imprime en la consola información del servicio como el process id (PID) 
    sudo service jetty             # muestra las opciones disponibles
    
  5. Usando las configuraciones por defecto jetty será accesible en la url http://localhost:8080/ si han iniciado jetty (sudo service jetty start) pueden probar dicha url en su navegador web favorito. Es posible que deseen cambiar el puerto en el que el servidor es accesible, por ejemplo a el puerto 80 para hacer esto editamos el archivos /usr/local/jetty/start.ini, cambiamos la línea que contiene: "jetty.port=8080" reemplazando la misma por jetty.port=80 y guardamos los cambios:
    cd /usr/local/jetty/
    nano start.ini # pueden usar su editor de preferencia
    
    El archivo final debe lucir más o menos como el siguiente ejemplo
    #===========================================================
    # HTTP Connector
    #-----------------------------------------------------------
    #jetty.port=8080
    jetty.port=80
    
    # el resto del contenido original del archivo ...
    
    Nota: Eso es diferente a la forma como configuré el jetty 7
Si todo ha ido bien en este punto tendrán su servidor jetty 9 corriendo en el puerto 80 y accesible en la url http://localhost/
En mi próximo post hablaré sobre como ejecutar aplicaciones php en jetty usando cgi.
Hasta la próxima.