ARTECLAB GeoServer 3 — De cero a producción Clase 2
1 / 16
Módulo 2 · Clase 2 ·

Instalación en Linux:
Java 17 · Tomcat 11 · WAR

De un servidor limpio a GeoServer 3 funcionando en producción

⏱ 2 horas 🖥️ Ubuntu 24.04 / Debian 13 👨‍💻 Daniel Quisbert
Al finalizar esta clase
¿Qué vamos a lograr hoy?
1
Instalar Java 17 en Linux
OpenJDK 17 — el runtime mínimo requerido por GeoServer 3.
2
Instalar y configurar Tomcat 11
El contenedor Jakarta EE que reemplaza a Tomcat 9 en GeoServer 3.
3
Desplegar el archivo WAR de GeoServer 3
Auto-despliegue, verificación en logs y primer acceso.
4
Configurar Data Directory y servicio systemd
Separar datos de la aplicación y garantizar arranque automático.
DQ
Daniel Quisbert
ARTECLAB · danielquisbert.com
Decisión de arquitectura
¿Por qué Linux para GeoServer en producción?
Rendimiento
Sin interfaz gráfica innecesaria. Todos los recursos van al servidor de mapas.
🔒
Estabilidad
Servidores Linux corren meses o años sin reiniciar. Ideal para servicios 24/7.
💰
Costo
Sin licencias. Ubuntu Server y Debian son gratuitos y de código abierto.
🖥️
linux-server-rack.jpg
Servidor Linux en producción
📌
En este curso
VirtualBox con Ubuntu 24.04 o Debian 13 Trixie. Mismos comandos que en producción real.
Paso 1 de 4
Instalar Java 17
El requisito mínimo que cambió todo en GeoServer 3
Requisito fundamental
Java 17 — ¿Por qué ahora y no antes?
⚠️
Java 11 ya no funciona con GeoServer 3
Spring Framework 7 y Jakarta EE exigen Java 17 como mínimo. GeoServer 3 no arrancará con Java 11.
Instalar OpenJDK 17
sudo apt update sudo apt install -y openjdk-17-jdk # Verificar java -version # → openjdk version "17.x.x" # Si hay varias versiones instaladas: sudo update-alternatives --config java
LTS hasta2029 — soporte garantizado a largo plazo
RecordsClases inmutables nativas
SealedJerarquías de clases controladas
ZGCGarbage collector de baja latencia
Paso 2 de 4
Instalar Tomcat 11
El contenedor de aplicaciones Jakarta EE requerido por GeoServer 3
Cambio crítico
Tomcat 9 vs Tomcat 11 — la diferencia que importa
Tomcat 9Tomcat 11 ✓
API de Servletsjavax.servlet.*jakarta.servlet.*
Java mínimoJava 8Java 11 (GS3 usa 17)
GeoServer 2.x✓ Compatible✗ No compatible
GeoServer 3.x✗ Error al arrancar✓ Requerido
CORS en web.xmlFuncionaNo funciona — ver Jetty 12
🚨
Error típico al usar Tomcat 9 con GeoServer 3
ClassNotFoundException: javax.servlet.Filter — GeoServer 3 busca jakarta y no encuentra javax.
Paso a paso
Instalación de Tomcat 11
Descargar e instalar
# Crear usuario dedicado sudo useradd -m -U -d /opt/tomcat \ -s /bin/false tomcat # Descargar Tomcat 11 wget https://archive.apache.org/dist/\ tomcat/tomcat-11/v11.0.x/bin/\ apache-tomcat-11.0.x.tar.gz # Extraer sudo tar -xzf apache-tomcat-11.0.x.tar.gz \ -C /opt/tomcat --strip-components=1 # Permisos sudo chown -R tomcat: /opt/tomcat sudo chmod +x /opt/tomcat/bin/*.sh
1
Usuario dedicado
Tomcat no debe correr como root por seguridad.
2
Carpeta /opt/tomcat
Ubicación estándar para aplicaciones en Linux.
3
Permisos correctos
Solo el usuario tomcat puede escribir en sus carpetas.
Paso 3 de 4
Desplegar GeoServer WAR
Auto-despliegue y primera verificación
Despliegue
El archivo WAR y el auto-despliegue de Tomcat
Descargar y desplegar
# Descargar GeoServer 3 WAR wget https://geoserver.org/release/\ stable/geoserver-3.0.0-war.zip unzip geoserver-3.0.0-war.zip # Copiar a webapps de Tomcat sudo cp geoserver.war \ /opt/tomcat/webapps/ # Arrancar Tomcat sudo -u tomcat /opt/tomcat/bin/startup.sh # Verificar despliegue en tiempo real tail -f /opt/tomcat/logs/catalina.out
Auto-despliegue
Tomcat detecta el archivo .war automáticamente y lo despliega. No se necesita ningún comando adicional.
Tiempo de arranque
GeoServer tarda 30-90 segundos en estar listo. Busca en el log: "GeoServer configuration and loading..."
Configuración esencial
Memoria Java — el parámetro más importante
2g
-Xmx recomendado
para desarrollo
4g
-Xmx recomendado
para producción
Configurar en /opt/tomcat/bin/setenv.sh
#!/bin/bash # Crear si no existe export JAVA_OPTS="\ -Xms512m \ -Xmx2g \ -XX:+UseG1GC \ -Djava.awt.headless=true" export GEOSERVER_DATA_DIR="\ /opt/geoserver_data"
⚠️
Con menos de 512MB GeoServer lanza OutOfMemoryError bajo carga. Asigna siempre el mínimo recomendado.
Buena práctica
Data Directory — separar datos de la aplicación
📁
/opt/geoserver_data/
GEOSERVER_DATA_DIR
📂
workspaces/
Configuración de workspaces y layers
📂
styles/
Archivos SLD y CSS
📂
logs/
geoserver.log (ver GS3: via env var)
📂
data/
Archivos geoespaciales locales
¿Por qué fuera de Tomcat?
Al actualizar GeoServer o Tomcat, el Data Directory no se toca. Tus capas, estilos y configuración sobreviven la actualización.
# Crear y asignar permisos sudo mkdir -p /opt/geoserver_data sudo chown tomcat: /opt/geoserver_data
Paso 4 de 4
Servicio systemd
Arranque automático y gestión profesional del servidor
Producción
Tomcat como servicio del sistema
/etc/systemd/system/tomcat.service
[Unit] Description=Apache Tomcat 11 - GeoServer 3 After=network.target [Service] Type=forking User=tomcat Group=tomcat Environment="JAVA_HOME=/usr/lib/jvm/java-17-openjdk-amd64" ExecStart=/opt/tomcat/bin/startup.sh ExecStop=/opt/tomcat/bin/shutdown.sh Restart=on-failure [Install] WantedBy=multi-user.target
Gestión del servicio
# Activar e iniciar sudo systemctl daemon-reload sudo systemctl enable tomcat sudo systemctl start tomcat # Comandos diarios sudo systemctl status tomcat sudo systemctl restart tomcat sudo systemctl stop tomcat
Con Restart=on-failure, si GeoServer cae por error, el sistema operativo lo reinicia automáticamente.
Resumen
Checklist de instalación exitosa
java -version muestra 17.x
OpenJDK 17 instalado y activo como versión por defecto.
Tomcat 11 en /opt/tomcat
Usuario dedicado "tomcat", permisos correctos.
geoserver.war en webapps/
Auto-desplegado. Carpeta /opt/tomcat/webapps/geoserver/ existe.
Data Directory en /opt/geoserver_data
GEOSERVER_DATA_DIR apuntando fuera de Tomcat.
Servicio systemd activo y habilitado
systemctl status tomcat → active (running)
🔒
Seguridad inmediata
Cambia la contraseña de admin antes de continuar. Admin/geoserver es la primera combinación que intentan los atacantes.
🌐
Acceso exitoso
http://[ip]:8080/geoserver/web muestra la interfaz de GeoServer 3.
Fin de la Clase 2

GeoServer 3
funcionando en Linux

La próxima clase: PostGIS en la VM y conversión de datos con ogr2ogr.

Cuestionario — Clase 2: Instalación
12 preguntas · 2 intentos · Retroalimentación inmediata
Ir al cuestionario →
🗓 Próxima clase: PostGIS + ogr2ogr 📥 Instala PostGIS antes