Inicio Noticias en 330 Crea un servidor web con Apache/Tomcat y Raspberry Pi!

Crea un servidor web con Apache/Tomcat y Raspberry Pi!

Un servidor web es un equipo de computo que permite desplegar aplicaciones web de forma simple y sin necesidad de servicios en la nube, como podría ser Amazon Web Services. Una forma muy popular de implementar un servidor web es usando Tomcat de Apache. Tomcat es gratuito y es open-source, por lo que es perfecto para ensayar conceptos claves de servidores web. En este tutorial te ensenaremos como instalarlo en tu Raspberry Pi 4B de 1GB.

Preparaciones previas

Para esta instalación necesitas tener instalado Raspberry Pi OS Lite (de preferencia la versión Buster) y para mayor comodidad vamos a habilitar la interfaz SSH y accederemos a nuestra Raspberry Pi desde nuestro equipo de escritorio. Si no sabes como acceder por SSH a tu Raspberry, te recomendamos que leas esta entrada: ¿Cómo acceder a tu Raspberry Pi Zero W por SSH? Esta preparada para una Zero, pero los conceptos se pueden generalizar a la 4B.

Cuando tengamos todo instalado, entramos por SSH y actualizamos nuestros paquetes con sudo apt update y sudo apt upgrade.

Que es Apache Tomcat?

Como mencionamos al principio, Tomcat es un servidor web HTTP que ofrece un entorno en el que podemos correr programas escritos en Java. Es de código abierto y es gratuito, por lo que es fácil de emplear y se utiliza para fines escolares y comerciales.

Así que para instalarlo, necesitamos seguir los siguientes pasos:

1 .- Instalar las herramientas de desarrollo de Java

Cuando tengamos actualizado nuestro sistema, podremos instalar la versión mas reciente del Java Development Kit (JDK). Para usar Tomcat se necesita mínimo la versión 8 de Java, que en el caso de descargar este paquete, se instalara la versión 17.

sudo apt install -y default-jdk

Para verificar que la instalación se haya realizado correctamente, podemos revisar la versión de Java que se instalo

java --version

2.- Anadir un usuario de Tomcat

Al usar el servidor web existen muchos comandos que requieren privilegios de super-usuario para ejecutarse. Para no cometer un error de seguridad, vamos a crear un usuario especifico que ejecute dichas instrucciones y se aloje en la ruta /opt/tomcat. Para hacer esto, ejecuta el siguiente comando useradd como super-usuario.

sudo useradd -m -U -d /opt/tomcat -s /bin/false tomcat

3.- Descarga e instala Tomcat 10

Procedemos a descargar los archivos binarios desde el repositorio de Apache

wget \ 
https://downloads.apache.org/tomcat/tomcat-10/v10.0.4/bin/\
apache-tomcat-10.0.4.tar.gz

Y descomprimimos los archivos usando la herramienta tar

sudo tar xpvf apache-tomcat-10.0.4.tar.gz -C /opt/tomcat --strip-components=1

Cuando se hayan terminado de descomprimir los archivos, asigna la propiedad de la carpeta al usuario tomcat que acabamos de crear y darle permisos de ejecución a los archivos pertinentes. Para hacer esto, ejecuta el comando chown y chmod como se indica:

sudo chown tomcat:tomcat /opt/tomcat/ -R
sudo chmod u+x /opt/tomcat/bin -R

4.- Configura el usuario Tomcat mediante el archivo tomcat-users.xml

Para configurar los usuarios que pueden ejecutar Tomcat necesitamos editar el archivo /opt/tomcat/conf/tomcat-users.xml y añadir las siguientes líneas justo antes de la sección </tomcat-users>. Puedes usar el editor nano o vi siempre que hagas los cambios necesarios.

nano /opt/tomcat/conf/tomcat-users.xml

####Lineas que agregar al archivo####
<role rolename="manager-gui" />
<user username="manager" password="<SET-SECRET-PASSWORD>" roles="manager-gui" />
<role rolename="admin-gui" />
<user username="admin" password="<SET-SECRET-PASSWORD>" \
roles="manager-gui,admin-gui"/>
</tomcat-users>

Guarda el archivo y sal del editor. NOTA: Recuerda cambiar el password para tu instalación particular en donde dice <SET-SECRET-PASSWORD>.

No olvide modificar esta parte con tus propias contrasenas.

5.- Habilita el acceso remoto a Tomcat

Por defecto, las interfaces graficas para el Administrador como el Gerente se pueden acceder mediante localhost. En caso de que necesites acceder a las aplicaciones de Tomcat por fuera de tu Raspberry, vas a tener que editar el archivo context.xml para el manager y host-manager, y comentar la sección del acceso remoto. Por ejemplo, puedes hacerlo de este modo:

sudo nano /opt/tomcat/webapps/manager/META-INF/context.xml
……
<!--      <Valve className="org.apache.catalina.valves.RemoteAddrValve"
                 allow="127\.\d+\.\d+\.\d+|::1|0:0:0:0:0:0:0:1" />
  -->
…
Debes borrar las flechas (comentarios) para habilitar el acceso remoto. Via: linuxtechi

Guarda el archivo y cierra el editor. Lo mismo para el host-manager:

sudo nano /opt/tomcat/webapps/host-manager/META-INF/context.xml

6.- Configura el Systemd File

Por defecto, tomcat incluye algunos scripts para empezar a experimentar con el entorno, iniciar y detener los servicios de tomcat. Es recomendable tener un archivo que le indique a systemd que inicie los servicios de tomcat automáticamente después de reiniciar el sistema. Así que, para configurar el archivo de systemd, debemos crearlo con los siguientes comandos:

sudo nano /etc/systemd/system/tomcat.service
[Unit]
Description="Tomcat Service"
After=network.target

[Service]
Type=forking
User=tomcat
Group=tomcat

Environment="JAVA_HOME=/usr/lib/jvm/java-1.11.0-openjdk-amd64"
Environment="JAVA_OPTS=-Djava.security.egd=file:///dev/urandom"
Environment="CATALINA_BASE=/opt/tomcat"
Environment="CATALINA_HOME=/opt/tomcat"
Environment="CATALINA_PID=/opt/tomcat/temp/tomcat.pid"
Environment="CATALINA_OPTS=-Xms512M -Xmx1024M -server -XX:+UseParallelGC"

ExecStart=/opt/tomcat/bin/startup.sh
ExecStop=/opt/tomcat/bin/shutdown.sh

[Install]
WantedBy=multi-user.target

Guardamos el archivo y cerramos el editor. Ahora necesitamos reiniciar el demonio de systemd y después, iniciamos el servicio de tomcat:

sudo systemctl daemon-reload
sudo systemctl start tomcat.service

Podemos verificar el estado del servicio usando este comando:

sudo systemctl status tomcat.service
Si el servicio se esta ejecutando, veras una pantalla similar a esta. Via: linuxtechi

Por ultimo no debemos olvidar darle enable al servicio de tomcat para que después de reiniciar el sistema se inicie automáticamente:

sudo systemctl enable tomcat

En caso que el firewall este habilitado y ejecutandose en tu sistema, vamos a necesitar darle permiso al puerto 8080

sudo ufw allow 8080/tcp

7.- Accede al Tomcat Web Interface (GUI)

Para comprobar que todo funciona correctamente, vamos a acceder a la pagina de bienvenida de Tomcat con la siguiente direccion

http://<Server-IP-Address>:8080

Si todo funciona correctamente deberias ver esta pagina, esto quiere decir que instalamos adecuadamente el JDK y Tomcat se esta ejecutando. Via: linuxtechi

Terminado este procedimiento podemos empezar a desplegar nuestras aplicaciones de Java. Este es solo el comienzo para que puedas empezar a ejecutar servicios web, pero con tu Raspberry Pi funcionando, será mucho mas cercano a un entorno real y consumirás menos energía si deseas dejarlo funcionando.

Referencias:

How to Install Apache Tomcat 10 on Debian 10 (Buster)

How to create an Apache/Tomcat Web Server on your Raspberry Pi!