# Instalación de GBS Web Apps

## Introducción

Este manual describe el procedimiento de instalación y actualización de los servidores Griaule para las Aplicaciones Web.

Para realizar la instalación, algunos archivos deben estar disponibles en la máquina en la que se instalará la aplicación:

* Archivo .war de la aplicación, `gbs-<app_name>-web-server-<version>.war`;
* Script de volcado (dump) de la base de datos, `clear-<app_name>-<DD>-<MM>-<YYYY>.sql`, si está instalando;
* Script de actualización de la base de datos, `upgrade-<app_name>-<DD>-<MM>-<YYYY>.sql`, si está actualizando;
* Script de la base de datos Sphinx, `clear-sphinx-<DD>-<MM>-<YYYY>.sql`;
* Paquete Apache Tomcat, `tomcats-v7.tar`;
* Script de setup `setup.sh`;
* Script Python auxiliar para configuración `updatescript.py`;
* Scripts de [Pre-Instalación](#pre-instalacao): `setup_webapps.sh` y, opcionalmente, `setup_aliases.sh` si desea crear [Aliases](#manuseando-as-aplicacoes).

{% hint style="warning" %}
Si falta algún archivo, contacte al Equipo de Soporte de Griaule por correo electrónico: <support@griaule.com>.
{% endhint %}

Para realizar una nueva instalación, siga los siguientes pasos:

1. Verifique si su sistema cumple con los [Pre-Requisitos](#pre-requisitos)
2. Haga la [Pre-Instalación](#pre-instalacao) utilizando el script
3. [Instale](#instalacao) la aplicación
4. [Configure](#configuracoes) la aplicación
5. Verifique si la aplicación se está ejecutando mediante los comandos presentados en [Manejo de las Aplicaciones](#manuseando-as-aplicacoes)

Para actualizar una aplicación, siga los pasos:

1. Verifique si su sistema cumple con los [Pre-Requisitos](#pre-requisitos) de la nueva versión
2. [Actualice](#atualizacao) la aplicación a través de los comandos presentados
3. Verifique las [Configuraciones](#configuracoes)
4. Verifique si la aplicación se está ejecutando mediante los comandos presentados en [Manejo de las Aplicaciones](#manuseando-as-aplicacoes)

## Pre-Requisitos

* Linux (CentOS 7 / Red Hat 7 / Oracle Linux 7 / Oracle Linux 8);
* Java Development Kit versión 1.8+;
* Apache: Tomcat versión 7+;
* Base de datos: MySQL/MariaDB 5.7+;
* libusb, libpng12, compat-libtiff3;
* GBDS: API;
* GBDS: Matcher;
* GBDS: Notifier (solamente para el [ETR](/gbs/es/aplicaciones/etrweb.md));
* [Google Tesseract OCR Engine 4.0.0 o superior](https://github.com/tesseract-ocr/tesseract/releases) (solamente para el [CardScan](/gbs/es/aplicaciones/cardscanweb.md));
* [SmartSense Agent](/gbs/es/instalacion-de-gbds/smartsenseagent.md) (solamente para el [SmartSense](/gbs/es/aplicaciones/smartsense.md))
* [CUPS](/gbs/es/componentes-web/printconfig.md#sistemas-de-impressao) (solamente para el [Print](/gbs/es/aplicaciones/print.md))

{% hint style="info" %}
Para saber más sobre los productos del Griaule Biometric Suite (GBS), consulte [Visión General del GBS](/gbs/es/vision-general/readme.md).
{% endhint %}

## Pre-Instalación

Algunos pasos deben hacerse antes del proceso de instalación.

{% hint style="info" %}
Si Tomcat no está instalado, instálelo con el siguiente comando:

```sh
yum install tomcat -y
```

{% endhint %}

{% hint style="success" %}
En todos los comandos, recuerde reemplazar `<app_name>` por el nombre de la aplicación deseada y también `<version>` por la versión correspondiente. El `<app_name>` puede ser: `bcc`, `cardscan`, `etr`, `mir`, `best`, `intelligence`, `smart-sense`, `print`, `control-panel` o `home-screen`.
{% endhint %}

Primero, asegúrese de que el paquete Tomcats (archivo `tomcats-v7.tar`) proporcionado esté disponible en la máquina en la que se instalará la aplicación.

{% hint style="info" %}
El paquete `tomcats-v7.tar` contiene una carpeta para cada aplicación. La estructura de carpetas es la siguiente:

```html
/var/lib/tomcats/
├── bcc
├── best
├── cardscan
├── control-panel
├── etr
├── home-screen
├── intelligence
├── mir
├── print
└── smart-sense
```

Cada carpeta contiene las siguientes subcarpetas:

```html
/var/lib/tomcats/<app_name>/
├── conf
├── logs
├── temp
├── webapps
└── work
```

{% endhint %}

{% hint style="danger" %}
Si no está realizando una instalación nueva de todas las aplicaciones, **NO** extraiga el paquete `tomcats-v7.tar` en el directorio `/var/lib/tomcats/` (Paso 1). En su lugar, extraiga el paquete en un directorio temporal y mueva solo la carpeta de la aplicación que se está instalando al directorio `/var/lib/tomcats/`. Luego, continúe en el **Paso 2**.
{% endhint %}

**Paso 1:** Transfiera y descomprima el paquete `tomcats-v7.tar` en el directorio `/var/lib/tomcats`.

```sh
mkdir -p /var/lib/tomcats && tar -xf tomcats-v7.tar -C /var/lib/tomcats
```

**Paso 2:** Realice la pre-instalación de la aplicación utilizando el script `setup_webapps.sh` proporcionado.

Para realizar este procedimiento, ejecute el script de pre-instalación pasando el nombre de la aplicación que desea instalar:

```sh
./setup_webapps.sh <app_name>
```

**Paso 3:** Configure los aliases (opcional).

Opcionalmente, si desea crear [aliases](#manuseando-as-aplicacoes) para facilitar el manejo de la aplicación, ejecute el siguiente script:

```sh
./setup_aliases.sh <app_name>
```

Luego, aplique el archivo `.bashrc`:

```sh
source ~/.bashrc
```

Estos scripts harán:

* Crear enlaces simbólicos del tomcat para cada servicio
* Actualizar/modificar scripts del servidor tomcat
* Agregar aliases para facilitar el manejo de la aplicación

{% hint style="info" %}
Después de estos pasos, si el Cardscan Server y/o ETR se están instalando, siga los pasos a continuación.

Abra el archivo de configuración de la base de datos:

```sh
vim /etc/my.cnf
```

En `[mysqld]`, si se está instalando CardScan, agregue la siguiente línea:

```properties
# CARDSCAN Required
max_allowed_packet=500M
```

Si se está instalando ETR, agregue la siguiente línea:

```properties
# ETR Required
sql-mode=""
```

Si ya está configurado, ignore este paso.
{% endhint %}

Después de completar los procedimientos anteriores, proceda a [Instalación](#instalacao).

## Instalación

Antes de iniciar el procedimiento de instalación, asegúrese de que el archivo `.war` de la aplicación esté disponible en la máquina en la que se instalará la aplicación.

{% hint style="success" %}
En todos los comandos, recuerde reemplazar `<app_name>` por el nombre de la aplicación deseada y también `<version>` por la versión correspondiente. El `<app_name>` puede ser: `bcc`, `cardscan`, `etr`, `mir`, `best`, `intelligence`, `smart-sense`, `print`, `control-panel` o `home-screen`.
{% endhint %}

**Paso 1:** Mueva el archivo `.war` de la aplicación al directorio raíz de la aplicación:

```sh
mv *.war /var/lib/tomcats/<app_name>/
```

**Paso 2:** Cambie al directorio `webapps` de la aplicación:

```sh
cd /var/lib/tomcats/<app_name>/webapps
```

**Paso 3:** Cree un enlace simbólico en el directorio `webapps` para el archivo `.war` de la aplicación.

```sh
ln -s /var/lib/tomcats/<app_name>/gbs-<app_name>-web-server-<version>.war gbs-<app_name>-server.war
```

**Paso 4:** Cambie de directorio:

```sh
cd /var/lib/
```

**Paso 5:** Cambie la propiedad de los archivos en el directorio `tomcats` al usuario `tomcat`:

```sh
chown -R tomcat:tomcat tomcats/
```

Luego, proceda con las [Configuraciones](#configuracoes) de la aplicación.

## Actualización

Para actualizar una aplicación, proceda con los siguientes pasos:

{% hint style="success" %}
En todos los comandos, recuerde reemplazar `<app_name>` por el nombre de la aplicación deseada y también `<version>` por la versión correspondiente. El `<app_name>` puede ser: `bcc`, `cardscan`, `etr`, `mir`, `best`, `intelligence`, `smart-sense`, `print`, `control-panel` o `home-screen`.
{% endhint %}

**Paso 1:** Detenga la aplicación:

```sh
systemctl stop tomcat@<app_name>.service
```

**Paso 2:** Elimine los archivos antiguos:

```sh
sudo rm -rf /var/lib/tomcats/<app_name>/webapps/*
```

**Paso 3:** Coloque el archivo `.war` de la aplicación en el directorio raíz de la aplicación:

```sh
mv *.war /var/lib/tomcats/<app_name>/
```

**Paso 4:** Cambie al directorio `webapps` de la aplicación:

```sh
cd /var/lib/tomcats/<app_name>/webapps
```

**Paso 5:** Cree un enlace simbólico en el directorio `webapps` para el archivo `.war` de la aplicación:

```sh
ln -s /var/lib/tomcats/<app_name>/gbs-<app_name>-web-server-<version>.war gbs-<app_name>-server.war
```

**Paso 6:** Ejecute los dumps de actualización de la base de datos, si la release los incluye:

```sh
mysql -u root -p < <path/to/script>.sql
```

{% hint style="success" %}
El script específico de la aplicación generalmente se llama `upgrade-<app_name>-<DD>-<MM>-<YYYY>.sql`. Puede haber más de un script. En ese caso, ejecute los otros scripts también.
{% endhint %}

**Paso 7:** Inicie la aplicación:

```sh
systemctl start tomcat@<app_name>.service
```

**Paso 8:** Cambie al directorio `tomcats`:

```sh
cd /var/lib/tomcats
```

**Paso 9:** Ejecute el script de setup:

```sh
/var/lib/tomcats/setup.sh <app_name>
```

## Configuraciones

Cada componente tiene su configuración individual. Estas se presentan en su respectivo manual.

{% hint style="success" %}
En todos los comandos, recuerde reemplazar `<app_name>` por el nombre de la aplicación deseada y también `<version>` por la versión correspondiente. El `<app_name>` puede ser: `bcc`, `cardscan`, `etr`, `mir`, `best`, `intelligence`, `smart-sense`, `print`, `control-panel` o `home-screen`.
{% endhint %}

**Paso 1:** Ejecute el volcado (dump) de la base de datos:

```sh
mysql -u root -p < <path/to/script>.sql
```

{% hint style="success" %}
El script de volcado de la base de datos específico de cada aplicación generalmente se llama `clear-<app_name>-<DD>-<MM>-<YYYY>.sql`. Puede haber otro script, generalmente llamado `clear-sphinx-<DD>-<MM>-<YYYY>.sql`. En ese caso, ejecútelo también.
{% endhint %}

**Paso 2:** Luego, edite el archivo `config.properties`:

```sh
vim /var/lib/tomcats/<app_name>/conf/config.properties
```

Para entender los procedimientos de configuración, consulte el manual de configuración específico:

* [Manual de Configuración del BCC Web Server](/gbs/es/componentes-web/bccwebconfig.md)
* [Manual de Configuración del Cardscan Web Server](/gbs/es/componentes-web/cardscanwebconfig.md)
* [Manual de Configuración del ETR Web Server](/gbs/es/componentes-web/etrwebconfig.md)
* [Manual de Configuración del MIR Web Server](/gbs/es/componentes-web/mirwebconfig.md)
* [Manual de Configuración del BEST Web Server](/gbs/es/componentes-web/bestwebconfig.md)
* [Manual de Configuración del Intelligence Web Server](/gbs/es/componentes-web/intelligencewebconfig.md)
* [Manual de Configuración del SmartSense Server](/gbs/es/componentes-web/smartsenseconfig.md)
* [Manual de Configuración del Control Panel Web Server](/gbs/es/componentes-web/controlpanelwebconfig.md)
* [Manual de Configuración del Print Server](/gbs/es/componentes-web/printconfig.md)
* [Manual de Configuración del Home Screen Server](/gbs/es/componentes-web/homescreenconfig.md)

{% hint style="info" %}
Asegúrese de que el parámetro de configuración `Connector port=<port_number>` esté especificado correctamente en el archivo `server.xml`, ubicado en `/var/lib/tomcats/<app_name>/conf`. Para más información, consulte los manuales de configuración específicos para cada aplicación. Los puertos de conexión (`Connector port=<port_number>`) y de apagado (`Server port=... shutdown=...`) no deben ser iguales entre sí ni coincidir con puertos usados por otras aplicaciones.
{% endhint %}

{% hint style="info" %}
Asegúrese de que los parámetros de configuración `<app_name>.ip`, `<app_name>.port` y `<app_name>.protocol` estén correctamente especificados en el archivo `config.properties`. La dirección IP debe coincidir con la configurada en el archivo `server.xml`. En muchos casos, la IP será la misma para varias aplicaciones. Sin embargo, cada aplicación tendrá un puerto **distinto y único**.
{% endhint %}

**Paso 3:** A continuación, ingrese en MySQL como root:

```sh
mysql -u root -p
```

**Paso 4:** Ejecute la siguiente query:

```sql
SET GLOBAL sql_mode=(SELECT REPLACE(@@sql_mode,'ONLY_FULL_GROUP_BY',''));
```

**Paso 5:** Salga de MySQL:

```sql
exit
```

**Paso 6:** Luego, inicie la aplicación.

```sh
systemctl start tomcat@<app_name>.service
```

**Paso 7:** Cambie al directorio `tomcats`:

```sh
cd /var/lib/tomcats
```

**Paso 8:** Si es la primera vez que ejecuta la aplicación, ejecute el script de setup:

```sh
/var/lib/tomcats/setup.sh <app_name>
```

{% hint style="warning" %}
Si está instalando el **SmartSense**, asegúrese de que el **ELK** también esté instalado. Para más instrucciones, consulte el [Manual de Instalación del Elastic Stack (ELK)](/gbs/es/herramientas-auxiliares/elk.md).
{% endhint %}

## Manejo de las Aplicaciones

Esta sección presenta algunos comandos para monitorear y manejar los servicios Griaule, así como sus respectivos aliases.

### Aliases

Los aliases son comandos cortos definidos por el usuario que sirven como sustitutos para comandos más largos o complejos. Se crean para hacer que los comandos usados con frecuencia sean más convenientes de ejecutar. Cuando se invoca un alias, se sustituye por el comando completo que representa antes de ejecutarlo.

Si no está utilizando el script `setup_aliases.sh`, como se describe en [Pre-Instalación](#pre-instalacao), es posible agregar los aliases manualmente. Para hacer esto, edite el archivo `.bashrc` raíz:

```sh
vim ~/.bashrc
```

Y agregue los siguientes aliases, de acuerdo con la aplicación deseada:

```properties
# ETR
alias etrstart='systemctl start tomcat@etr.service'
alias etrstop='systemctl stop tomcat@etr.service'
alias etrstatus='systemctl status tomcat@etr.service'
alias etrhome='cd /var/lib/tomcats/etr'
alias etrconf='vim /var/lib/tomcats/etr/conf/config.properties'
alias etrsetup='/var/lib/tomcats/setup.sh'
alias etrlogt='journalctl -u tomcat@etr -f'
alias etrlog='journalctl -u tomcat@etr | less'

# CARDSCAN
alias csstart='systemctl start tomcat@cardscan.service'
alias csstop='systemctl stop tomcat@cardscan.service'
alias csstatus='systemctl status tomcat@cardscan.service'
alias cshome='cd /var/lib/tomcats/cardscan'
alias csconf='vim /var/lib/tomcats/cardscan/conf/config.properties'
alias cssetup='/var/lib/tomcats/setup.sh'
alias cslogt='journalctl -u tomcat@cardscan -f'
alias cslog='journalctl -u tomcat@cardscan | less'

# BEST
alias beststart='systemctl start tomcat@best.service'
alias beststop='systemctl stop tomcat@best.service'
alias beststatus='systemctl status tomcat@best.service'
alias besthome='cd /var/lib/tomcats/best'
alias bestconf='vim /var/lib/tomcats/best/conf/config.properties'
alias bestsetup='/var/lib/tomcats/setup.sh'
alias bestlogt='journalctl -u tomcat@best -f'
alias bestlog='journalctl -u tomcat@best | less'

# INTELLIGENCE
alias intelstart='systemctl start tomcat@intelligence.service'
alias intelstop='systemctl stop tomcat@intelligence.service'
alias intelstatus='systemctl status tomcat@intelligence.service'
alias intelhome='cd /var/lib/tomcats/intelligence'
alias intelconf='vim /var/lib/tomcats/intelligence/conf/config.properties'
alias intelsetup='/var/lib/tomcats/setup.sh'
alias intellogt='journalctl -u tomcat@intelligence -f'
alias intellog='journalctl -u tomcat@intelligence | less'

# MIR
alias mirstart='systemctl start tomcat@mir.service'
alias mirstop='systemctl stop tomcat@mir.service'
alias mirstatus='systemctl status tomcat@mir.service'
alias mirhome='cd /var/lib/tomcats/mir'
alias mirconf='vim /var/lib/tomcats/mir/conf/config.properties'
alias mirsetup='/var/lib/tomcats/setup.sh'
alias mirlogt='journalctl -u tomcat@mir -f'
alias mirlog='journalctl -u tomcat@mir | less'

# BCC
alias bccstart='systemctl start tomcat@bcc.service'
alias bccstop='systemctl stop tomcat@bcc.service'
alias bccstatus='systemctl status tomcat@bcc.service'
alias bcchome='cd /var/lib/tomcats/bcc'
alias bccconf='vim /var/lib/tomcats/bcc/conf/config.properties'
alias bccsetup='/var/lib/tomcats/setup.sh'
alias bcclogt='journalctl -u tomcat@bcc -f'
alias bcclog='journalctl -u tomcat@bcc | less'

# CONTROL PANEL
alias cpstart='systemctl start tomcat@control-panel.service'
alias cpstop='systemctl stop tomcat@control-panel.service'
alias cpstatus='systemctl status tomcat@control-panel.service'
alias cphome='cd /var/lib/tomcats/control-panel'
alias cpconf='vim /var/lib/tomcats/control-panel/conf/config.properties'
alias cpsetup='/var/lib/tomcats/setup.sh'
alias cplogt='journalctl -u tomcat@control-panel -f'
alias cplog='journalctl -u tomcat@control-panel | less'

# SMARTSENSE
alias smartstart='systemctl start tomcat@smart-sense.service'
alias smartstop='systemctl stop tomcat@smart-sense.service'
alias smartstatus='systemctl status tomcat@smart-sense.service'
alias smarthome='cd /var/lib/tomcats/smart-sense'
alias smartconf='vim /var/lib/tomcats/smart-sense/conf/config.properties'
alias smartsetup='/var/lib/tomcats/setup.sh'
alias smartlogt='journalctl -u tomcat@smart-sense -f'
alias smartlog='journalctl -u tomcat@smart-sense | less'

# PRINT
alias printstart='systemctl start tomcat@print.service'
alias printstop='systemctl stop tomcat@print.service'
alias printstatus='systemctl status tomcat@print.service'
alias printhome='cd /var/lib/tomcats/print'
alias printconf='vim /var/lib/tomcats/print/conf/config.properties'
alias printsetup='/var/lib/tomcats/setup.sh'
alias printlogt='journalctl -u tomcat@print -f'
alias printlog='journalctl -u tomcat@print | less'

# HOME SCREEN
alias homestart='systemctl start tomcat@home-screen.service'
alias homestop='systemctl stop tomcat@home-screen.service'
alias homestatus='systemctl status tomcat@home-screen.service'
alias homehome='cd /var/lib/tomcats/home-screen'
alias homeconf='vim /var/lib/tomcats/home-screen/conf/config.properties'
alias homesetup='/var/lib/tomcats/setup.sh'
alias homelogt='journalctl -u tomcat@home-screen -f'
alias homelog='journalctl -u tomcat@home-screen | less'
```

### Comandos Útiles

* **Iniciar la Aplicación**

```sh
systemctl start tomcat@etr.service
systemctl start tomcat@cardscan.service
systemctl start tomcat@best.service
systemctl start tomcat@intelligence.service
systemctl start tomcat@mir.service
systemctl start tomcat@bcc.service
systemctl start tomcat@control-panel.service
systemctl start tomcat@smart-sense.service
systemctl start tomcat@print.service
systemctl start tomcat@home-screen.service
```

o con el alias:

```sh
etrstart
csstart
beststart
intelstart
mirstart
bccstart
cpstart
smartstart
printstart
homestart
```

* **Detener la Aplicación**

```sh
systemctl stop tomcat@etr.service
systemctl stop tomcat@cardscan.service
systemctl stop tomcat@best.service
systemctl stop tomcat@intelligence.service
systemctl stop tomcat@mir.service
systemctl stop tomcat@bcc.service
systemctl stop tomcat@control-panel.service
systemctl stop tomcat@smart-sense.service
systemctl stop tomcat@print.service
systemctl stop tomcat@home-screen.service
```

o con el alias:

```sh
etrstop
csstop
beststop
intelstop
mirstop
bccstop
cpstop
smartstop
printstop
homestop
```

* **Comprobar el Estado de la Aplicación**

```sh
systemctl status tomcat@etr.service
systemctl status tomcat@cardscan.service
systemctl status tomcat@best.service
systemctl status tomcat@intelligence.service
systemctl status tomcat@mir.service
systemctl status tomcat@bcc.service
systemctl status tomcat@control-panel.service
systemctl status tomcat@smart-sense.service
systemctl status tomcat@print.service
systemctl status tomcat@home-screen.service
```

o con el alias:

```sh
etrstatus
csstatus
beststatus
intelstatus
mirstatus
bccstatus
cpstatus
smartstatus
printstatus
homestatus
```

* **Comprobar los Logs de la Aplicación**

```sh
# tail log
journalctl -u tomcat@etr -f
journalctl -u tomcat@cardscan -f
journalctl -u tomcat@best -f
journalctl -u tomcat@intelligence -f
journalctl -u tomcat@mir -f
journalctl -u tomcat@bcc -f
journalctl -u tomcat@control-panel -f
journalctl -u tomcat@smart-sense -f
journalctl -u tomcat@print -f
journalctl -u tomcat@home-screen -f

# full log
journalctl -u tomcat@etr | less
journalctl -u tomcat@cardscan | less
journalctl -u tomcat@best | less
journalctl -u tomcat@intelligence | less
journalctl -u tomcat@mir | less
journalctl -u tomcat@bcc | less
journalctl -u tomcat@control-panel | less
journalctl -u tomcat@smart-sense | less
journalctl -u tomcat@print | less
journalctl -u tomcat@home-screen | less
```

o con el alias:

```sh
# tail log
etrlogt
cslogt
bestlogt
intellogt
mirlogt
bcclogt
cplogt
smartlogt
printlogt
homelogt

# full log
etrlog
cslog
bestlog
intellog
mirlog
bcclog
cplog
smartlog
printlog
homelog
```


---

# Agent Instructions: Querying This Documentation

If you need additional information that is not directly available in this page, you can query the documentation dynamically by asking a question.

Perform an HTTP GET request on the current page URL with the `ask` query parameter:

```
GET https://docs.griaule.com/gbs/es/componentes-web/gbsappssetup.md?ask=<question>
```

The question should be specific, self-contained, and written in natural language.
The response will contain a direct answer to the question and relevant excerpts and sources from the documentation.

Use this mechanism when the answer is not explicitly present in the current page, you need clarification or additional context, or you want to retrieve related documentation sections.
