Mejoras Adicionales para Producción

Configuración de producción de GeoServer

Configuración de JVM: opciones de memoria y GeoServer

El archivo .env proporciona una manera de personalizar las opciones de GeoServer JVM.

La variable GEOSERVER_JAVA_OPTS le permite ajustar el contenedor GeoServer y habilitar opciones específicas de GeoServer.

GEOSERVER_JAVA_OPTS=
    -Djava.awt.headless=true -Xms4G -Xmx4G -XX:PerfDataSamplingInterval=500
    -XX:SoftRefLRUPolicyMSPerMB=36000 -XX:-UseGCOverheadLimit -XX:+UseConcMarkSweepGC
    -XX:+UseParNewGC -XX:ParallelGCThreads=4 -Dfile.encoding=UTF8 -Djavax.servlet.request.encoding=UTF-8
    -Djavax.servlet.response.encoding=UTF-8 -Duser.timezone=GMT
    -Dorg.geotools.shapefile.datetime=false -DGS-SHAPEFILE-CHARSET=UTF-8 -DGEOSERVER_CSRF_DISABLED=true -DPRINT_BASE_URL=http://geoserver:8080/geoserver/pdf

-Djava.awt.headless (true)

Trabajar con aplicaciones gráficas en Java sin necesidad de una pantalla, teclado o mouse físicos. Un caso de uso típico para componentes de interfaz de usuario en un entorno sin interfaz gráfica podría ser una aplicación de conversión de imágenes. Aunque requiere datos gráficos para procesar las imágenes, no necesita una pantalla. La aplicación podría ejecutarse en un servidor, y los archivos convertidos guardarse o enviarse a través de la red a otra máquina para su visualización.

-Xms4G -Xmx4G

Esto significa que tu JVM se iniciará con una cantidad de memoria especificada por Xms y podrá utilizar un máximo de memoria especificado por Xmx. Lo anterior iniciará una JVM con 2 GB de memoria y permitirá que el proceso use hasta 4 GB de memoria. Necesitas ajustar este valor dependiendo de tu RAM disponible.

-DGEOSERVER_CSRF_DISABLED (True)

El administrador web de GeoServer emplea un filtro de protección CSRF (falsificación de solicitudes entre sitios) que bloqueará cualquier envío de formulario que no parezca originarse en GeoServer. En ocasiones, esto puede causar problemas con determinadas configuraciones de proxy. Puedes deshabilitar el filtro CSRF configurando la propiedad GEOSERVER_CSRF_DISABLED en TRUE. https://docs.geoserver.org/stable/en/user/security/webadmin/csrf.html

Cada vez que necesites cambiar una o más opciones de la JVM, tendrás que reiniciar el contenedor Docker de GeoServer.

# Hard restart of the container: the only way to update the .env variables
docker-compose up -d geoserver

Este comando preservará toda la configuración y los datos de GeoServer, ya que GEOSERVER_DATA_DIR se almacena en un volumen estático de Docker.

Sin embargo, cualquier cambio que hayas hecho manualmente en el contenedor, como agregar un nuevo plugin a GeoServer o actualizar algunos JARs en la carpeta de la biblioteca WEB-INF/lib, se perderá.

Deberás agregar los JAR nuevamente y reiniciar GeoServer suavemente

# Soft restart of the container: the .env variables won't be updated
docker-compose restart geoserver

Configuración global y de servicios

  • Verifica el uso y el estado de la memoria del GeoServer; asegúrate que la ruta GEOSERVER_DATA_DIR apunte al volumen estático

../../../_images/production_geoserver_001.png

Estado de GeoServer

  • GeoServer Global Settings; asegúrese de que Proxy Base Url apunte a la URL pública y que los niveles de LOGGING estén configurados en Production Mode

../../../_images/production_geoserver_002.png

Ajustes globales

  • GeoServer JAI; a menos que esté utilizando algún renderizador específico o complemento de GeoServer, use las siguientes opciones recomendadas

../../../_images/production_geoserver_003.png

Configuración de procesamiento de imágenes

  • Puesta a punto Configuración de Servicios GeoServer; WCS, WFS, WMS y WPS;

    • WCS: Actualiza los límites según tus necesidades. No utilices valores muy altos, esto hará que GeoServer sea propenso a ataques DoS.

    ../../../_images/production_geoserver_004.png

    Límites de consumo de recursos de WCS

    • WMS: Especifica aquí la Lista SRS que vas a utilizar. Vacío significa todos los soportados por GeoServer, pero tenga cuidado ya que la salida GetCapabilities será enorme.

    ../../../_images/production_geoserver_005.png

    Lista de SRS compatibles con WMS

    • WMS: Opciones de renderizado raster Te permite ajustar la salida WMS para un mejor rendimiento o calidad. Mejor rendimiento: Vecino más cercano - Mejor calidad: Bicúbica

    Advertencia

    Las imágenes raster siempre deben ser optimizadas antes de ser ingresadas en GeoNode. La recomendación general es nunca subir una imagen GeoTIFF no procesada a GeoNode.

    Más detalles en:

    ../../../_images/production_geoserver_006.png

    Opciones de renderizado ráster WMS

    • WMS: Actualiza los límites según tus necesidades. No utilices valores muy altos, esto hará que GeoServer sea propenso a ataques DoS.

    ../../../_images/production_geoserver_007.png

    Límites de consumo de recursos WMS

GeoWebCache DiskQuota en Postgis

De forma predeterminada, GeoWebCache DiskQuota está deshabilitado. Eso significa que la caché de capas podría crecer indefinidamente.

GeoWebCache DiskQuota siempre debe estar habilitado en un sistema de producción. En el caso de que esté habilitado, esto debe configurarse para utilizar un motor de base de datos como Postgis para almacenar sus índices.

  • En primer lugar, asegúrese de que Tile Caching esté habilitado en todas las capas disponibles

Nota

GeoNode normalmente hace esto automáticamente por ti. Vale la pena volver a comprobarlo de todos modos.

../../../_images/production_geoserver_008.png

Almacenamiento en Caché de Teselas: Conjuntos de Datos Teselados

  • Configure Cuota de disco proporcionando la cadena de conexión al DB Docker Container como se especifica en el archivo .env

../../../_images/production_geoserver_009.png

Almacenamiento en caché de mosaicos: configuración de cuota de disco

Reglas de seguridad de GeoFence en Postgis

Por defecto, GeoFence almacena las reglas de seguridad en una base de datos H2.

En un sistema de producción, esto no es realmente recomendable. Tendrás que actualizar el contenedor Docker de GeoServer para habilitar que GeoFence almacene las reglas en el contenedor de base de datos Docker en su lugar.

Para hacer eso, sigue el procedimiento a continuación:

# Enter the GeoServer Docker Container
docker-compose exec geoserver bash

# Install a suitable editor
apt update
apt install nano

# Edit the GeoFence DataStore .properties file
nano /geoserver_data/data/geofence/geofence-datasource-ovr.properties

Nota

Asegúrate de proporcionar los mismos parámetros de conexión especificados en el archivo .env

geofenceVendorAdapter.databasePlatform=org.hibernatespatial.postgis.PostgisDialect
geofenceDataSource.driverClassName=org.postgresql.Driver
geofenceDataSource.url=jdbc:postgresql://db:5432/my_geonode_data
geofenceDataSource.username=my_geonode_data
geofenceDataSource.password=********
geofenceEntityManagerFactory.jpaPropertyMap[hibernate.default_schema]=public
# Update the GeoServer WEB-INF/lib JARs accordingly
wget --no-check-certificate "https://repo1.maven.org/maven2/org/postgis/postgis-jdbc/1.3.3/postgis-jdbc-1.3.3.jar" -O postgis-jdbc-1.3.3.jar && \
wget --no-check-certificate "https://maven.geo-solutions.it/org/hibernatespatial/hibernate-spatial-postgis/1.1.3.2/hibernate-spatial-postgis-1.1.3.2.jar" -O hibernate-spatial-postgis-1.1.3.2.jar && \
rm /usr/local/tomcat/webapps/geoserver/WEB-INF/lib/hibernate-spatial-h2-geodb-1.1.3.1.jar && \
mv hibernate-spatial-postgis-1.1.3.2.jar /usr/local/tomcat/webapps/geoserver/WEB-INF/lib/ && \
mv postgis-jdbc-1.3.3.jar /usr/local/tomcat/webapps/geoserver/WEB-INF/lib/

El contenedor está listo para reiniciarse ahora.

Advertencia

Recuerda realizar un reinicio suave; de lo contrario, los archivos JAR WEB-INF/lib se restablecerán al estado original

# Exit the GeoServer container
exit

# Soft Restart GeoServer Docker Container
docker-compose restart geoserver

IMPORTANTE: La primera vez que realices este procedimiento, GeoFence ya no podrá recuperar las reglas de seguridad antiguas.

Necesitará Corregir los permisos de los conjuntos de datos de GeoNode para poder regenerar las reglas de seguridad.

Corregir los permisos de los conjuntos de datos de GeoNode

La lista de reglas de seguridad de GeoFence está disponible en la sección GeoFence Data Rules.

Siempre verifica que la lista sea accesible y que las reglas de datos estén presentes. Si está vacía, ningún usuario estándar, aparte del administrador, podrá acceder a ninguna capa.

../../../_images/production_geoserver_010.png

Reglas de datos de GeoFence

Para volver a sincronizar las reglas de seguridad de GeoFence, sigue el procedimiento a continuación:

# Enter the GeoNode Docker Container
docker-compose exec django bash

# Run the `sync_geonode_datasets` management command
./manage.sh sync_geonode_datasets --updatepermissions

Regenerar las miniaturas de los conjuntos de datos de GeoNode

El siguiente procedimiento te permite regenerar en lotes todas las miniaturas de los conjuntos de datos:

# Enter the GeoNode Docker Container
docker-compose exec django bash

# Run the `sync_geonode_datasets` management command
./manage.sh sync_geonode_datasets --updatethumbnails

Regenerar los BBOXES de los conjuntos de datos de GeoNode

El siguiente procedimiento permite re-generar en lote todos los BBOXES de los conjuntos de datos:

# Enter the GeoNode Docker Container
docker-compose exec django bash

# Run the `sync_geonode_datasets` management command
./manage.sh sync_geonode_datasets --updatebbox

Migrar GeoNode a un nuevo nombre de host

En el caso de que necesite mover su instancia a otro dominio, como por ejemplo de https://my_geonode.geonode.org/ a https://prod_geonode.geonode.org/, siga las instrucciones procedimiento a continuación:

  • Actualice el archivo .env especificando el nuevo nombre en consecuencia.

  • Reiniciar el Contenedor Docker de GeoNode.

    docker-compose up -d geonode
    
  • Ejecuta los siguientes comandos de gestión desde dentro del Contenedor Docker de GeoNode.

    # Enter the GeoNode Docker Container
    docker-compose exec django bash
    
    # Run the `migrate_baseurl` management command
    ./manage.sh migrate_baseurl --source-address=my_geonode.geonode.org --target-address=prod_geonode.geonode.org
    
    # Run the `set_all_datasets_metadata` management command
    ./manage.sh set_all_datasets_metadata -d
    

Añadir conjuntos de datos grandes o de base de datos a tu instancia

A veces, no es posible subir conjuntos de datos grandes o tablas de bases de datos a GeoNode desde la Interfaz de Carga Web.

El procedimiento sugerido en tales casos es el siguiente:

  • Primero, añade el conjunto de datos directamente a GeoServer.

    Debes subir los datos al volumen estático del contenedor Docker de GeoServer y luego añadir manualmente la capa a través de la GeoServer Admin GUI.

  • Una vez que el conjunto de datos esté correctamente configurado en GeoServer, ejecuta el siguiente comando de gestión desde dentro del contenedor Docker de GeoNode

    # Enter the GeoNode Docker Container
    docker-compose exec django bash
    
    # Run the `updatelayers` management command
    ./manage.sh updatelayers -w <workspace_name> -f <layer_name>