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.
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
sudo update-alternatives --display java
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
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