# Instalação do GBS Web Apps

## Introdução

Esse manual descreve o procedimento de instalação e atualização dos servidores Griaule para as Aplicações Web.

Para realizar a instalação, alguns arquivos precisam estar disponíveis na máquina em que a aplicação será instalada:

* Arquivo .war da aplicação, `gbs-<app_name>-web-server-<version>.war`;
* Script de dump do banco de dados, `clear-<app_name>-<DD>-<MM>-<YYYY>.sql`, se estiver instalando;
* Script de atualização do banco de dados, `upgrade-<app_name>-<DD>-<MM>-<YYYY>.sql`, se estiver atualizando;
* Script do banco de dados Sphinx, `clear-sphinx-<DD>-<MM>-<YYYY>.sql`;
* Pacote Apache Tomcat, `tomcats-v7.tar`;
* Script de setup `setup.sh`;
* Script Python auxiliar para configuração `updatescript.py`;
* Scripts de [Pré-Instalação](#pre-instalacao): `setup_webapps.sh` e, opcionalmente, `setup_aliases.sh` se desejar criar [Aliases](#manuseando-as-aplicacoes).

{% hint style="warning" %}
Se algum arquivo estiver faltando, entre em contato com a Equipe de Suporte da Griaule pelo e-mail: <support@griaule.com>.
{% endhint %}

Para fazer uma nova instalação, siga os seguintes passos:

1. Verifique se o seu sistema atende aos [Pré-Requisitos](#pre-requisitos)
2. Faça a [Pré-Instalação](#pre-instalacao) utilizando o script
3. [Instale](#instalacao) a aplicação
4. [Configure](#configuracoes) a aplicação
5. Verifique se a aplicação está sendo executada por meio dos comandos apresentados em [Manuseando as Aplicações](#manuseando-as-aplicacoes)

Para atualizar uma aplicação, siga as etapas:

1. Verifique se o seu sistema atende aos [Pré-Requisitos](#pre-requisitos) da nova versão
2. [Atualize](#atualizacao) a aplicação através dos comandos apresentados
3. Verifique as [Configurações](#configuracoes)
4. Verifique se a aplicação está sendo executada por meio dos comandos apresentados em [Manuseando as Aplicações](#manuseando-as-aplicacoes)

## Pré-Requisitos

* Linux (CentOS 7 / Red Hat 7 / Oracle Linux 7 / Oracle Linux 8);
* Java Development Kit version 1.8+;
* Apache: Tomcat version 7+;
* Database: MySQL/MariaDB 5.7+;
* libusb, libpng12, compat-libtiff3;
* GBDS: API;
* GBDS: Matcher;
* GBDS: Notifier (somente para o [ETR](/aplicacoes/etrweb.md));
* [Google Tesseract OCR Engine 4.0.0 ou maior](https://github.com/tesseract-ocr/tesseract/releases) (somente para o [CardScan](/aplicacoes/cardscanweb.md));
* [SmartSense Agent](/instalacao-do-gbds/smartsenseagent.md) (somente para o [SmartSense](/aplicacoes/smartsense.md))
* [CUPS](/componentes-web/printconfig.md#sistemas-de-impressao) (somente para o [Print](/aplicacoes/print.md))

{% hint style="info" %}
Para saber mais sobre os produtos do Griaule Biometric Suite (GBS), consulte [Visão Geral do GBS](/visao-geral/readme.md).
{% endhint %}

## Pré-Instalação

Alguns passos precisam ser feitos antes do processo de instalação.

{% hint style="info" %}
Se o Tomcat não estiver instalado, instale-o com o seguinte comando:

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

{% endhint %}

{% hint style="success" %}
Em todos os comandos, lembre-se de substituir `<app_name>` para o nome da aplicação desejada e também `<version>` para a versão correspondente. O `<app_name>` pode ser: `bcc`, `cardscan`, `etr`, `mir`, `best`, `intelligence`, `smart-sense`, `print`, `control-panel` ou `home-screen`.
{% endhint %}

Primeiro, certifique-se de que o pacote Tomcats (arquivo `tomcats-v7.tar`) fornecido esteja disponível na máquina em que a aplicação será instalada.

{% hint style="info" %}
O pacote `tomcats-v7.tar` contém uma pasta para cada aplicação. A estrutura de pastas é a seguinte:

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

Cada pasta contém as seguintes subpastas:

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

{% endhint %}

{% hint style="danger" %}
Se não estiver realizando uma instalação nova de todas as aplicações, **NÃO** extraia o pacote `tomcats-v7.tar` no diretório `/var/lib/tomcats/` (Passo 1). Em vez disso, extraia o pacote em um diretório temporário e mova apenas a pasta da aplicação que está sendo instalada para o diretório `/var/lib/tomcats/`. Então, continue no **Passo 2**.
{% endhint %}

**Passo 1:** Transfira e descompacte o pacote `tomcats-v7.tar` no diretório `/var/lib/tomcats`.

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

**Passo 2:** Faça a pré-instalação da aplicação utilizando o script `setup_webapps.sh` fornecido.

Para realizar este procedimento, execute o script de pré-instalação passando o nome da aplicação que se deseja instalar:

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

**Passo 3:** Configure os aliases (opcional).

Opcionalmente, se desejar criar [aliases](#manuseando-as-aplicacoes) para facilitar o manuseio da aplicação, execute o seguinte script:

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

Então, aplique o arquivo `.bashrc`:

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

Esses scripts irão:

* Criar links simbólicos do tomcat para cada serviço
* Atualizar/modificar scripts do servidor tomcat
* Adicionar aliases para facilitar o manuseio da aplicação

{% hint style="info" %}
Após esses passos, se o Cardscan Server e/ou ETR estiverem sendo instalados, siga os passos abaixo.

Abra o arquivo de configuração do banco de dados:

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

Em `[mysqld]`, se o CardScan estiver sendo instalado, adicione a seguinte linha:

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

Se o ETR estiver sendo instalado, adicione a seguinte linha:

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

Se já estiver configurado, ignore este passo.
{% endhint %}

Após a conclusão dos procedimentos acima, prossiga para [Instalação](#instalacao).

## Instalação

Antes de iniciar o procedimento de instalação, certifique-se de que o arquivo `.war` da aplicação esteja disponível na máquina em que a aplicação será instalada.

{% hint style="success" %}
Em todos os comandos, lembre-se de substituir `<app_name>` para o nome da aplicação desejada e também `<version>` para a versão correspondente. O `<app_name>` pode ser: `bcc`, `cardscan`, `etr`, `mir`, `best`, `intelligence`, `smart-sense`, `print`, `control-panel` ou `home-screen`.
{% endhint %}

**Passo 1:** Mova o arquivo `.war` da aplicação para o diretório inicial da aplicação:

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

**Passo 2:** Mude para o diretório `webapps` da aplicação:

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

**Passo 3:** Crie um link simbólico no diretório `webapps` para o arquivo `.war` da aplicação.

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

**Passo 4:** Mude de diretório:

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

**Passo 5:** Altere a posse dos arquivos no diretório `tomcats` para o usuário `tomcat`:

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

Então, prossiga com as [Configurações](#configuracoes) da aplicação.

## Atualização

Para atualizar uma aplicação, prossiga com as seguintes etapas:

{% hint style="success" %}
Em todos os comandos, lembre-se de substituir `<app_name>` para o nome da aplicação desejada e também `<version>` para a versão correspondente. O `<app_name>` pode ser: `bcc`, `cardscan`, `etr`, `mir`, `best`, `intelligence`, `smart-sense`, `print`, `control-panel` ou `home-screen`.
{% endhint %}

**Passo 1:** Pare a aplicação:

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

**Passo 2:** Remova os arquivos antigos:

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

**Passo 3:** Coloque o arquivo `.war` da aplicação no diretório inicial da aplicação:

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

**Passo 4:** Mude para o diretório `webapps` da aplicação:

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

**Passo 5:** Crie um link simbólico no diretório `webapps` para o arquivo `.war` da aplicação:

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

**Passo 6:** Execute os dumps de atualização do banco de dados, se a release os incluir:

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

{% hint style="success" %}
O script específico da aplicação geralmente é chamado `upgrade-<app_name>-<DD>-<MM>-<YYYY>.sql`. Pode haver mais de um script. Nesse caso, execute os outros scripts também.
{% endhint %}

**Passo 7:** Inicie a aplicação:

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

**Passo 8:** Mude para o diretório `tomcats`:

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

**Passo 9:** Execute o script de setup:

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

## Configurações

Cada componente tem sua configuração individual. Esses são apresentados em seu respectivo manual.

{% hint style="success" %}
Em todos os comandos, lembre-se de substituir `<app_name>` para o nome da aplicação desejada e também `<version>` para a versão correspondente. O `<app_name>` pode ser: `bcc`, `cardscan`, `etr`, `mir`, `best`, `intelligence`, `smart-sense`, `print`, `control-panel` ou `home-screen`.
{% endhint %}

**Passo 1:** Execute o dump do banco de dados:

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

{% hint style="success" %}
O script de dump do banco de dados específico de cada aplicação geralmente é chamado `clear-<app_name>-<DD>-<MM>-<YYYY>.sql`. Pode haver outro script, geralmente chamado `clear-sphinx-<DD>-<MM>-<YYYY>.sql`. Neste, caso, execute-o também.
{% endhint %}

**Passo 2:** Então, edite o arquivo `config.properties`:

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

Para entender os procedimentos de configuração, consulte o manual de configuração específico:

* [Manual de Configuração do BCC Web Server](/componentes-web/bccwebconfig.md)
* [Manual de Configuração do Cardscan Web Server](/componentes-web/cardscanwebconfig.md)
* [Manual de Configuração do ETR Web Server](/componentes-web/etrwebconfig.md)
* [Manual de Configuração do MIR Web Server](/componentes-web/mirwebconfig.md)
* [Manual de Configuração do BEST Web Server](/componentes-web/bestwebconfig.md)
* [Manual de Configuração do Intelligence Web Server](/componentes-web/intelligencewebconfig.md)
* [Manual de Configuração do SmartSense Server](/componentes-web/smartsenseconfig.md)
* [Manual de Configuração do Control Panel Web Server](/componentes-web/controlpanelwebconfig.md)
* [Manual de Configuração do Print Server](/componentes-web/printconfig.md)
* [Manual de Configuração do Home Screen Server](/componentes-web/homescreenconfig.md)

{% hint style="info" %}
Certifique-se de que o parâmetro de configuração `Connector port=<port_number>` está especificado corretamente no arquivo `server.xml`, localizado em `/var/lib/tomcats/<app_name>/conf`. Para mais informações, consulte os manuais de configuração específicos para cada aplicação. As portas de conexão (`Connector port=<port_number>`) e shutdown (`Server port=... shutdown=...`) não devem ser iguais entre si ou coincidir com portas usadas por outras aplicações.
{% endhint %}

{% hint style="info" %}
Certifique-se de que os parâmetros de configuração `<app_name>.ip`, `<app_name>.port` e `<app_name>.protocol` estejam corretamente especificados no arquivo `config.properties`. O endereço IP deve coincidir com o configurado no arquivo `server.xml`. Em diversos casos, o IP será o mesmo para diversas aplicações. Contudo, cada aplicação possuirá uma porta **diferente e única**.
{% endhint %}

**Passo 3:** Em seguida, entre no MySQL como root:

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

**Passo 4:** Rode a seguinte query:

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

**Passo 5:** Saia do MySQL:

```sql
exit
```

**Passo 6:** Então, inicie a aplicação.

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

**Passo 7:** Mude para o diretório `tomcats`:

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

**Passo 8:** Se for a primeira vez rodando a aplicação, execute o script de setup:

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

{% hint style="warning" %}
Se estiver instalando o **SmartSense**, certifique-se de que o **ELK** também esteja instalado. Para mais instruções, consulte o [Manual de Instalação do Elastic Stack (ELK)](/ferramentas-auxiliares/elk.md).
{% endhint %}

## Manuseando as Aplicações

Essa seção apresenta alguns comandos para monitorar e manusear os serviços Griaule, assim como seus respectivos aliases.

### Aliases

Aliases são comandos curtos definidos pelo usuário que servem como substitutos para comandos mais longos ou complexos. Eles são criados para tornar os comandos frequentemente utilizados mais convenientes de executar. Quando um alias é invocado, ele é substituído pelo comando completo que representa antes de ser executado.

Se não estiver utilizando o script `setup_aliases.sh`, como descrito em [Pré-Instalação](#pre-instalacao), é possível adicionar os aliases manualmente. Para fazer isso, edite o arquivo `.bashrc` raiz:

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

E adicione os seguintes alises, de acordo com a aplicação desejada:

```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 Úteis

* **Iniciar a Aplicação**

```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
```

ou com o alias:

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

* **Parar a Aplicação**

```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
```

ou com o alias:

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

* **Checar o Status da Aplicação**

```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
```

ou com o alias:

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

* **Checar os Logs da Aplicação**

```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
```

ou com o 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/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.
