GeoNode项目

概述

The following steps will guide you to a new setup of GeoNode Project. All guides will first install and configure the system to run it in DEBUG mode (also known as DEVELOPMENT mode) and then by configuring an HTTPD server to serve GeoNode through the standard HTTP (80) port.

那些指南 不是 意味着要在生产系统上使用。将会有专门的章节向你展示一些 提示 要为可投入生产的计算机优化GeoNode,请执行以下操作。无论如何,我们强烈建议任命一位经验丰富的 DevOp系统管理员 在将您的服务器暴露给 WEB

Ubuntu 18.04

这部分文档描述了在Ubuntu 18.04 64位干净环境(桌面或服务器)上安装GeoNode的完整过程。所有示例都使用必须在本地终端或远程shell上输入的shell命令。-如果您有图形化的桌面环境,则可以在登录后打开终端应用程序;-如果您在远程服务器上工作,提供商或sysadmin应已授予您通过ssh客户端的访问权限。

安装依赖项

在本节中,我们将安装完整的GeoNode安装所需的所有基本软件包和工具。要遵循本指南,需要了解一些关于Ubuntu服务器配置和使用shell的基本知识。本指南使用 vim 作为编辑;自由填充以供使用 nanogedit 或者其他人。

升级系统包

使用运行以下命令的存储库检查您的系统是否已处于最新状态:

sudo apt update
sudo apt upgrade

创建专用用户

在以下步骤中,名为 geonode 要运行安装命令,用户必须处于 sudo 组。

Create User geonode if not present:

# Follow the prompts to set the new user's information.
# It is fine to accept the defaults to leave all of this information blank.
sudo adduser geonode

# The following command adds the user geonode to group sudo
sudo usermod -aG sudo geonode

# make sure the newly created user is allowed to login by ssh
# (out of the scope of this documentation) and switch to User geonode
su geonode

软件包安装

注解

您不需要安装 系统包 如果要使用Docker运行项目

首先,我们要安装所有 系统包 GeoNode设置所需的。

# Install packages from GeoNode core
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
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

# If the following does not work, you can skip it
sudo apt install -y libgdal-dev

# Install Openjdk
sudo -i apt update
sudo apt install openjdk-8-jdk-headless default-jdk-headless -y
sudo update-java-alternatives --jre-headless --jre --set java-1.8.0-openjdk-amd64

sudo apt update -y
sudo apt upgrade -y
sudo apt autoremove -y
sudo apt autoclean -y
sudo apt purge -y
sudo apt clean -y

# Install Packages for Virtual environment management
sudo apt install -y virtualenv virtualenvwrapper

# Install text editor
sudo apt install -y vim

Geonode项目安装

Geonode项目是运行Geonode自定义安装的合适方式。geonode-project的存储库包含遵循Django-project结构的最小文件集。Geonode本身将作为您项目的要求进行安装。在项目结构内部可以扩展、替换或修改所有地理节点组件(例如,css和其他静电文件、模板、模型。)甚至注册新的Django应用程序 在不接触原始Geonode代码的情况下

注解

您可以按照python包的命名约定(通常是带下划线的小写字母)将geonode项目命名为您喜欢的任何名称 (_) 。在下面的示例中,替换 my_geonode 用任何你想给你的项目命名的东西。

另请参阅 README geonode上的文件-项目存储库

首先,我们需要准备一个新的Python虚拟环境

准备环境

sudo mkdir -p /opt/geonode_custom/
sudo usermod -a -G www-data geonode
sudo chown -Rf geonode:www-data /opt/geonode_custom/
sudo chmod -Rf 775 /opt/geonode_custom/

克隆源代码

cd /opt/geonode_custom/
git clone https://github.com/GeoNode/geonode-project.git -b 3.2.x

创建一个实例 Django Template

注解

我们将调用我们的实例 my_geonode 。您可以在方便的时候更改名称。

vim ~/.bashrc
# add the following line to the bottom
source /usr/share/virtualenvwrapper/virtualenvwrapper.sh
source /usr/share/virtualenvwrapper/virtualenvwrapper.sh
mkvirtualenv --python=/usr/bin/python3 my_geonode

Alterantively you can also create the virtual env like below
python3.8 -m venv /home/geonode/dev/.venvs/my_geonode
source /home/geonode/dev/.venvs/my_geonode/bin/activate

pip install Django==3.2

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

# Install the Python packages
cd /opt/geonode_custom/my_geonode
pip install -r requirements.txt --upgrade --no-cache --no-cache-dir
pip install -e . --upgrade

# Install GDAL Utilities for Python
pip install pygdal=="`gdal-config --version`.*"

# Dev scripts
mv .override_dev_env.sample .override_dev_env
mv manage_dev.sh.sample manage_dev.sh
mv paver_dev.sh.sample paver_dev.sh

安装和配置PostgreSQL数据库系统

在本节中,我们将安装 PostgreSQL 随附的包裹和 PostGIS 分机。这些步骤必须完成 only 如果您的系统上尚未安装该数据库。

# Ubuntu 18.04
sudo sh -c 'echo "deb http://apt.postgresql.org/pub/repos/apt/ `lsb_release -cs`-pgdg main" >> /etc/apt/sources.list.d/pgdg.list'
sudo wget --no-check-certificate --quiet -O - https://www.postgresql.org/media/keys/ACCC4CF8.asc | sudo apt-key add -
sudo apt update -y; sudo apt install -y postgresql-13 postgresql-13-postgis-3 postgresql-13-postgis-3-scripts postgresql-13 postgresql-client-13

我们现在必须创建两个数据库, my_geonodemy_geonode_data ,属于该角色 my_geonode

警告

这是我们的默认配置。您可以使用所需的任何数据库或角色。必须在上正确配置连接参数 settings ,正如我们将在本节后面看到的那样。

数据库和权限

首先,创建geonode用户。GeoNode将使用此用户访问数据库

sudo service postgresql start
sudo -u postgres createuser -P my_geonode

# Use the password: geonode

系统将提示您为该用户设置密码。 输入geonode作为密码

警告

这是为简单起见使用的示例密码。此密码非常 weak 并且应该在生产环境中进行更改。

创建数据库 my_geonodemy_geonode_data 与所有者在一起 my_geonode

sudo -u postgres createdb -O my_geonode my_geonode
sudo -u postgres createdb -O my_geonode my_geonode_data

接下来,让我们创建PostGIS扩展模块

sudo -u postgres psql -d my_geonode -c 'CREATE EXTENSION postgis;'
sudo -u postgres psql -d my_geonode -c 'GRANT ALL ON geometry_columns TO PUBLIC;'
sudo -u postgres psql -d my_geonode -c 'GRANT ALL ON spatial_ref_sys TO PUBLIC;'
sudo -u postgres psql -d my_geonode -c 'GRANT ALL PRIVILEGES ON ALL TABLES IN SCHEMA public TO my_geonode;'

sudo -u postgres psql -d my_geonode_data -c 'CREATE EXTENSION postgis;'
sudo -u postgres psql -d my_geonode_data -c 'GRANT ALL ON geometry_columns TO PUBLIC;'
sudo -u postgres psql -d my_geonode_data -c 'GRANT ALL ON spatial_ref_sys TO PUBLIC;'
sudo -u postgres psql -d my_geonode_data -c 'GRANT ALL PRIVILEGES ON ALL TABLES IN SCHEMA public TO my_geonode;'

最后一步是更改文件中本地连接的用户访问策略 pg_hba.conf

sudo vim /etc/postgresql/13/main/pg_hba.conf

向下滚动到文档底部。我们想在当地转机。 trusted 对于默认用户。

确保您的配置与下面的配置类似。

...
# DO NOT DISABLE!
# If you change this first entry you will need to make sure that the
# database superuser can access the database using some other method.
# Noninteractive access to all databases is required during automatic
# maintenance (custom daily cronjobs, replication, and similar tasks).
#
# Database administrative login by Unix domain socket
local   all             postgres                                trust

# TYPE  DATABASE        USER            ADDRESS                 METHOD

# "local" is for Unix domain socket connections only
local   all             all                                     md5
# IPv4 local connections:
host    all             all             127.0.0.1/32            md5
# IPv6 local connections:
host    all             all             ::1/128                 md5
# Allow replication connections from localhost, by a user with the
# replication privilege.
local   replication     all                                     peer
host    replication     all             127.0.0.1/32            md5
host    replication     all             ::1/128                 md5

警告

如果您的 PostgreSQL 数据库驻留在 separate/remote machine ,你将不得不 允许 对中的数据库的远程访问 /etc/postgresql/13/main/pg_hba.conf 发送到 geonode 用户,并告诉PostgreSQL 接受 中的非本地连接 /etc/postgresql/13/main/postgresql.conf 文件

重新启动PostgreSQL以使更改生效。

sudo service postgresql restart

PostgreSQL现在已经准备好了。要测试配置,请尝试连接到 geonode 数据库AS geonode 角色。

psql -U postgres my_geonode
# This should not ask for any password

psql -U my_geonode my_geonode
# This should ask for the password geonode

# Repeat the test with geonode_data DB
psql -U postgres my_geonode_data
psql -U my_geonode my_geonode_data

首次在调试模式下运行GeoNode项目

警告

请确保您已成功完成本部分的所有步骤 安装依赖项

此命令将在准备好Spatialite数据库后在本地运行GeoNode和Geoserver。服务器将在 DEBUG (或 DEVELOPMENT )模式,它将启动以下服务:

  1. 地理节点打开 http://localhost:8000/

  2. 启用地球服务器 http://localhost:8080/geoserver/

此模式有助于调试问题和/或开发新功能,但不能在生产系统上使用。

# Prepare the GeoNode Spatialite database (the first time only)
./paver_dev.sh setup
./paver_dev.sh sync

注解

如果您想从头开始,只需运行

./paver_dev.sh reset_hard

警告

这会彻底炸毁你的 local_settings ,删除SQLlite数据库并删除Geoserver数据目录。

# Run the server in DEBUG mode
./paver_dev.sh start

一旦服务器完成初始化并在控制台上打印句子 GeoNode is now available. ,您可以打开浏览器并转到::

http://localhost:8000/

使用以下帐户登录::

user: admin
password: admin

从现在开始,所有关于GeoNode Core的内容都已说明(请参阅部分 3.Postgis数据库设置 以及以下内容),适用于GeoNode项目。

注意 要使用 new 到处都是路径和名称:

  • 每次你都会找到关键字 geonode ,您将需要改用您的geonode自定义名称(在本例中 my_geonode )。

  • 每次你都会找到指向 /opt/geonode/ ,您需要更新它们以指向您的自定义项目(在本例中 /opt/geonode_custom/my_geonode )。

码头工人

警告

在学习本节之前,您应该已经阅读并清楚地理解了 INSTALLATION > GeoNode Core 节,尤其是 Docker 一。对于GeoNode Core Vanilla所说的一切也适用于这里,只是Docker容器名称将略有不同。作为实例(如果将项目命名为 my_geonode ,您的容器将被命名为:

'django4my_geonode' instead of 'django4geonode' and so on...

在localhost上使用Docker部署geonode项目Django模板3.2.0的实例

准备环境

sudo mkdir -p /opt/geonode_custom/
sudo usermod -a -G www-data geonode
sudo chown -Rf geonode:www-data /opt/geonode_custom/
sudo chmod -Rf 775 /opt/geonode_custom/

克隆源代码

cd /opt/geonode_custom/
git clone https://github.com/GeoNode/geonode-project.git -b 3.2.x

创建一个实例 Django Template

注解

我们将调用我们的实例 my_geonode 。您可以在方便的时候更改名称。

source /usr/share/virtualenvwrapper/virtualenvwrapper.sh
mkvirtualenv --python=/usr/bin/python3 my_geonode

Alterantively you can also create the virtual env like below
python3.8 -m venv /home/geonode/dev/.venvs/my_geonode
source /home/geonode/dev/.venvs/my_geonode/bin/activate

pip install Django==3.2

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

修改代码和模板,重新构建Docker容器

docker-compose -f docker-compose.yml build --no-cache

最后,运行容器

docker-compose -f docker-compose.yml up -d

在域上使用Docker部署geonode项目Django模板3.2.0的实例

注解

我们将使用 www.example.org 作为一个例子。您可以在方便的时候更改名称。

把集装箱停下来

cd /opt/geonode_custom/my_geonode

docker-compose -f docker-compose.yml stop

编辑 ENV 覆盖文件以在上部署 www.example.org

到处替换 localhost 使用 www.example.org

vim .env
# e.g.: :%s/localhost/www.example.org/g

注解

这里可以覆盖更多变量来定制GeoNode实例。请参阅 GeoNode Settings 部分,以获取可用选项的列表。

在守护进程模式下运行容器

docker-compose -f docker-compose.yml -f docker-compose.override.example-org.yml up --build -d