gcm1001 / TFG-CeniehAriadne

CENIEH & Ariadne+ project.
GNU General Public License v3.0
3 stars 2 forks source link

ARIADNEplus Logo

Title

GKECIDC Documentation Status DOI

TFG de la UBU en colaboración con el CENIEH.

UBU & CENIEH Logo

Autor
Gonzalo Cuesta Marín
Tutores
Carlos López Nozal
Mario Juez Gil
Colaboradores del CENIEH
Javier Valladolid Aguinaga
Joseba Rios Garaizar

🚩 Tabla de contenidos

Descripción

Despliegue

Plugins

Licencia

💬 Descripción

En el presente TFG se propone una infraestructura software capaz de gestionar los conjuntos de datos del CENIEH para posteriormente ser integrados en la plataforma ARIADNEplus. La aplicación escogida para llevar a cabo este cometido ha sido Omeka Classic. Sobre esta se han realizado una serie de desarrollos propios (plugins) con el fin de adaptar dicha aplicación a las necesidades del proyecto.


🚀 Despliegue

Existen tres posibilidades distintas para desplegar la aplicación en tu servidor: Manual, Docker o Kubernetes.

Manual

Si escoges está opción deberás estar seguro de que tu servidor cumple con todos y cada uno de los siguientes requisitos:

El siguiente consistirá en configurar tu servidor. Para ello, hay que seguir una serie de pasos:

  1. Crear la base de datos MySQL desde un usuario con permisos suficientes como para poder realizar operaciones sobre ella.

    • Durante el proceso, conviene que apuntes por separado los siguientes datos:

      • Hostname.
      • Nombre de la BD.
      • Nombre del usuario de la BD.
      • Contraseña de usuario de la BD.
    • La base de datos ha de estar codificada en utf8. Actualmente la opción más recomendable para ello es mediante el siguiente comando:

    CREATE DATABASE mydatabase CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci;
  2. Descargar la última version de Omeka, desde su web oficial o desde su repositorio en GitHub.

  3. Descomprimir el fichero .zip recién descargado sobre un directorio donde podamos trabajar.

  4. Buscar el fichero db.ini y sustituir los valores 'XXXXX' por los datos de la base de datos (anotados en el paso 1).

    • No es necesario modificar los parámetros prefix o port.
  5. Descargar el contenido de este repositorio del proyecto.

  6. Descomprimir las carpetas /omeka/plugins y /omeka/themes del fichero .zip recién descargado.

  7. Desde el directorio de trabajo, reemplazar las carpetas originales plugins y themes por las recién descomprimidas.

  8. Movemos todo el contenido a la carpeta al servidor.

  9. Dar permisos de escritura sobre la carpeta files.

Desde este instante, la aplicación será accesible desde el navegador. El último paso consistiría en completar la instalación guiada desde el navegador, disponible en el directorio /install/ de la aplicación (e.g. http://localhost/install).

Ver Manual de usuario para información más detallada.

Docker

He optado por desarrollar un entorno con tecnología Docker para facilitar el despliegue de la aplicación. En este caso, los requisitos son:

Para proceder al despliegue debes descargar, de este repositorio, los siguientes ficheros:

IMPORTANTE: Mantén los subdirectorios intactos.

Opcionalmente modificar los ficheros /ConfigFiles/php.ini.modificar y /ConfigFiles/config.ini.modificar a tu gusto.

A continuación debes compilar la imagen. Para ello, desde el directorio raiz (donde tengas el fichero Dockerfile), ejecuta el siguiente comando:

docker build -t nombre_imagen:tag .

Recuerda muy bien el nombre de la imagen y el tag que pongas ya que será necesario para el siguiente paso, que consiste en configurar el docker-compose.yml.

En él, solo tenemos que cambiar la etiqueta image del servicio omeka_app:

...
  omeka_app:
    image: nombre_imagen:tag

Si hemos publicado nuestra imagen en DockerHub, deberemos añadir además nuestro nombre de usuario (e.g. username/nombre_de_mi_imagen:tag).

Por último, debes crear los secrets correspondientes a las contraseñas de la base de datos:

echo 'contraseña_usuario_db' | docker secret create omeka_db_password -
echo 'contraseña_root_db' | docker secret create omeka_db_root_password -
cp configFiles/db.ini.modificar configFiles/db.ini
cp configFiles/mail.ini.modificar configFiles/db.ini

IMPORTANTE: debes modificar los ficheros recién creados (db.ini y mail.ini con los datos relacionados con la base de datos y el protocolo IMAP. Ten en cuenta que la contraseña que introduzcas en el fichero tiene que coincidir con la del secret omeka_db_password.

Por último, ejecuta el siguiente comando desde el directorio raiz (donde se encuentra docker-compose.yml).

docker stack deploy -c docker-compose.yml nombre_del_entorno

Desde este instante la aplicación debería ser accesible desde el navegador (puerto 80). El último paso consistiría en completar la instalación guiada desde el navegador, disponible en el directorio /install/ de la aplicación (e.g. http://localhost/install).

Kubernetes

Requisitos:

El primer paso para desplegar la aplicación mediante Kubernetes es montar nuestra imagen Docker (Sigue los primeros pasos del punto anterior, hasta la compilación de la imagen).

El siguiente paso consiste en desplegar la aplicación. Para esta tarea utilizo el gestor de objetos Kustomize. Por ello, deberás contar con dicha herramienta. Además debes estar en posesión de los siguientes ficheros alojados en este repositorio:

Se deben definir en el servidor los secrets y configMaps utilizados por los ficheros de configuración .yaml.

Para ello se ejecutan los siguientes comandos:

   kubectl create secret generic omeka-db \
   --from-literal=user-password=<contraseña_db_usuario> \
   --from-literal=root-password=<contraseña_db_root> \
   --from-literal=username=<nombre_usuario>\
   --from-literal=database=<nombre_bd>
   kubectl create secret generic omeka-snmp \
   --from-literal=host=<host_snmp> \
   --from-literal=username=<correo_electronico> \
   --from-literal=password=<contraseña_correo> \
   --from-literal=port=<puerto_snmp> \
   --from-literal=ssl=<protocolo_seguridad_snmp>
   kubectl create secret generic omeka-imap \
   --from-literal=host=<host_imap> \
   --from-literal=username=<correo_electronico> \
   --from-literal=password=<contraseña_correo> \
   --from-literal=port=<puerto_imap> \
   --from-literal=ssl=<protocolo_seguridad_imap>
   kubectl create configmap db-config \
   --from-file=./configFiles/db.ini.gke
   kubectl create configmap snmp-config \
   --from-file=./configFiles/config.ini.gke
   kubectl create configmap imap-config \
   --from-file=./configFiles/mail.ini.gke

Por último, debemos indicar el identificador de nuestra imagen Docker en el fichero /gke-omeka/deployment.yaml.

...
    spec:
      containers:
      - image: nombre_imagen:tag
...

A continuación, desde el directorio raíz, ejecutar el siguiente comando:

kustomize build . | kubectl apply -f -

Desde este instante la aplicación debería ser accesible desde el navegador (puerto 80). El último paso consistiría en completar la instalación guiada desde el navegador, disponible en el directorio /install/ de la aplicación (e.g. http://localhost/install).

📦 Plugins

Plugins propios

Nombre Descripción
ARIADNEplus Tracking Lleva un seguimiento del proceso de importación a ARIADNEplus
CENIEHExport Permite exportar los ítems en un formato XML compatible con ARIADNEplus
Collection Files Permite asociar ficheros a colecciones
Tags Manager Gestiona los tags existentes en la plataforma
Admin Menu Design Cambia el diseño del menú y añade secciones a este
Auto Dublin Core Actualiza el campo "Is Part Of" y "Source" del modelo de metadatos "Dublin Core" de forma automática

Plugins de terceros modificados

Nombre Descripción de los cambios
Geolocation Nuevo formato de localización (Bounding Box), Sincronización con los metadatos.
OAI-PMH Repository Añadir una hoja de estilo (Stylesheet) a los documentos XML generados
OAI-PMH Harvester Convertir la codificación de los metadatos importados a UTF-8
CSV Import Plus PopUps de ayuda y actualización automática

Plugins de terceros utilizados

Nombre Descripción
BulkMetadataEditor Permite editar multitud de ítems a la vez
CSVExport Exporta ítems en formato CSV
DublinCoreExtended Añade el esquema de metadatos Dublin Core Extended a la plataforma
GettySuggest Sugiere términos del vocabulario Getty AAT a la hora de rellenar metadatos
Hide Elements Permite ocultar campos del esquema de metadatos
HistoryLog Genera registros en cada creación/modificación/eliminación de ítems
OaiPmhRepository Permite que otros repositorios puedan importar metadatos existentes en tu repositorio a través del protocolo OAI-PMH
OaiPmhHarvester Permite importar metadatos de otros repositorios a través del protocolo OAI-PMH
SimplePages Permite añadir páginas al repositorio de una forma sencilla.
SimpleVocab Añade vocabularios al gestor.
SuperRss Permite compartir publicaciones en redes sociales

🎨 Tema

Nombre Descripción
Curatescape Diseño minimalista y elegante

📜 Licencia

Todo el software desarrollado está bajo la licencia GPLv3