# Atualização automática - Linux

O processo de atualização da plataforma Navixy normalmente consiste em três partes: atualizar o banco de dados, atualizar os arquivos de serviço Java e atualizar os arquivos de serviço web. É importante seguir cuidadosamente as instruções de atualização e garantir que cada parte da atualização seja concluída com sucesso, sem encontrar erros ao longo do processo.

{% hint style="danger" %}
Se ocorrerem quaisquer erros ou outras dificuldades durante o processo de atualização, entre em contato com [suporte técnico Navixy](mailto:support@navixy.com) imediatamente. Atualizações iniciadas e incompletas podem causar mau funcionamento da plataforma ou torná-la indisponível.
{% endhint %}

## Verificando pré-requisitos

Antes de instalar, por favor verifique se o seu sistema atende aos seguintes pré-requisitos:

1. **Java Development Kit 21**\
   A partir de março de 2025, a plataforma depreciou a versão 17 e anteriores.
2. **MySQL 8.0**\
   A partir de março de 2024, a plataforma depreciou o MySQL 5.7. Esta versão atingiu seu EOL e não é mais suportada.

{% hint style="info" %}
A não conformidade com o software exigido resultará na incapacidade da nova versão da plataforma de iniciar. No entanto, uma atualização preliminar dos pré-requisitos manterá a plataforma funcional.
{% endhint %}

## Início da atualização

Extraia um pacote de distribuição da plataforma recebido da Navixy; normalmente é um `.tar.gz` arquivo.

```
tar -zxvf $PACKAGENAME
```

*(onde `$PACKAGENAME` é o nome de `tar.gz` arquivo)*

Ele será extraído para `/navixy-package` diretório, contendo todos os arquivos da plataforma nele. Doravante este será o diretório principal da distribuição.

## Atualização automatizada

Para instâncias hospedadas em servidores Linux, existe uma solução de atualização automatizada disponível. Recomenda-se fortemente usar o `update.sh` script. Ele executa uma atualização passo a passo do banco de dados e dos arquivos da aplicação, e você não precisa fazer nenhuma operação interna manualmente.

Execute o `update.sh` script a partir do `/navixy-package` diretório. Se sua plataforma estiver hospedada em dois servidores, execute o script no servidor de aplicação (onde os serviços Java são executados).

```
root@server:/home/navixy-package# ./update.sh
```

O script começará com uma atualização do banco de dados. Se o banco de dados estiver em um servidor separado, o script obterá os dados de conexão a partir da configuração dos serviços Java.

Após a atualização do banco de dados (que pode levar algum tempo), o script atualizará os arquivos do sistema da plataforma.

{% hint style="info" %}
Se sua instância não for atualizada há algum tempo, você poderá ver a seguinte mensagem durante a atualização: `Parece que os serviços Navixy não estão sob controle do systemd. Deseja criar serviços systemd (os serviços runit serão removidos)? (y/n)` Recomenda-se que responda afirmativamente. O ponto é que nós preterimos o **runit** método de inicialização dos serviços, e agora usamos **systemd** para esse propósito. O script fará tudo por você. Entretanto, se por algum motivo responder não, isso não causará falha no sistema, e o runit continuará funcionando. Você pode mudar para systemd na próxima atualização.
{% endhint %}

#### Atualização do banco de dados (opcional)

Você pode executar a atualização do banco de dados separadamente do restante da plataforma, se necessário. Para fazer isso, execute o `update-db.sh` script a partir do `/navixy-package` diretório. Isso pode ser feito no servidor de banco de dados (localhost) ou a partir de outro servidor, especificando o endereço do host. Após executar o script, você verá o seguinte diálogo:

```
Enter mysql host [localhost]:
Enter mysql port [3306]:
Enter mysql user name [root]:
Updating Navixy db..
Enter password:
```

Os parâmetros padrão são mostrados entre colchetes. Se eles forem os mesmos que os reais (a atualização é feita dentro do servidor de banco de dados), não é necessário digitar nada — apenas pressione Enter. Se desejar especificar um host diferente, uma porta personalizada ou um usuário diferente, preencha os parâmetros apropriados.

{% hint style="danger" %}
Se algo não estiver funcionando corretamente após a atualização, tente reiniciar os serviços da plataforma usando o `restart-navixy` script. Além disso, limpe os dados do navegador ou verifique os problemas no modo anônimo.
{% endhint %}

***

## Atualização manual

{% hint style="info" %}
A atualização automatizada de uma plataforma implantada em Linux é uma solução comprovada e recomenda-se fortemente utilizá-la. Portanto, as informações a seguir são apenas para seu conhecimento e para casos de instalações especiais não padronizadas.
{% endhint %}

#### Atualização do banco de dados

Abra `navixy-package/db` diretório e execute `updates.sql` arquivo com o seguinte comando:

```
mysql -uroot -p$ROOTPASSWORD google < updates.sql
```

(onde $ROOTPASSWORD é a senha root do MySQL)

Excluir `updates.sql` e `google.sql` da pasta db.

{% hint style="warning" %}
**Isto deve ser feito** para não sobrescrever o banco de dados na próxima etapa.
{% endhint %}

```
rm updates.sql
rm google.sql
```

Certifique-se de que esses arquivos foram removidos e então execute todos os outros arquivos sql.

```
cat *.sql | mysql -uroot -p$ROOTPASSWORD google
```

#### **Atualização dos serviços Java**

Atualizar os serviços Java significa simplesmente substituir os arquivos nos diretórios de serviço sob `/home/java`. Esses diretórios são:

* `api-server`
* `sms-server`
* `tcp-server`

Encontre os diretórios correspondentes em `navixy-package`. Você precisa substituir todos os arquivos exceto `config.properties` e `db.properties` nos *conf* pastas. Compare os `config.properties` arquivos existentes com os do novo distributivo. Se você vir quaisquer novos parâmetros — adicione-os à configuração existente.

#### Atualização dos serviços web

Prossiga para */var/www* Substitua todos os arquivos em ***panel-v2*** e ***pro-ui*** diretórios com os arquivos dos diretórios correspondentes do pacote de distribuição. Isso não corromperá nenhuma configuração, pois os arquivos de configuração no pacote são nomeados como *exemplo*, e não sobrescreverão os existentes.

Compare estes arquivos:

* panel-v2/**Config.js**,
* pro-ui/**PConfig.js**
* pro-ui/static/**app\_config.js**

com os exemplos no pacote de distribuição.

Se você identificar novos parâmetros, adicione-os.

## Passos finais

Reinicie os serviços Java da Navixy. Tipicamente isso é feito com este comando:

```
restart-navixy
```

Verifique se os serviços foram reiniciados com sucesso e estão em execução por pelo menos um minuto. Isso indica que o processo de atualização foi concluído.
