Instalación de GeoNetwork 3.6.0 en Ubuntu 16.04.6 LTS

 

GeoNetwork es un catálogo para administrar recursos geográficamente referenciados. Contiene un poderoso editor de metadatos y funcionalidades de búsqueda, así como un mapa web interactivo. Actualmente se utiliza en multitud de Infraestructuras de Datos Espaciales en todo el mundo.

https://geonetwork-opensource.org

 

Requisitos previos

Se recomienda empezar de una intalación "limpia" en nuestro servidor, ya que la experiencia ha demostrado que si existen otras apps instaladas en el servidor o coexisten varias versiones de Java pueden darse problemas de funcionamiento del catálogo. La instalación sobre Ubuntu 18.0.4 también ha generado problemas.

Los requisitos para la instalación de GeoNetwork 3.6.0:

  • JDK8
  • Tomcat8
  • Postgres/PostGIS (como base de datos preferente)
  • Apache2 (para redireccionamiento de tráfico)

Para comprobar nuestra versión de Ubuntu tecleamos en una ventana de comandos:

cat /etc/issue

También debemos saber si nuestra máquina es de 32 o 64B:

uname -m

 

Instalar JDK8

Instalamos como administrador:

sudo apt-get update
sudo apt-get install openjdk-8-jre-headless

Comprobamos la instalación:

java -version
Ajustamos la variable JAVA_HOME:
sudo update-alternatives --display java
Y copiamos la ruta en /etc/environment (aquí se deben poner todas las variables de entorno). Añadimos al final del fichero:
JAVA_HOME="/usr/lib/jvm/java-8-openjdk-amd64/jre/bin/java"

Agregar la línea anterior permite que todos los usuarios en el sistema tengan acceso a la variable de entorno JAVA_HOME. Se debe recargar el archivo para aplicar los cambios:

source /etc/environment
Y comprobamos:
echo $JAVA_HOME

 

Instalación de Tomcat8

Instalamos como administrador:

sudo apt-get install tomcat8 tomcat8-admin

Añadimos usuarios para el manejo del "manager-gui". Para ello modificamos el archivo tomcat-users.xml y ponemos lo siguiente (recordando descomentar el párrafo):

<tomcat-users>  
	<role rolename="manager-gui"/>  
    <user username="youUserName" password="yourPassword" roles="manager-gui"/>
</tomcat-users>

Ampliamos la memoria JAVA que usa Tomcat. Para ello añadimos -Xmx4096m a las opciones de JAVA_OPTS en el archivo /etc/default/tomcat8

Por el hecho de instalar sobre Tomcat, el arhivo  /usr/share/tomcat8/bin/catalina.sh apunta al archivo setenv.sh, que puede o no existir. Si no existe lo creamos en el mismo directorio y en él escribimos:

JAVA_OPTS="-server -Xmx4096m -Xms4096m"

Reiniciamos Tomcat:

sudo service tomcat8 restart

Comprobamos que el servicio está levantado introduciendo en el navegador web nuestra IP seguida del puerto 8080: http://localhost:8080

Instalar Postgres/PostGIS

 

Instalamos PostgreSQL 9.5 y su extensión de PostGIS:

sudo apt-get install -y postgresql postgresql-contrib
sudo apt-get install -y postgis postgresql-9.5-postgis-2.2

Cambiamos la contraseña del usuario principal (ej.: postgres)

sudo -u postgres psql

\password yourPassword

Tras indicar la contraseña, salimos:

\q

Ahora cambiamos la configuración en /etc/postgresql/9.5/main/pg_hba.conf para indicar que el acceso sea mediante contraseña. Cambiamos el acceso "peer" a "md5". Sustitimos la línea:

local   all   all   peer

por:

local   all   all   md5

Y además le decimos que permita la conexión desde una máquina externa. Con versiones anteriores de Postgres no era necesario, pero ahora debemos incluir las siguientes líneas:

host    all             all             0.0.0.0/0               md5
host    all             all             ::/0                    md5

+info: https://zaiste.net/postgresql_allow_remote_connections/

Reiniciamos el servicios Postgres:

sudo service postgresql restart

Y ahora creamos una base de datos llamada "geonetwork" y un rol de usuario también llamado "geonetwork" con password "yourPassword":

sudo su postgres

Y añadimos el siguiente código:

psql
CREATE USER geonetwork WITH PASSWORD 'yourPassword';
CREATE DATABASE geonetwork WITH OWNER = geonetwork ENCODING 'UTF8';
\q

Podemos comprobar si funciona la conexión remota (yourIP sería la IP del servidor):

psql -h yourIP -U postgres

Pero la forma más fácil será mediante el uso de pgAdmin4. En nuestra máquina local (no el servidor), instalamos pgAdmin4 y nos conectamos, en este caso a la IP del servidor con el puerto SSH 38256, usuario "postgres" y la contraseña de ese usuario en postgres. Ahora seleccionamos la base de datos geonetwork y lanzamos a través de la herramienta de SQL las siguientes órdenes:

CREATE EXTENSION postgis;

CREATE EXTENSION postgis_topology;

CREATE EXTENSION postgis;
CREATE EXTENSION postgis_topology;

También se puede hacer con el botón derecho sobre la base de datos y crear extensión, añadiendo las extensiones postgis* necesarias.

 

Importar base de datos

En caso de que ya tuvieramos una base de datos, por ejemplo, de un archivo de respaldo, a través de pgAdmin eliminamos la base de datos anterior y situándonos con el ratón sobre el servidor, creamos una base de datos nueva (botón derecho). Una vez creada, es cuando podemos importar desde un fichero *.tar nuestra base de datos. Debemos recordar crear las extensiones PostGIS ya que éstas no se guardan en el backup.

Instalación de GeoNetwork 3.6.0

Descargamos el fichero war:

sudo wget https://sourceforge.net/projects/geonetwork/files/GeoNetwork_opensource/v3.6.0/geonetwork.war

Y movemos el archivo war al directorio webapps dentro del Tomcat.

Creamos un directorio que albergará datos propios de nuestro catálogo:

sudo mkdir /var/lib/geonetwork-data

Y cambiamos los permisos para dárselos a tomcat:

sudo chown -R tomcat8:tomcat8 geonetwork-data/

Y ahora indicamos esta nueva opción en tomcat. Modificamos el archivo /usr/share/tomcat8/bin/setenv.sh:

CATALINA_OPTS="-Dgeonetwork.dir=/var/lib/geonetwork-data"

 

Cambiamos la base de datos en uso:

sudo vi /var/lib/tomcat8/webapps/geonetwork/WEB-INF/config-node/srv.xml

e indicamos que sea postgres y comentamos la que viene por defecto (h2):

<import resource="../config-db/postgres.xml"/>

Ojo. aunque sea Postgres-PostGIS, debemos indicar lo anterior (con la postgre-postgis no nos ha funcionado).

Revisamos que esté bien la línea en el archivo postgres.xml:

<constructor-arg value="jdbc:postgresql://${jdbc.host}:5432/${jdbc.database}"/>

Y configuramos los datos en el archivo ../geonetwork/WEB-INF/config-db/jdbc.properties:

jdbc.username=geonetwork

jdbc.password=yourPassword

jdbc.database=geonetwork

jdbc.host=localhost

jdbc.port=5432

Copiamos el archivo jdbc.properties al directorio conf de tomcat. Arrancamos a través del manager de Tomcat (http://yourIP:8080/manager/html) el GeoNetwork y comprobamos que arranca. Tecleamos en el navegador: http://yourIP:8080/geonetwork

 

Back to top