Crear servicio para jetty en centos 7

Con la llegada de centos 7 se termino con el sistema clasico de servicios utilizando init.d y se cambio por servicios configurables con systemd

Voy a explicar a crear un servicio para un instalación de jetty desde codigo fuente como vimos en las entradas instalar-servidor-jetty-en-linux-desde-codigo-fuente y habilitar-https-en-jetty-con-certificado-autofirmado

Crearemos un fichero en la ruta /etc/systemd/system/jetty.service donde introduciremos como arrancar y parar el servicio.

vi /etc/systemd/system/jetty.service

Description=Jetty Web Application Server
After=syslog.target network.target remote-fs.target nss-lookup.target

[Service]
Type=forking
PIDFile=/var/run/jetty/jetty.pid
ExecStart=/usr/local/jetty-distribution-9.4.24.v20191120/bin/jetty.sh start
ExecStop=/usr/local/jetty-distribution-9.4.24.v20191120/bin/jetty.sh stop
User=root

[Install]
WantedBy=multi-user.target

Una vez guardado el fichero lo que haremos sera recargar los demonios, arrancar el jetty y establecer el servicio y de esta manera ya tendremos el jetty arancada en cada encendido del servidor.

systemctl daemon-reload
systemctl start jetty.service
systemctl enable jetty

Habilitar https en jetty con certificado autofirmado

En la entrada instalar-servidor-jetty-en-linux-desde-codigo-fuente vimos como instalar jetty desde codigo fuente, hoy voy a explicar como habilitar el protocolo https con un certificado autofirmado.

Creamos y entramos en el directorio donde generaremos el certificado.

mkdir /usr/local/jetty-distribution-9.4.24.v20191120/ssl 
cd /usr/local/jetty-distribution-9.4.24.v20191120/ssl

Generamos la calve privada con OpenSSL con la contraseña “jetty9” (se puede utilizar la que se desee).

openssl genrsa -aes128 -out jetty.key

Generamos un certificado para la clave privada en el archivo jetty.crt (utilizando la misma contraseña y los valores que queramos).

 openssl req -new -x509 -newkey rsa:2048 -sha256 -key jetty.key -out jetty.crt

Creamos un llavero con las calves en el formato PKCS12:

 openssl pkcs12 -inkey jetty.key -in jetty.crt -export -out jetty.pkcs12

Ahora configuramos el fichero ssl.ini con las  variables del puerto, llavero y contraseñas para que jetty utilice nuestro certificado:

vim /usr/local/jetty-distribution-9.4.24.v20191120/start.d/ssl.ini
jetty.ssl.port=443
jetty.sslContext.keyStorePath=ssl/jetty.pkcs12
jetty.sslContext.keyStorePassword=jetty9
jetty.sslContext.keyManagerPassword=jetty9

Y ya podemos arrancar el jetty y verl el certificado https  en funcionamiento.

/usr/local/jetty-distribution-9.4.24.v20191120/bin/jetty.sh start
Certificado autofirmado en jetty9

En la siguiente entrada explico como crear un servicio en el arranque para centos 7 crear-servicio-para-jetty-en-centos-7

Instalar servidor jetty en linux desde código fuente

En muchas ocasiones queremos utilizar servidores ligeros y fáciles de administrar, pues para servir aplicaciones en java uno de los mejores es jetty.

Voy a explicar como ponerlos funcionamiento desde cualquier distribución de Linux (centos, red hat, Ubuntu, debian …)

Para poner en marcha el servidor de aplicaciones jetty necesitamos tener el Java Development Kit para (jdk), para servir aplicaciones hechas en java.

Para ello vamos a utilizar las versiones libres del jdk y lo descargaremos desde aquí: https://jdk.java.net/

Para el ejemplo voy a utilizar la versión: openjdk-13.0.1

Nos dirigimos al directorio /usr/local descargamos y descomprimimos:

cd /usr/local/
wget https://download.java.net/java/GA/jdk13.0.1/cec27d702aa74d5a8630c65ae61e4305/9/GPL/openjdk-13.0.1_linux-x64_bin.tar.gztar 
tar –xjvf openjdk-13.0.1_linux-x64_bin.tar.gz

Comprobamos que funciona.

/usr/local/jdk-13.0.1/bin/java -version
openjdk version "13.0.1" 2019-10-15
OpenJDK Runtime Environment (build 13.0.1+9)
OpenJDK 64-Bit Server VM (build 13.0.1+9, mixed mode, sharing---------------------------
jetty 9.4.12 

Ahora que ya tenemos el jdk funcionando lo siguiente en descargarnos y descomprimir la versión de jetty que queramos:

Para el ejemplo voy a utilizar la versión: jetty-distribution-9.4.24

wget https://repo1.maven.org/maven2/org/eclipse/jetty/jetty-distribution/9.4.24.v20191120/jetty-distribution-9.4.24.v20191120.tar.gz
tar -xzvf jetty-distribution-9.4.24.v20191120.tar.gz

Ahora lo siguiente que haremos es añadir la ruta del jdk para que la utilice el jetty al arrancar.

vi /usr/local/jetty-distribution-9.4.24.v20191120/bin/jetty.sh

JAVA="/usr/local/jdk-13.0.1/bin/java"

Lo siguiente que haremos es configurar el jetty para que sirva por el puerto 80

vi /usr/local/jetty-distribution-9.4.24.v20191120/start.ini

jetty.http.port=80

Y ya podemos arrancar el jetty y verlo en funcionamiento, arrancando con el siguiente comando:

/usr/local/jetty-distribution-9.4.24.v20191120/bin/jetty.sh start

jetty 9 en funcionamiento

En las siguientes entradas explico como utilizar el protocolo https con un certificado autofirmado habilitar-https-en-jetty-con-certificado-autofirmado y como crear un servicio en el arranque para centos 7 crear-servicio-para-jetty-en-centos-7