Cómo instalar GeoNode-Core para el desarrollo

Resumen de la instalación

En esta sección se muestra un resumen de los pasos que se deben seguir para instalar GeoNode-Core para el desarrollo con Ubuntu 18.04. Los siguientes pasos se personalizarán para que se adapten tanto a GeoNode-Project como a GeoNode-Core para fines de desarrollo.

Los pasos a seguir son:

1- Instalar herramientas de compilación y bibliotecas

2- Instalar dependencias y herramientas de soporte

3- Configurar el entorno virtual de Python

4- Clonar e instalar GeoNode desde Github

5- Instalar e iniciar Geoserver

6- Iniciar GeoNode

Nota

Los siguientes comandos/pasos se ejecutarán en tu terminal

Advertencia

Si tienes un servicio GeoNode en ejecución, deberás detenerlo antes de comenzar con los siguientes pasos. Para detener GeoNode, deberás ejecutar:

service apache2 stop   # or your installed server
service tomcat7 stop  # or your version of tomcat

Instalar GeoNode-Core para el desarrollo

La instalación de GeoNode-Core se considera la forma más básica de GeoNode. No requiere la instalación de ningún servidor externo y puede ejecutarse localmente en una base de datos Spatialite basada en un sistema de archivos.

Pasos de instalación

1- Instalar herramientas de compilación y bibliotecas

Advertencia

Es posible que esas instrucciones no estén actualizadas. Consulta 1. Instalar las dependencias

$ sudo apt-get install -y build-essential libxml2-dev libxslt1-dev libpq-dev zlib1g-dev

2- Instalar dependencias y herramientas de soporte

Instalar bibliotecas y herramientas nativas de Python

Advertencia

Es posible que esas instrucciones no estén actualizadas. Consulta 1. Instalar las dependencias

$ sudo apt-get install -y python3-dev python3-pil python3-lxml python3-pyproj python3-shapely python3-nose python3-httplib2 python3-pip software-properties-common

Instalar entorno virtual de python

Advertencia

Es posible que esas instrucciones no estén actualizadas. Consulta 2. Instalación de GeoNode

$ sudo pip install virtualenvwrapper

Instalar postgresql y postgis

Advertencia

Es posible que esas instrucciones no estén actualizadas. Consulta 3. Configuración de la base de datos Postgis

$ sudo apt-get install postgresql-10 postgresql-10-postgis-2.4

Cambiar la fecha de caducidad de la contraseña de Postgres y establecer una contraseña

$ sudo passwd -u postgres # change password expiry infromation
$ sudo passwd postgres # change unix password for postgres

Crear una función de GeoNode y una base de datos

$ su postgres
$ createdb geonode_dev
$ createdb geonode_dev-imports
$ psql
$ postgres=#
$ postgres=# CREATE USER geonode_dev WITH PASSWORD 'geonode_dev'; # should be same as password in setting.py
$ postgres=# GRANT ALL PRIVILEGES ON DATABASE "geonode_dev" to geonode_dev;
$ postgres=# GRANT ALL PRIVILEGES ON DATABASE "geonode_dev-imports" to geonode_dev;
$ postgres=# \q
$ psql -d geonode_dev-imports -c 'CREATE EXTENSION postgis;'
$ psql -d geonode_dev-imports -c 'GRANT ALL ON geometry_columns TO PUBLIC;'
$ psql -d geonode_dev-imports -c 'GRANT ALL ON spatial_ref_sys TO PUBLIC;'
$ exit

Editar el archivo de configuración de PostgreSQL

sudo gedit /etc/postgresql/10/main/pg_hba.conf

Desplázate hasta la parte inferior del archivo y edita esta línea.

# "local" is for Unix domain socket connections only
local   all             all                            peer

Para que quede de la siguiente manera

# "local" is for Unix domain socket connections only
local   all             all                                trust

Luego reinicia PostgreSQL para que los cambios sean efectivos.

sudo service postgresql restart

Dependencias de Java

$ sudo apt-get install -y openjdk-11-jdk --no-install-recommends

Instalar herramientas de soporte

$ sudo apt-get install -y ant maven git gettext

3- Configurar el entorno virtual de Python (aquí es donde se ejecutará Geonode)

Agregue virtualenvwrapper a su nuevo entorno.

Dado que estamos usando Ubuntu, puedes agregar la siguiente configuración a tu archivo .bashrc. Ten en cuenta que la cuenta de Ubuntu aquí se llama «geonode». Por lo tanto, tendrás que cambiarla según el nombre que hayas elegido.

$ echo export VIRTUALENVWRAPPER_PYTHON=/usr/bin/python >> ~/.bashrc
$ echo export WORKON_HOME=/home/geonode/dev/.venvs >> ~/.bashrc
$ echo source /usr/local/bin/virtualenvwrapper.sh >> ~/.bashrc
$ echo export PIP_DOWNLOAD_CACHE=$HOME/.pip-downloads >> ~/.bashrc

And reload the settings by running
$ source ~/.bashrc

Configurar el entorno virtual local para 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 geonode
$ workon geonode # or $ source /home/geonode/dev/.venvs/geonode/bin/activate
This creates a new directory where you want your project to be and creates a new virtualenvironment

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

4- Descargar/Clonar GeoNode desde Github

Para descargar la última versión de geonode desde github, se utiliza el comando «git clone»

Nota

Si estás siguiendo la capacitación de GeoNode, omite el siguiente comando. Puede encontrar el repositorio clonado en /home/geonode/dev

$ git clone https://github.com/GeoNode/geonode.git -b 4.1.x

Instalar Nodejs PPA y otras herramientas necesarias para el desarrollo estático

Esto es necesario para el desarrollo estático

Nota

Si estás siguiendo el entrenamiento de GeoNode, Node.js ya está instalado en la máquina virtual. Omite los primeros tres comandos y ve directamente a cd geonode/geonode/static

$ sudo apt-get install nodejs npm
$ cd geonode/geonode/static
$ npm install --save-dev

Nota

Cada vez que desees actualizar los archivos estáticos después de realizar cambios en las fuentes, ve a geonode/static y ejecuta ‘grunt production’.

Advertencia

A partir del siguiente paso, debes asegurarte de haber instalado GDAL correctamente según la página de documentación How to Install GDAL for development

Instalar GeoNode en el nuevo entorno virtual local activo

$ cd /home/geonode/dev  # or to the directory containing your cloned GeoNode
$ pip install -e geonode
$ cd geonode/geonode

Crear local_settings.py

Copia el archivo de muestra /home/geonode/dev/geonode/geonode/local_settings.py.geoserver.sample y cámbiale el nombre a local_settings.py

$ cd /home/geonode/dev/geonode
$ cp geonode/local_settings.py.geoserver.sample geonode/local_settings.py
$ gedit geonode/local_settings.py

En el archivo local_settings.py, agrega la siguiente línea después de las declaraciones de importación:

SITEURL = "http://localhost:8000/"

En el diccionario DATABASES bajo la clave “default”, cambia únicamente los valores de las claves NAME, USER y PASSWORD para que queden como sigue:

DATABASES = {
'default': {
    'ENGINE': 'django.db.backends.postgresql_psycopg2',
    'NAME': 'geonode_dev',
    'USER': 'geonode_dev',
    'PASSWORD': 'geonode_dev',
    .......
    ......
    .....
    ....
    ...
 }...}

En el diccionario DATABASES bajo la clave “datastore”, cambia únicamente los valores de las claves NAME, USER y PASSWORD para que sean como sigue:

# vector datastore for uploads
'datastore' : {
    'ENGINE': 'django.contrib.gis.db.backends.postgis',
    #'ENGINE': '', # Empty ENGINE name disables
    'NAME': 'geonode_dev-imports',
    'USER' : 'geonode_dev',
    'PASSWORD' : 'geonode_dev',
    .......
    ......
    .....
    ....
    ...
}

En el diccionario CATALOGUE, bajo la clave “default”, descomente las claves USER y PASSWORD para activar las credenciales para GeoNetwork de la siguiente manera:

CATALOGUE = {
'default': {
    # The underlying CSW implementation
    # default is pycsw in local mode (tied directly to GeoNode Django DB)
    'ENGINE': 'geonode.catalogue.backends.pycsw_local',
    # pycsw in non-local mode
    # 'ENGINE': 'geonode.catalogue.backends.pycsw_http',
    # GeoNetwork opensource
    # 'ENGINE': 'geonode.catalogue.backends.geonetwork',
    # deegree and others
    # 'ENGINE': 'geonode.catalogue.backends.generic',
    # The FULLY QUALIFIED base url to the CSW instance for this GeoNode
    'URL': urljoin(SITEURL, '/catalogue/csw'),
    # 'URL': 'http://localhost:8080/geonetwork/srv/en/csw',
    # 'URL': 'http://localhost:8080/deegree-csw-demo-3.0.4/services',
    # login credentials (for GeoNetwork)
    'USER': 'admin',
    'PASSWORD': 'admin',
    # 'ALTERNATES_ONLY': True,
    }}

5- Instalar e iniciar Geoserver

Desde el entorno virtual, primero debes alinear la estructura de la base de datos utilizando el siguiente comando:

$ cd /home/geonode/dev/geonode
$ python manage.py migrate

Advertencia

Si el inicio falla debido a un error de importación relacionado con osgeo o libgeos, consulte Instalar GDAL para desarrollo

Luego configura GeoServer usando el siguiente comando:

$ paver setup

$ paver sync

6- Ahora podemos iniciar nuestra instancia de GeoNode

Advertencia

No olvides detener los servicios de producción de GeoNode si están habilitados

service apache2 stop
service tomcat7 stop
$ paver start

El proceso de inicio tardará unos 20 segundos (depende de tu máquina) y al finalizar muestra el siguiente mensaje:

../../_images/server-is-ready.png

Ahora puedes visitar el sitio de geonode escribiendo http://0.0.0.0:8000 en la ventana de tu navegador

../../_images/geonode-gui.png

Instalar GeoNode-Project para el desarrollo después de instalar GeoNode-Core

Geonode-Project ofrece al usuario la flexibilidad de personalizar la instalación de GeoNode. Geonode se instalará como requisito de tu proyecto. Dentro de la estructura del proyecto es posible extender, reemplazar o modificar todos los componentes de Geonode (por ejemplo, CSS y otros archivos estáticos, plantillas, modelos…) e incluso registrar nuevas aplicaciones de Django sin tocar el código original de Geonode. Para instalar GeoNode-Project, se deben ejecutar los siguientes pasos junto con los pasos de instalación anteriores de GeoNode-Core.

1- Utiliza django-admin.py para crear un proyecto «my_geonode» a partir de una plantilla GeoNode-Project de la siguiente manera:

Nota

Antes de ejecutar el siguiente comando, asegúrate que estás trabajando actualmente en el entorno virtual y fuera del directorio geonode. El comando creará un nuevo proyecto llamado «my_geonode» que debería estar ubicado en el nivel del directorio de instalación de geonode-core «inside /home/geonode/dev»

$ django-admin.py startproject my_geonode --template=https://github.com/GeoNode/geonode-project/archive/master.zip -e py,rst,json,yml,ini,env,sample -n Dockerfile

$ ls /home/geonode/dev  # should output:  geonode  my_geonode

Nota

Aunque el siguiente comando puede mostrar que la mayoría de los requisitos ya están satisfechos «porque GeoNode-Core ya estaba instalado», se recomienda ejecutarlo ya que podría actualizar o instalar cualquier paquete faltante.

2- Instala todos los paquetes/herramientas necesarios para GeoNode-Project de la siguiente manera:

$ pip install -e my_geonode

Nota

Como se mencionó anteriormente, GeoNode se instalará como requisito para el Proyecto GeoNode para poder extenderlo.

Instalar GeoNode-Project directamente desde cero

Si no instaló GeoNode-Core anteriormente y deseas instalar GeoNode-Project directamente, sigue estos pasos

1- Crea un entorno virtual de la siguiente manera:

$ 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

2- Clona el repositorio geonode-project desde Github

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

3- Instala el framework Django de la siguiente manera

$ pip install Django==3.2.13

4- Utiliza django-admin.py para crear un proyecto «my_geonode» a partir de una plantilla GeoNode-Project de la siguiente manera:

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

5- Instala todos los requisitos para el GeoNode-Project e instala el GeoNode-Project usando pip

$ cd my_geonode
$ pip install -r requirements.txt --upgrade
$ pip install -e . --upgrade

6- Instala utilidades GDAL para Python

$ pip install pygdal=="`gdal-config --version`.*"  # or refer to the link <Install GDAL for Development <https://training.geonode.geo-solutions.it/005_dev_workshop/004_devel_env/gdal_install.html>

7- Instala GeoServer y Tomcat usando paver

$ paver setup

$ paver sync

$ paver start

8- Visita http://localhost:8000/