GeoNode基本安装

概述

以下是在主机上部署完整堆栈GeoNode服务器的最简单和推荐方法。

  1. 第一步 :部署 GeoNode on a local server ,运行方式 http://localhost/ 服务。 GeoServer 也将在 http://localhost/geoserver/

  2. 第二步 :部署 GeoNode on a production server ,运行方式 https://my_geonode.geonode.org/ 服务。 GeoServer 也将在 https://my_geonode.geonode.org/geoserver/

  3. 第三步 :自定义 .env 来满足你的需要

  4. 第四步 :保护生产部署;更改 admin 密码和 OAUth2 钥匙

  5. 进一步的生产改进

第一步:在本地服务器上部署GeoNode(例如:http://localhost/)

Ubuntu(18.0+)

注解

建议18.0.4或更高版本。

软件包安装

首先,我们将安装所有 系统包 地理节点设置所需的。登录到目标计算机并执行以下命令:

sudo apt install -y gdal-bin
sudo apt install -y python3-pip python3-dev python3-virtualenv python3-venv virtualenvwrapper
sudo apt install -y libxml2 libxml2-dev gettext
sudo apt install -y libxslt1-dev libjpeg-dev libpng-dev libpq-dev libgdal-dev libgdal20
sudo apt install -y software-properties-common build-essential
sudo apt install -y git unzip gcc zlib1g-dev libgeos-dev libproj-dev
sudo apt install -y sqlite3 spatialite-bin libsqlite3-mod-spatialite

Docker设置(仅限第一次)

sudo add-apt-repository universe
sudo apt-get update -y
sudo apt-get install -y git-core git-buildpackage debhelper devscripts
sudo apt-get install -y apt-transport-https ca-certificates curl gnupg-agent software-properties-common

curl -fsSL https://download.docker.com/linux/ubuntu/gpg | sudo apt-key add -

sudo add-apt-repository "deb [arch=amd64] https://download.docker.com/linux/ubuntu $(lsb_release -cs) stable"

sudo apt-get update -y
sudo apt-get install -y docker-ce docker-ce-cli containerd.io docker-compose
sudo apt autoremove --purge

sudo usermod -aG docker ${USER}
su ${USER}

CentOS(7.0+)

注解

推荐7.0或更高版本。

警告

因此,与您使用的版本不同,包安装可能有点不同。

软件包安装

首先,我们将安装所有 系统包 地理节点设置所需的。登录到目标计算机并执行以下命令:

sudo yum -y install epel-release
sudo yum install -y gdal
sudo yum install -y python3-pip python3-dev python3-virtualenv python3-venv virtualenvwrapper
sudo pip3 install -U pip
sudo pip3 install -U virtualenv
sudo yum install -y libxml2 libxml2-dev gettext
sudo yum install -y libxslt1-dev libjpeg-dev libpng-dev libpq-dev libgdal-dev libgdal20
sudo yum install -y git unzip gcc zlib1g-dev libgeos-dev libproj-dev

Docker设置(仅限第一次)

sudo yum install -y yum-utils device-mapper-persistent-data lvm2
sudo yum-config-manager --add-repo https://download.docker.com/linux/centos/docker-ce.repo
sudo yum install docker-ce docker-ce-cli containerd.io
sudo systemctl start docker

sudo curl -L "https://github.com/docker/compose/releases/download/1.23.1/docker-compose-$(uname -s)-$(uname -m)" -o /usr/local/bin/docker-compose
sudo chmod +x /usr/local/bin/docker-compose

sudo usermod -aG docker ${USER}
su ${USER}

创建 geonode-project

假设你的项目命名为 my_geonode 执行以下步骤:

git clone https://github.com/GeoNode/geonode-project.git -b 3.x

# Ubuntu
source /usr/share/virtualenvwrapper/virtualenvwrapper.sh
mkvirtualenv --python=/usr/bin/python3 my_geonode
pip install Django==2.2.12

# CentOS
virtualenv -p python3 my_geonode
source my_geonode/bin/activate

django-admin startproject --template=./geonode-project -e py,sh,md,rst,json,yml,ini,env,sample,properties -n monitoring-cron -n Dockerfile my_geonode

# If the previous command does not work for some reason, try the following one
python -m django startproject --template=./geonode-project -e py,sh,md,rst,json,yml,ini,env,sample,properties -n monitoring-cron -n Dockerfile my_geonode

启动容器

cd my_geonode
./docker-build.sh
  • 您可以通过从运行以下命令来跟踪容器启动 my_geonode 根文件夹:

    # GeoNode Container
    docker-compose logs -f django
    
    # GeoServer Container
    docker-compose logs -f geoserver
    
    # DB Container
    docker-compose logs -f db
    
    # NGINX Container
    docker-compose logs -f geonode
    
  • 如果发生任何错误,请尝试从运行以下命令来捕获错误stacktrace my_geonode 根文件夹:

    # GeoNode “entrypoint.sh” Logs
    tail -F -n 300 invoke.log
    

连接到 http://localhost/

创业通常需要一些时间,所以要有耐心…

如果一切顺利,你应该能从 geonode startup logs 类似于下面的一行:

<some date> [UWSGI] Uwsgi running...

连接到 http://localhost/

默认凭据为:

  • GeoNode (http://localhost/admin

    username: admin password: admin

  • GeoServer (http://localhost/geoserver/admin

    username: admin password: geoserver

第二步:在生产服务器上部署GeoNode(例如:https://my_geonode.geonode.org/)

如果你想部署到,比如说, https://my_geonode.geonode.org/ ,您需要更改 .env 如下:

--- geonode-project\.env
+++ my_geonode\.env
@@ -1,7 +1,7 @@
-COMPOSE_PROJECT_NAME={{project_name}}
+COMPOSE_PROJECT_NAME=my_geonode
BACKUPS_VOLUME_DRIVER=local

DOCKER_HOST_IP=
DOCKER_ENV=production
# See https://github.com/geosolutions-it/geonode-generic/issues/28
# to see why we force API version to 1.24
@@ -9,40 +9,40 @@

C_FORCE_ROOT=1
IS_CELERY=false
IS_FIRST_START=true
FORCE_REINIT=false

-SITEURL=http://localhost/
+SITEURL=https://my_geonode.geonode.org/
ALLOWED_HOSTS=['django',]

# LANGUAGE_CODE=pt
# LANGUAGES=(('en','English'),('pt','Portuguese'))

GEONODE_INSTANCE_NAME=geonode
-DJANGO_SETTINGS_MODULE={{project_name}}.settings
-UWSGI_CMD=uwsgi --ini /usr/src/{{project_name}}/uwsgi.ini
+DJANGO_SETTINGS_MODULE=my_geonode.settings
+UWSGI_CMD=uwsgi --ini /usr/src/my_geonode/uwsgi.ini

# #################
# backend
# #################
-GEONODE_DATABASE={{project_name}}
+GEONODE_DATABASE=my_geonode
GEONODE_DATABASE_PASSWORD=geonode
-GEONODE_GEODATABASE={{project_name}}_data
+GEONODE_GEODATABASE=my_geonode_data
GEONODE_GEODATABASE_PASSWORD=geonode

-DATABASE_URL=postgres://{{project_name}}:geonode@db:5432/{{project_name}}
-GEODATABASE_URL=postgis://{{project_name}}_data:geonode@db:5432/{{project_name}}_data
+DATABASE_URL=postgres://my_geonode:geonode@db:5432/my_geonode
+GEODATABASE_URL=postgis://my_geonode_data:geonode@db:5432/my_geonode_data
DEFAULT_BACKEND_DATASTORE=datastore
BROKER_URL=amqp://guest:guest@rabbitmq:5672/

# #################
# geoserver
# #################
-GEOSERVER_WEB_UI_LOCATION=http://localhost/geoserver/
-GEOSERVER_PUBLIC_LOCATION=http://localhost/geoserver/
+GEOSERVER_WEB_UI_LOCATION=https://my_geonode.geonode.org/geoserver/
+GEOSERVER_PUBLIC_LOCATION=https://my_geonode.geonode.org/geoserver/
GEOSERVER_LOCATION=http://geoserver:8080/geoserver/
GEOSERVER_ADMIN_PASSWORD=geoserver

OGC_REQUEST_TIMEOUT=30
OGC_REQUEST_MAX_RETRIES=1
OGC_REQUEST_BACKOFF_FACTOR=0.3
@@ -58,50 +58,50 @@
MOSAIC_ENABLED=False

# #################
# nginx
# HTTPD Server
# #################
-GEONODE_LB_HOST_IP=localhost
+GEONODE_LB_HOST_IP=my_geonode.geonode.org
GEONODE_LB_PORT=80

# IP or domain name and port where the server can be reached on HTTPS (leave HOST empty if you want to use HTTP only)
# port where the server can be reached on HTTPS
-HTTP_HOST=localhost
-HTTPS_HOST=
+HTTP_HOST=
+HTTPS_HOST=my_geonode.geonode.org

HTTP_PORT=80
HTTPS_PORT=443

# Let's Encrypt certificates for https encryption. You must have a domain name as HTTPS_HOST (doesn't work
# with an ip) and it must be reachable from the outside. This can be one of the following :
# disabled : we do not get a certificate at all (a placeholder certificate will be used)
# staging : we get staging certificates (are invalid, but allow to test the process completely and have much higher limit rates)
# production : we get a normal certificate (default)
-LETSENCRYPT_MODE=disabled
+# LETSENCRYPT_MODE=disabled
# LETSENCRYPT_MODE=staging
-# LETSENCRYPT_MODE=production
+LETSENCRYPT_MODE=production

RESOLVER=127.0.0.11

# #################
# Security
# #################
# Admin Settings
ADMIN_PASSWORD=admin
-ADMIN_EMAIL=admin@localhost
+ADMIN_EMAIL=admin@my_geonode.geonode.org

# EMAIL Notifications
EMAIL_ENABLE=False
DJANGO_EMAIL_BACKEND=django.core.mail.backends.smtp.EmailBackend
DJANGO_EMAIL_HOST=localhost
DJANGO_EMAIL_PORT=25
DJANGO_EMAIL_HOST_USER=
DJANGO_EMAIL_HOST_PASSWORD=
DJANGO_EMAIL_USE_TLS=False
DJANGO_EMAIL_USE_SSL=False
-DEFAULT_FROM_EMAIL='GeoNode <no-reply@geonode.org>'
+DEFAULT_FROM_EMAIL='GeoNode <no-reply@my_geonode.geonode.org>'

# Session/Access Control
LOCKDOWN_GEONODE=False
CORS_ORIGIN_ALLOW_ALL=True
SESSION_EXPIRED_CONTROL_ENABLED=True
DEFAULT_ANONYMOUS_VIEW_PERMISSION=True

重新启动容器

当你换衣服的时候 .env 文件,则需要重新生成容器

警告

小心! 以下命令将删除您可能在容器中手动完成的任何更改,静态卷除外。

docker-compose up -d

故障排除

如果由于某种原因您无法访问 HTTPS 频道,请检查 NGINX 以下配置文件:

  1. 进入 NGINX 容器

    docker-compose exec geonode sh
    
  2. 如果没有编辑器,请安装编辑器

    apk add nano
    
  3. 再检查一下 nginx.https.enabled.conf 链接已正确创建

    ls -lah
    
    ../../_images/throubleshooting_prod_001.png

    如果列表与上图不完全匹配,请运行以下命令,然后再次检查

    rm nginx.https.enabled.conf
    ln -s nginx.https.available.conf nginx.https.enabled.conf
    
  4. 检查 nginx.https.enabled.conf 内容

    nano nginx.https.enabled.conf
    

    确保内容符合以下要求

    警告

    改变 Hostname 因此。 这只是一个例子!

    # NOTE : $VARIABLES are env variables replaced by entrypoint.sh using envsubst
    # not to be mistaken for nginx variables (also starting with $, but usually lowercase)
    
    # This file is to be included in the main nginx.conf configuration if HTTPS_HOST is set
    ssl_session_cache   shared:SSL:10m;
    ssl_session_timeout 10m;
    
    # this is the actual HTTPS host
    server {
        listen              443 ssl;
        server_name         my_geonode.geonode.org;
        keepalive_timeout   70;
    
        ssl_certificate     /certificate_symlink/fullchain.pem;
        ssl_certificate_key /certificate_symlink/privkey.pem;
        ssl_protocols       TLSv1 TLSv1.1 TLSv1.2;
        ssl_ciphers         HIGH:!aNULL:!MD5;
    
        include sites-enabled/*.conf;
    }
    
    # if we try to connect from http, we redirect to https
    server {
        listen 80;
        server_name  my_geonode.geonode.org; # TODO : once geoserver supports relative urls, we should allow access though both HTTP and HTTPS at the same time and hence remove HTTP_HOST from this line
    
        # Except for let's encrypt challenge
        location /.well-known {
            alias /geonode-certificates/.well-known;
            include  /etc/nginx/mime.types;
        }
    
        # Redirect to https
        location / {
        return 302 https://my_geonode.geonode.org/$request_uri; # TODO : we should use 301 (permanent redirect, but not practical for debug)
        }
    }
    

    警告

    保存更改(如果有),然后退出!

  5. 重新加载NGINX配置

    nginx -s reload
    2020/06/24 10:00:11 [notice] 112#112: signal process started
    /etc/nginx# exit
    

第三步:定制 .env 来满足你的需要

如果要修改GeoNode行为,请始终使用 .env 文件以更新 settings .

如果需要更改中不存在的设置 .env ,可以强制内部值 my_geonode/settings.py

参考章节: 设置

你可以在这里添加任何被称为

环境: PROPERTY_NAME

重新启动容器

当你换衣服的时候 .env 文件,则需要重新生成容器。

警告

小心! 以下命令将删除您可能在容器中手动完成的任何更改,静态卷除外。

docker-compose up -d django

第四步:保护生产部署;更改 admin 密码和 OAUth2 钥匙

GeoServer设置

管理员密码更新

../../_images/geoserver_setup_001.png
../../_images/geoserver_setup_002.png

GeoServer管理员密码更新

OAUth2 REST API密钥

注解

为了生成新的强随机密码,你可以使用一个在线服务,比如https://passwordsgenerator.net/

避免使用符号(例如@$%%),因为它们可能与 .env 文件

../../_images/geoserver_setup_003.png

OAUth2 REST API密钥更新

GeoServer磁盘配额

../../_images/geoserver_setup_004.png

GeoServer磁盘配额更新

更新密码和密钥 .env 文件

注解

为了生成新的强随机密码,你可以使用一个在线服务,比如https://passwordsgenerator.net/

避免使用符号(例如@$%%),因为它们可能与 .env 文件

--- my_geonode\.env
+++ my_geonode\.prod.env
@@ -6,13 +6,13 @@
# See https://github.com/geosolutions-it/geonode-generic/issues/28
# to see why we force API version to 1.24
DOCKER_API_VERSION="1.24"

C_FORCE_ROOT=1
IS_CELERY=false
-IS_FIRST_START=true
+IS_FIRST_START=false
FORCE_REINIT=false

SITEURL=https://my_geonode.geonode.org/
ALLOWED_HOSTS=['django',]

# LANGUAGE_CODE=pt
@@ -38,13 +38,14 @@
# #################
# geoserver
# #################
GEOSERVER_WEB_UI_LOCATION=https://my_geonode.geonode.org/geoserver/
GEOSERVER_PUBLIC_LOCATION=https://my_geonode.geonode.org/geoserver/
GEOSERVER_LOCATION=http://geoserver:8080/geoserver/
-GEOSERVER_ADMIN_PASSWORD=geoserver
+GEOSERVER_ADMIN_USER=admin
+GEOSERVER_ADMIN_PASSWORD=<new_geoserver_admin_password>

OGC_REQUEST_TIMEOUT=30
OGC_REQUEST_MAX_RETRIES=1
OGC_REQUEST_BACKOFF_FACTOR=0.3
OGC_REQUEST_POOL_MAXSIZE=10
OGC_REQUEST_POOL_CONNECTIONS=10
@@ -84,13 +85,13 @@
RESOLVER=127.0.0.11

# #################
# Security
# #################
# Admin Settings
-ADMIN_PASSWORD=admin
+ADMIN_PASSWORD=<new_geonode_admin_password>
ADMIN_EMAIL=admin@my_geonode.geonode.org

# EMAIL Notifications
EMAIL_ENABLE=False
DJANGO_EMAIL_BACKEND=django.core.mail.backends.smtp.EmailBackend
DJANGO_EMAIL_HOST=localhost
@@ -114,15 +115,15 @@
ACCOUNT_CONFIRM_EMAIL_ON_GET=False
ACCOUNT_EMAIL_VERIFICATION=optional
ACCOUNT_EMAIL_CONFIRMATION_EMAIL=False
ACCOUNT_EMAIL_CONFIRMATION_REQUIRED=False

# OAuth2
-OAUTH2_API_KEY=
-OAUTH2_CLIENT_ID=Jrchz2oPY3akmzndmgUTYrs9gczlgoV20YPSvqaV
-OAUTH2_CLIENT_SECRET=rCnp5txobUo83EpQEblM8fVj3QT5zb5qRfxNsuPzCqZaiRyIoxM4jdgMiZKFfePBHYXCLd7B8NlkfDBY9HKeIQPcy5Cp08KQNpRHQbjpLItDHv12GvkSeXp6OxaUETv3
+OAUTH2_API_KEY=<new_OAUTH2_API_KEY>
+OAUTH2_CLIENT_ID=<new_OAUTH2_CLIENT_ID>
+OAUTH2_CLIENT_SECRET=<new_OAUTH2_CLIENT_SECRET>

# GeoNode APIs
API_LOCKDOWN=False
TASTYPIE_APIKEY=

# #################

[可选的] 更新SSH证书

在生产部署模式下,GeoNode默认使用 Let's Encrypt 证书

您可能需要向GeoNode提供您自己的证书

docker exec -it nginx4my_geonode_geonode sh -c 'mkdir /geonode-certificates/my_geonode'

wget --no-check-certificate 'http://<url_to_your_chain.crt>' \
    -O chain.crt

wget --no-check-certificate 'http://<url_to_your_key.key>' \
    -O my_geonode.key

docker cp chain.crt nginx4my_geonode_geonode:/geonode-certificates/my_geonode

docker cp my_geonode.key nginx4my_geonode_geonode:/geonode-certificates/my_geonode

docker-compose exec geonode sh
apk add vim

vim nginx.https.enabled.conf
-ssl_certificate     /certificate_symlink/fullchain.pem;
-ssl_certificate_key /certificate_symlink/privkey.pem;
+ssl_certificate       /geonode-certificates/my_geonode/chain.crt;
+ssl_certificate_key   /geonode-certificates/my_geonode/my_geonode.key;
nginx -s reload
exit

重新启动GeoNode和NGINX容器

当你换衣服的时候 .env 文件,则需要重新生成容器

警告

小心! 以下命令将删除您可能在容器中手动完成的任何更改,静态卷除外。

docker-compose up -d django
docker-compose restart geonode

进一步的生产改进

GeoServer产品设置

JVM设置:内存和GeoServer选项

这个 .env 文件提供了一种自定义geoserverjvm选项的方法。

变量 GEOSERVER_JAVA_OPTS 允许您优化GeoServer容器并启用特定GeoServer选项。

GEOSERVER_JAVA_OPTS=
    -Djava.awt.headless=true -Xms2G -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 -DGEOSERVER_CSRF_DISABLED=true -DPRINT_BASE_URL=http://geoserver:8080/geoserver/pdf

-Djava.awt.headless (true)

在Java中使用基于图形的应用程序时,不需要实际的显示、键盘或鼠标,在无头环境中运行的UI组件的典型用例可能是图像转换器应用程序。虽然它需要图形数据来处理图像,但显示并不是真正必要的。应用程序可以在服务器上运行,并将保存或通过网络发送的文件转换为另一台计算机以供显示。

-Xms2G -Xmx4G

这意味着您的JVM将以Xms的内存量开始,并且将能够使用最多Xmx的内存量。上面将启动一个类似于2 GB内存的JVM,并允许进程最多使用4GB内存。您需要根据可用RAM调整此值。

-DGEOSERVER_CSRF_DISABLED (True)

geoserverweb管理员使用了CSRF(跨站点请求伪造)保护过滤器,该过滤器将阻止任何看起来不是来自GeoServer的表单提交。这有时会导致某些代理配置出现问题。可以通过将GEOSERVER_CSRF_DISABLED属性设置为true来禁用CSRF筛选器。https://docs.geoserver.org/stable/en/user/security/webadmin/csrf.html

每当需要更改一个或多个JVM选项时,都需要重新启动GeoServer Docker容器。

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

这个命令将 保存 所有GeoServer配置和数据 GEOSERVER_DATA_DIR 存储在Docker静态卷上。

但是,您手动对容器所做的任何更改,例如,向GeoServer添加一个新插件或将一些jar更新到 WEB-INF/lib 库文件夹,将丢失。

您需要再次添加jar并重新启动GeoServer 轻轻地

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

全局和服务设置

  • 检查GeoServer内存使用情况和状态;确保 GEOSERVER_DATA_DIR 路径指向静态卷

../../_images/production_geoserver_001.png

GeoServer状态

  • GeoServer Global Settings ;确保 Proxy Base Url 指向publc URL和 LOGGING 级别设置为 Production Mode

../../_images/production_geoserver_002.png

全局设置

  • GeoServer Image Processing Settings ;除非使用特定的渲染器或GeoServer插件,否则请使用以下推荐选项

注解

更多详细信息,请访问https://docs.geoserver.org/stable/en/user/configuration/image_processing/index.htmlimage-加工

../../_images/production_geoserver_003.png

图像处理设置

  • 调整 GeoServer Services ConfigurationWCSWFSWMSWPS

    • WCS :根据需要更新限制。不要使用非常高的值,这将使GeoServer容易受到DoS攻击。

    ../../_images/production_geoserver_004.png

    WCS资源消耗限制

    • WMS :在此处指定要使用的SRS列表。Empty表示GeoServer支持的所有类型,但是由于 GetCapabilities 产量将变得巨大。

    ../../_images/production_geoserver_005.png

    WMS支持的SRS列表

    • WMSRaster Rendering Options 允许您调整WMS输出以获得更好的性能或质量。最佳性能: Nearest Neighbour -最佳品质: Bicubic

    警告

    栅格图像应始终在摄取到GeoNode之前进行优化。一般建议是 从未 将未处理的GeoTIFF图像上载到GeoNode。

    更多详情请访问:

    ../../_images/production_geoserver_006.png

    WMS栅格渲染选项

    • WMS :根据需要更新限制。不要使用非常高的值,这将使GeoServer容易受到DoS攻击。

    ../../_images/production_geoserver_007.png

    WMS资源消耗限制

Postgis上的GeoWebCache磁盘配额

默认情况下,GeoWebCache DiskQuota处于禁用状态。这意味着层缓存可能会无限期增长。

应始终在生产系统上启用GeoWebCache DiskQuota。如果启用了它,则 must 配置为使用像Postgis这样的数据库引擎来存储其索引。

  • 首先确保 Tile Caching 在所有可用层上启用

注解

GeoNode通常会自动为您执行此操作。不管怎样,值得再检查一遍。

../../_images/production_geoserver_008.png

平铺缓存:平铺层

  • 配置 Disk Quota 中指定的DB Docker容器的连接字符串 .env 文件

../../_images/production_geoserver_009.png

磁贴缓存:磁盘配额配置

Postgis上的geofeence安全规则

默认情况下,GeoFence将安全规则存储在 H2 分贝。

在生产系统上,不建议这样做。您需要更新GeoServer Docker容器,以便启用geoffence将规则存储到DB Docker容器中。

为此,请遵循以下步骤:

# 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

注解

请确保提供与中指定的相同的连接参数 .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://build.geo-solutions.it/geonode/geoserver/latest/postgis-jdbc-1.3.3/postgis-jdbc-1.3.3.jar && \
wget --no-check-certificate https://build.geo-solutions.it/geonode/geoserver/latest/hibernate-spatial-postgis-1.1.3.1/hibernate-spatial-postgis-1.1.3.1.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.1.jar /usr/local/tomcat/webapps/geoserver/WEB-INF/lib/ && \
mv postgis-jdbc-1.3.3.jar /usr/local/tomcat/webapps/geoserver/WEB-INF/lib/

容器现在可以重新启动了。

警告

记住做一个 软重启 否则WEB-INF/lib jar将重置为原始状态

# Exit the GeoServer container
exit

# Soft Restart GeoServer Docker Container
docker-compose restart geoserver

IMPORTANT :第一次执行此过程时,GeoFence将无法再检索旧的安全规则。

你需要 修正GeoNode层权限 以重新生成安全规则。

修正GeoNode层权限

GeoFence安全规则的列表可从 GeoFence Data Rules 部分。

总是有双重数据检查规则。如果为空,则除管理员外,标准用户将无法访问任何层。

../../_images/production_geoserver_010.png

GeoFence数据规则

要重新同步GeoFence安全规则,请遵循以下过程:

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

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

重新生成地理节点层缩略图

以下步骤允许您 批处理 重新生成所有层缩略图:

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

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

将GeoNode迁移到新主机名

如果您需要将实例移动到另一个域,例如 https://my_geonode.geonode.org/https://prod_geonode.geonode.org/ ,请遵循以下步骤:

  • 更新 .env 通过指定相应的新名称来归档。

  • 重新启动GeoNode Docker容器。

    docker-compose up -d geonode
    
  • 从GeoNode Docker容器内部运行以下管理命令。

    # 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_layers_metadata` management command
    ./manage.sh set_all_layers_metadata -d
    

向实例中添加大量或DB数据集

将大型数据集或DB表从 Web Upload Interface 有时候是不可能的。

在这种情况下,建议的程序如下:

  • 将数据集添加到 GeoServer 首先直接。

    您必须先将数据上载到GeoServer Docker容器静态卷中,然后通过 GeoServer Admin GUI .

  • 在GeoServer上正确配置数据集后,从GeoNode Docker容器内部运行以下管理命令

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

将GeoNode核心更新为最新提交

如果您需要将GeoNode核心代码库更新到特定版本或提交,请执行以下步骤:

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

# Update GeoNode
cd /usr/src/geonode/
git fetch --all --prune
git checkout <commit or branch>

# Update the pip dependencies
pip install -r requirements.txt --upgrade --no-cache
pip install -e . --upgrade

# Synchronize the GeoNode Project
cd /usr/src/my_geonode/
./manage.sh makemigrations
./manage.sh migrate
./manage.sh collectstatic

# Refresh UWSGI Daemons
touch /usr/src/my_geonode/my_geonode/wsgi.py

# Follow the logs and make sure non errors occur
tail -F -n 30 /var/log/geonode.log