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 o.e.j.w.WebAppContext@2f4948e4{root,/,file Sep 28 02:48:16 debian jetty9[1658]: 2019-09-28 02:48:16.836:INFO:oejs.AbstractConnector:main: Started ServerConnector@18419dc8{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:
Enhorabuena! has instalado y configurado correctamente Jetty con Nginx en Debian 10. Ahora puedes desplegar fácilmente tu aplicación Java con Jetty.