Como montar un servidor web Apache Tomcat en CentOS sobre un servidor Cloud VPS de Clouding.io

Normalmente acostumbramos a tener nuestros servidores en local (sobre todo a nivel empresarial) o en empresas de hosting en las cuales podemos crear nuestras webs y administrarlas pero exclusivamente utilizando un panel de auto gestión que nos proveen el cual nos limita bastante la gestión de nuestros entornos.

Hoy voy a explicaros otra alternativa, que además es hacia donde se dirige el mercado a día de hoy, y no es otra que disponer de nuestros servidores en la nube.

En este tutorial voy a enseñaros a montar un servidor Linux con Apache Tomcat en un servidor Cloud VPS el cual por una cuota mensual reducida nos permitirá albergar nuestras páginas webs o cualquier otro servicio con total control sobre ellos como si los tuviéramos en un servidor local pero con las ventajas que nos proveen este tipo de hosting (alta disponibilidad, soporte 24×7,…),

Para la realización de este tutorial voy a utilizar el hosting Cloud VPS de Clouding.io el cual dispone de unos precios muy competitivos y además sólo por registrarnos nos dan 5€ de crédito más que suficiente para poder probar su servicio durante al menos 1 mes.

Registro en la plataforma Clouding.io

Para darnos de alta en la plataforma nos dirigiremos a Clouding.io y nos crearemos una cuenta de forma totalmente gratuita.

Una vez cumplimentado el formulario sólo tendremos que confirmar nuestra dirección de correos y con esto ya tendremos acceso al portal.

Creación servidor Linux CentOS 8 en Clouding.io

El siguiente paso será crear nuestro servidor Linux para posteriormente instalar Apache Tomcat. Para este tutorial vamos a elegir la distribución CentOS 8 aunque disponen de las últimas versiones de todas las distribuciones Linux más utilizadas.

La creación del servidor mediante la plataforma se hace de forma sencilla y en cuestión de minutos. Para ello en el dashboard pulsamos sobre «Haz click aquí para crear tu primer servidor».

Configuramos la características que tendrá nuestro servidor:

  • Nombre: Nombre de nuestro servidor.
  • Origen del disco: Seleccionamos CentOS 8
  • Configuración del servidor: Aquí seleccionamos los vCores, memoria y espacio en disco que necesitemos. Nota: Para un servidor web que albergue un blog o una web que no sea muy compleja es suficiente con los parámetros mínimos.
  • Activar Backup: Aquí podremos decidir si queremos que se realicen backups automáticos de nuestras instancia.
  • Activar red privada: Esta opción es útil para aquellos entornos en los que tenemos más de un servidor y queremos que se comuniquen entre si mediante una red privada.
  • Configuración de Acceso: Posibilidad de acceder a nuestro servidor vía SSH para administrarlo al igual que haríamos si tuviéramos el servidor en local.
  • Configuración de Firewall: Gestión de la seguridad de la plataforma mediante reglas de Firewall como veremos más adelante.

Como observareis mientras realizamos la configuración de nuestro servidor en todo momento y en tiempo real veremos el coste que nos supondrá ya sea por hora de uso o por mes.

Finalmente pulsamos en Enviar para crear nuestro servidor.

Esperamos hasta que se cree el servidor.

Pasados 2 o 3 minutos ya lo tenemos listo para empezar a utilizarlo.

Acceso al servidor por SSH

Una vez creado el servidor vamos a acceder a él por SSH para realizar la instalación de Apache Tomcat 9 en el que posteriormente montaremos nuestras webs.

Para ello, dentro de la plataforma, lo primero que haremos será pulsar sobre el servidor (desde la pestaña Mis Servidores) para obtener lo datos de acceso.

Localizados los datos de conexión utilizaremos nuestro cliente SSH preferido para realizar la conexión, en mi caso utilizaré Putty.

Y de esta forma tan sencilla ya tendremos acceso a nuestro servidor.

Como veréis una vez creado el servidor toda la gestión es exactamente igual tal y como si lo tuviéramos en local.

Instalación Apache Tomcat 9

Instalación OpenJDK

Tomcat 9 requiere Jave SE 8 o superior. Para este ejemplo instalaremos OpenJDK, la implementación open-source de Java que incorpora por defecto Java development y el runtime.

Para realizar la instalación simplemente tendremos que ejecutar el siguiente comando:

sudo dnf install java-11-openjdk-devel

Creación usuario para Tomcat

No es una buena práctica de seguridad ejecutar Tomcat con el usuario root es por ello que vamos a crear un usuario específico para este fin.

El usuario se llamará tomcat y su directorio home estará ubicado en la ruta /opt/tomcat. Este usuario será el encargado de iniciar el servicio de Tomcat.

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

Descarga de Tomcat

Descargamos la última versión disponible de Tomcat 9.0.x desde la web oficial del proveedor y lo guardaremos en la carpeta /tmp

cd /tmp
wget https://archive.apache.org/dist/tomcat/tomcat-9/v9.0.31/bin/apache-tomcat-9.0.31.tar.gz

Descomprimimos el fichero.

sudo yum install tar
sudo tar -xf apache-tomcat-9.0.31.tar.gz

Movemos los ficheros descomprimidos a la carpeta que creamos anteriormente en la ruta /opt/tomcat.

sudo mv apache-tomcat-9.0.31 /opt/tomcat/

Cambiamos los permisos de la carpeta /opt/tomcat y todas sus subcarpetas para que el propietario pase a ser el usuario tomcat.

sudo chown -R tomcat: /opt/tomcat/

Convertimos los scripts, que podemos encontrar dentro del subdirectorio bin, en ficheros ejecutables.

sudo sh -c 'chmod +x /opt/tomcat/apache-tomcat-9.0.31/bin/*.sh'

Creación servicio Tomcat

Para poder ejecutar Tomcat como un servicio tendremos que crear un fichero que llamaremos tomcat.service el cual ubicaremos en la ruta /etc/systemd/system

sudo yum install nano
sudo nano /etc/systemd/system/tomcat.service

Copiamos lo siguiente en el fichero:

Nota: En el caso que os hayáis descargado una versión distinta a la que utilizo en este ejemplo deberéis cambiar las rutas por las que uséis.

[Unit]
Description=Tomcat 9 servlet container
After=network.target

[Service]
Type=forking

User=tomcat
Group=tomcat

Environment="JAVA_HOME=/usr/lib/jvm/jre"
Environment="JAVA_OPTS=-Djava.security.egd=file:///dev/urandom"

Environment="CATALINA_BASE=/opt/tomcat/apache-tomcat-9.0.31"
Environment="CATALINA_HOME=/opt/tomcat/apache-tomcat-9.0.31"
Environment="CATALINA_PID=/opt/tomcat/apache-tomcat-9.0.31/temp/tomcat.pid"
Environment="CATALINA_OPTS=-Xms512M -Xmx1024M -server -XX:+UseParallelGC"

ExecStart=/opt/tomcat/apache-tomcat-9.0.31/bin/startup.sh
ExecStop=/opt/tomcat/apache-tomcat-9.0.31/bin/shutdown.sh

[Install]
WantedBy=multi-user.target

Guardamos los cambios y cerramos el editor (CTRL + X y respondemos yes cuando se nos pregunte si deseamos guardar los cambios).

Informamos al sistema de la creación de un nuevo servicio, para ello ejecutaremos el siguiente comando:

sudo systemctl daemon-reload

Configuramos el servicio Tomcat para que se inicie automáticamente al arranque del servidor y a continuación lo iniciamos manualmente.

sudo systemctl enable tomcat
sudo systemctl start tomcat

Comprobamos que el servicio se ha iniciado correctamente. Para ello ejecutaremos el siguiente comando y comprobaremos que el servicio se encuentra en el estado active (running).

sudo systemctl status tomcat
 tomcat.service - Tomcat 9 servlet container
   Loaded: loaded (/etc/systemd/system/tomcat.service; enabled; vendor preset: disabled)
   Active: active (running) since Fri 2020-08-14 11:18:56 CEST; 7s ago
  Process: 16519 ExecStart=/opt/tomcat/apache-tomcat-9.0.31/bin/startup.sh (code=exited, status=0/SUCCESS)
 Main PID: 16526 (java)
    Tasks: 30 (limit: 5085)
   Memory: 149.3M
   CGroup: /system.slice/tomcat.service
           └─16526 /usr/lib/jvm/jre/bin/java -Djava.util.logging.config.file=/opt/tomcat/apache-tomcat-9.0.31/conf/logging.properties -Djava.util.logging.manager=org.a>

Aug 14 11:18:56 servidor-web systemd[1]: Starting Tomcat 9 servlet container...
Aug 14 11:18:56 servidor-web systemd[1]: Started Tomcat 9 servlet container.

Configuración de la Web de Administración de Tomcat

Para poder acceder a la consola de administración de Tomcat vía web tendremos que crear en primer lugar un usuario.

Los usuarios y los roles son definidos en el fichero tomcat-user.xml

Abriremos el fichero:

sudo nano /opt/tomcat/apache-tomcat-9.0.31/conf/tomcat-users.xml

Para añadir un usuario agregaremos en el fichero lo siguiente:

<tomcat-users>
   <role rolename="admin-gui"/>
   <role rolename="manager-gui"/>
   <user username="admin" password="contraseña que deseemos" roles="admin-gui,manager-gui"/>
</tomcat-users>

Por defecto la web de administración de Tomcat está configurada para permitir el acceso sólo desde el propio localhost. Si queremos acceder desde por ejemplo otro PC tendremos que realizar las siguientes modificaciones en los 2 ficheros que os indico a continuación.

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

Comentamos la siguiente porción de texto.

<Context antiResourceLocking="false" privileged="true" >
<!--
  <Valve className="org.apache.catalina.valves.RemoteAddrValve"
         allow="127\.\d+\.\d+\.\d+|::1|0:0:0:0:0:0:0:1" />
-->
</Context>
sudo nano /opt/tomcat/apache-tomcat-9.0.31/webapps/host-manager/META-INF/context.xml

Comentamos la siguiente porción de texto.

<Context antiResourceLocking="false" privileged="true" >
<!--
  <Valve className="org.apache.catalina.valves.RemoteAddrValve"
         allow="127\.\d+\.\d+\.\d+|::1|0:0:0:0:0:0:0:1" />
-->
</Context>

Reiniciamos el servicio de Tomcat para aplicar los últimos cambios que hemos realizado.

sudo systemctl restart tomcat

Configuración Firewall plataforma Clouding.io para permitir acceso al puerto 8080 desde el exterior

Como último paso para poder acceder a la web de administración de nuestro Apache Tomcat desde el exterior es necesario permitir en la plataforma Clouding.io el acceso al puerto 8080. Para ello accederemos a la plataforma y nos dirigiremos a Servidores-Mis Firewall.

Pulsamos en el icono + que podemos encontrar a la derecha para añadir una nueva regla.

Usamos la normas de plantilla Norma personalizada y pulsamos en el símbolo +.

Creamos la regla tal y como os muestro a continuación y pulsamos en Enviar.

Y listo ya podremos abrir desde cualquier navegador la dirección http://IP pública:8080 y nos aparecerá una pantalla similar a la siguiente:

A partir de aquí ya sólo nos quedará ir montando cada una de nuestras webs en Apache Tomcat para publicarlas.

En resumen las principales ventajas que le veo a este tipo de alternativa, en comparación con los métodos tradicionales, son las siguientes:

  • Disponer de un servidor web totalmente gestionable de la misma forma que si lo tuviéramos en local pero con las ventajas de no tener que invertir en costosas infraestructuras y todo ello por una pequeña cuota mensual.
  • Una buena opción para en el caso de producirse una avería en nuestro CPD tengamos una alternativa rápida y sencilla para volver a levantar el servicio afectado mientras solventamos la avería.

Espero os haya sido de utilidad.

Entradas relacionadas

Deja un comentario