Cómo instalar el servidor JAVA http Jetty en Debian 10

Jetty es un servidor HTTP Java gratuito y de código abierto que puede utilizarse en diferentes proyectos, tanto de desarrollo como de producción. Jetty ocupa poco espacio, es integrable, tiene todas las funciones y soporta SPDY, WebSocket, OSGi, JNDI, JAAS y muchas otras integraciones. Jetty se utiliza en múltiples productos activos como Alfresco, Apache ActiveMQ, Apache Spark, Apache Maven, Red5 y Hadoop.

En este tutorial, te mostraremos cómo instalar Jetty en Debian 10.

Requisitos

  • Un servidor con Debian 10.
  • Una contraseña de root configurada en tu servidor.

Cómo empezar

En primer lugar, se recomienda actualizar tu sistema con la última versión. Puedes hacerlo ejecutando el siguiente comando:

apt-get update -y
apt-get upgrade -y

Una vez actualizado tu sistema, reinicia tu sistema para aplicar los cambios de configuración.

Instalar Java

Jetty es una aplicación basada en Java. Por tanto, necesitarás instalar Java en tu sistema. Por defecto, la última versión de Java está disponible en el repositorio por defecto de Debian 10. Puedes instalarla simplemente ejecutando el siguiente comando:

apt-get install default-jdk -y

Una vez completada la instalación, puedes comprobar la versión de Java con el siguiente comando:

java --version

Deberías obtener la siguiente salida:

openjdk 11.0.3 2019-04-16
OpenJDK Runtime Environment (build 11.0.3+7-post-Debian-5)
OpenJDK 64-Bit Server VM (build 11.0.3+7-post-Debian-5, mixed mode, sharing)

Instalar Jetty

Por defecto, Jetty está disponible en el repositorio por defecto de Debian 10. Puedes instalarlo con sólo ejecutar el siguiente comando:

apt-get install jetty9 -y

Una vez instalado, comprueba la versión de Jetty con el siguiente comando

apt show jetty9

Deberías ver la siguiente salida:

Package: jetty9
Version: 9.4.15-1
Priority: optional
Section: java
Maintainer: Debian Java Maintainers <[email protected]>
Installed-Size: 757 kB

A continuación, inicia el servicio Jetty y permite que se inicie tras el reinicio del sistema con el siguiente comando:

systemctl start jetty9
systemctl enable jetty9

También puedes comprobar el estado de Jetty con el siguiente comando:

systemctl status jetty9

Deberías obtener la siguiente salida:

? jetty9.service - Jetty 9 Web Application Server
   Loaded: loaded (/lib/systemd/system/jetty9.service; enabled; vendor preset: enabled)
   Active: active (running) since Sat 2019-09-28 02:47:55 EDT; 1min 11s ago
     Docs: https://www.eclipse.org/jetty/documentation/current/
 Main PID: 1658 (java)
    Tasks: 24 (limit: 1138)
   Memory: 69.9M
   CGroup: /system.slice/jetty9.service
           ??1658 /usr/bin/java -Djetty.home=/usr/share/jetty9 -Djetty.base=/usr/share/jetty9 -Djava.io.tmpdir=/tmp -jar /usr/share/jetty9/star

Sep 28 02:48:12 debian jetty9[1658]: 2019-09-28 02:48:12.492:INFO:oejdp.ScanningAppProvider:main: Deployment monitor [file:///var/lib/jetty9/we
Sep 28 02:48:14 debian jetty9[1658]: 2019-09-28 02:48:14.079:INFO:oeja.AnnotationConfiguration:main: Scanning elapsed time=16ms
Sep 28 02:48:14 debian jetty9[1658]: 2019-09-28 02:48:14.602:INFO:oejshC.root:main: Warning: No org.apache.tomcat.JarScanner set in ServletCont
Sep 28 02:48:15 debian jetty9[1658]: 2019-09-28 02:48:15.796:INFO:oajs.TldScanner:main: At least one JAR was scanned for TLDs yet contained no 
Sep 28 02:48:16 debian jetty9[1658]: 2019-09-28 02:48:16.312:INFO:oejs.session:main: DefaultSessionIdManager workerName=node0
Sep 28 02:48:16 debian jetty9[1658]: 2019-09-28 02:48:16.315:INFO:oejs.session:main: No SessionScavenger set, using defaults
Sep 28 02:48:16 debian jetty9[1658]: 2019-09-28 02:48:16.318:INFO:oejs.session:main: node0 Scavenging every 600000ms
Sep 28 02:48:16 debian jetty9[1658]: 2019-09-28 02:48:16.587:INFO:oejsh.ContextHandler:main: Started [email protected]{root,/,file
Sep 28 02:48:16 debian jetty9[1658]: 2019-09-28 02:48:16.836:INFO:oejs.AbstractConnector:main: Started [email protected]{HTTP/1.1,[http/
Sep 28 02:48:16 debian jetty9[1658]: 2019-09-28 02:48:16.843:INFO:oejs.Server:main: Started @21109ms
lines 1-20/20 (END)

Configurar Nginx como proxy inverso para Jetty

Por defecto, Jetty se ejecuta en el puerto 8080. Así que tendrás que configurar Nginx como proxy inverso para reenviar la petición del puerto 80 al 8080.

Para ello, instala primero el servidor web Nginx con el siguiente comando:

apt-get install nginx -y

A continuación, crea un nuevo archivo de configuración de host virtual para Jetty con el siguiente comando:

nano /etc/nginx/sites-available/jetty.conf

Añade las siguientes líneas:

upstream jetty {
  server 127.0.0.1:8080 weight=100 max_fails=5 fail_timeout=5;
}

server {
  listen          80;
  server_name     example.com;

  location / {
        proxy_set_header X-Forwarded-Host $host;
        proxy_set_header X-Forwarded-Server $host;
        proxy_pass http://jetty/;
  }
}

Guarda y cierra el archivo cuando hayas terminado. A continuación, comprueba si Nginx tiene algún error de sintaxis con el siguiente comando

nginx -t

Deberías ver la siguiente salida:

nginx: the configuration file /etc/nginx/nginx.conf syntax is ok
nginx: configuration file /etc/nginx/nginx.conf test is successful

A continuación, habilita el host virtual Nginx y reinicia el servicio Nginx para aplicar la nueva configuración:

ln -s /etc/nginx/sites-available/jetty.conf /etc/nginx/sites-enabled/
systemctl restart nginx

Accede a la interfaz web de Jetty

Ahora, abre tu navegador web y escribe la URL http://example.com. Serás redirigido al panel de control por defecto de Jetty en la siguiente pantalla:

Jetty en Debian

Enhorabuena! has instalado y configurado correctamente Jetty con Nginx en Debian 10. Ahora puedes desplegar fácilmente tu aplicación Java con Jetty.

También te podría gustar...