Otras mejoras en la 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.sin cabeza (verdadero)

Trabaje con aplicaciones basadas en gráficos en Java sin una pantalla, teclado o mouse real. Un caso de uso típico de componentes de interfaz de usuario que se ejecutan en un entorno sin cabeza podría ser una aplicación de conversión de imágenes.Aunque necesita datos gráficos para el procesamiento de imágenes, una pantalla no es realmente necesaria.La aplicación podría ejecutarse en un servidor y los archivos convertidos se guardarán o se enviarán a través de la red a otra máquina para su visualización.

-Xms4G -Xmx4G

Esto significa que su JVM se iniciará con una cantidad de memoria de Xms y podrá utilizar una cantidad máxima de memoria de Xmx.Arriba se iniciará una JVM con 2 GB de memoria y permitirá que el proceso utilice hasta 4 GB de memoria.Debe ajustar este valor dependiendo de su RAM disponible.

-DGEOSERVER_CSRF_DISABLED (Verdadero)

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.A veces, esto puede causar problemas con determinadas configuraciones de proxy.Puede deshabilitar el filtro CSRF configurando la propiedad GEOSERVER_CSRF_DISABLED en verdadero.https://docs.geoserver.org/stable/en/user/security/webadmin/csrf.html

Siempre que necesite cambiar una o más de las opciones de JVM, deberá reiniciar el contenedor GeoServer Docker.

# 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 haya realizado manualmente en el contenedor, p.agregado un nuevo complemento a GeoServer o actualizado algunos JAR en la carpeta de la biblioteca WEB-INF/lib, se perderá.

Deberá 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

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

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

Estado del GeoServidor

  • GeoServer Configuración Global;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

Configuración global

  • GeoServer Configuración de procesamiento de imágenes;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;:guilabel:WCS, WFS, WMS y WPS;

    • WCS: Actualice los límites según sus necesidades.No utilice 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: Raster Rendering Options le permite ajustar la salida WMS para un mejor rendimiento o calidad.Mejor interpretación: Vecino más cercano - Mejor calidad: Bicúbica

    Advertencia

    Las imágenes rasterizadas siempre deben optimizarse antes de ser ingeridas en GeoNode.La recomendación general es nunca cargar una imagen GeoTIFF no procesada en 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 utilice 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 el 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 usted.Vale la pena volver a comprobarlo de todos modos.

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

Almacenamiento en caché de mosaicos: conjuntos de datos en mosaico

  • Configure Disk Quota 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.Deberá actualizar el contenedor GeoServer Docker para permitir que GeoFence almacene las reglas en el contenedor DB Docker.

Para hacer eso, siga 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úrese de proporcionar los mismos parámetros de conexión especificados en el archivo .env

geofenceVendorAdapter.databasePlatform=org.hibernate.spatial.dialect.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

geofenceDataSource.testOnBorrow=true
geofenceDataSource.validationQuery=SELECT 1
geofenceEntityManagerFactory.jpaPropertyMap[hibernate.testOnBorrow]=true
geofenceEntityManagerFactory.jpaPropertyMap[hibernate.validationQuery]=SELECT 1

geofenceDataSource.removeAbandoned=true
geofenceDataSource.removeAbandonedTimeout=60
geofenceDataSource.connectionProperties=ApplicationName=GeoFence;
# 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

Recuerde 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 realice este procedimiento, GeoFence ya no podrá recuperar las reglas de seguridad antiguas.

Necesitará fixup_geonode_capas_permissions para poder regenerar las reglas de seguridad.

Reparar permisos de conjuntos de datos de GeoNode

La lista de reglas de seguridad de GeoFence está disponible en la sección Reglas de datos de GeoFence.

Siempre verifique que la lista sea accesible y que las reglas de datos estén ahí.Si está vacío, los usuarios estándar que no sean admin podrán acceder a ninguna capa.

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

Reglas de datos de GeoFence

Para volver a sincronizar las reglas de seguridad de GeoFence, siga 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 miniaturas de conjuntos de datos de GeoNode

El siguiente procedimiento le permite regenerar por lotes todas las miniaturas de 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 conjuntos de datos de GeoNode BBOXES

El siguiente procedimiento le permite regenerar por lotes todos los conjuntos de datos BBOXES:

# 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 el procedimiento a continuación:

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

  • Reinicie el contenedor Docker GeoNode.

    docker-compose up -d geonode
    
  • Ejecute los siguientes comandos de administración desde el interior del GeoNode Docker Container.

    # 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
    

Agregue conjuntos de datos enormes o de base de datos a su instancia

A veces no es posible cargar grandes conjuntos de datos, o tablas de bases de datos, a GeoNode desde la Web Upload Interface.

El procedimiento sugerido en tales casos es el siguiente:

  • Agregue el conjunto de datos a GeoServer primero directamente.

    Primero debe cargar los datos en el volumen estático del contenedor Docker de GeoServer y luego agregar manualmente la capa a través de GeoServer Admin GUI.

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

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