Índice
Introdução
A partir da versão 12.1.2306, foi disponibilizado um novo serviço externo para o TOTVS Update (Servidor de Atualização) que será responsável por fazer a atualização dos ambientes Smart de forma mais rápida e isolada do RM.Host. O novo serviço conta com uma melhor gerenciamento do download dos arquivos reduzindo a leitura em disco e é capaz de suportar mais conexões que o antigo proporcionando uma atualização mais rápida e eficiente.
A utilização do novo serviço externo não exclui a utilização do serviço antigo no RM.Host pois a instalação de um novo ambiente pelo SmartClient ainda depende dessa comunicação, mas será tratada em evoluções do novo serviço buscando a melhoria contínua.
Aviso |
---|
|
O arquivo _update.dat foi evoluído para que o novo serviço também o utilize. Sendo assim, o novo serviço deve ser iniciado após a inicialização completa do RM.Host do ambiente utilizado como "Servidor de Atualização". |
Aviso |
---|
|
Também é importante deixar claro que a máquina ou diretório onde estará o "Servidor de Atualização", não pode ser um "Servidor de Aplicação" que também será atualizado. Ele deve ser um ambiente isolado dos demais servidores de aplicação e clientes. |
Como configurar
O executável do novo serviço se encontra na pasta rm-update da instalação padrão. Ele pode ser utilizado a partir de seu executável ou como serviço. Para utilizá-lo a partir de seu executável, basta rodar o executávelrodá-lo. Ele executará o serviço utilizando as portas configuradas (os padrões são 5000 (para http ) e 5001 (para https). Estas portas, assim como a url, podem ser alteradas no arquivo de configuração, conforme a seção Arquivo de configuração (appsettings.json) que também existe na pasta.
Para que a atualização utilize o novo serviço, o endereço do "Servidor de Atualização" (a tag UpdateServer) no RM.exe.config deve ser alterado para o novo endereço: <protocolo>://<endereço-do-host>:<porta>. Exemplo: , como no exemplo abaixo:
Bloco de código |
---|
language | xml |
---|
title | RM.exe.config |
---|
collapse | true |
---|
|
<?xml version="1.0" encoding="utf-8"?>
<configuration>
<appSettings>
<add key="JobServer3Camadas" value="false" />
<add key="Port" value="8050" />
<add key="Host" value="localhost" />
<add key="ActionsPath" value="C:\RM\Atual\Release\Bin;C:\RM\Atual\Release\Corpore.Net\Bin" />
<add key="LibPath" value="C:\RM\Atual\Release\Bin" />
<add key="UpdateServer" value="http:// |
meuservidordeatualização:5000localhost:5001" />
</appSettings>
<runtime>
<generatePublisherEvidence enabled="false" />
<loadFromRemoteSources enabled="false" />
</runtime>
<startup useLegacyV2RuntimeActivationPolicy="true">
<supportedRuntime version="v4.0" sku=".NETFramework,Version=v4.0" />
</startup>
</configuration> |
Essa configuração pode ser feita diretamente no RM.exe.config do "Servidor de Atualização", assim, na próxima atualização automática o arquivo *.config será baixado e as máquinas clientes já passarão a utilizar o novo endereço.
Arquivo de configuração
Na pasta rm-update é encontrado o arquivo appsettings.json, que define as configurações da aplicação. Exemplo de arquivo:
Bloco de código |
---|
title | appsettings.json |
---|
collapse | true |
---|
|
{
"UseCompression": "true",
"Logging": {
"LogLevel": {
"Default": "Information",
"Microsoft.AspNetCore": "Warning"
}
},
"AllowedHosts": "*",
"UseSwagger": "true",
"Update": {
"BasePath": "C:\\RM\\Atual\\Release\\Bin",
"CacheEnabled": "true"
},
"Kestrel": {
"Endpoints": {
"Http": {
"Url": "http://localhost:5000"
},
"Https": {
"Url": "https://localhost:5001"
}
}
}
} |
Pontos importantes de configuração:
- BasePath: é o caminho para a pasta base do RM, de onde os arquivos de atualização serão obtidos.
- Endpoints: dentro dessa propriedade, as urls e portas para os protocolos http e https são definidas. Como padrão, as portas são definidas para 5000 (http) e 5001 (https).
Configurando como serviço
O servidor de atualização utilizando o novo TOTVS Update pode ser utilizado em um sistema operacional Windows ou Linux, e as etapas serão diferentes para cada um.
Serviço no Windows
Para subir o TOTVS Update como serviço no Windows, basta criar um serviço que aponta para o executável RM.UpdateManager.Runtime.exe. Um exemplo de comando que pode ser utilizado para tal, está a seguir:
Bloco de código |
---|
|
sc.exe create TotvsUpdateService binPath="C:\TOTVS\RM.NET\rm-update\RM.UpdateManager.Runtime.exe" |
Com o serviço criado, e as configurações corretas, basta iniciar o serviço:
Image Added
Nota |
---|
Para que o serviço funcione corretamente, é necessário que o usuário do serviço possua permissões necessárias de acesso a disco, e caso seja utilizado o protocolo HTTPS, também tenha acesso ao certificado instalado na máquina. Caso contrário, o serviço não irá subir corretamente. |
Serviço no Linux
Para subir o TOTVS Update como serviço no Linux, é necessário que as dependências do .NET Core 6.0 estejam instaladas na máquina. O passo a passo abaixo tem como objetivo instalar essas dependências; no entanto, como as distribuições de Linux são muitas, mudanças podem ocorrer.
Expandir |
---|
title | Instalar dependências do .NET |
---|
|
Painel |
---|
| - Instalando o .NET Core:
Antes de prosseguir, você precisa instalar o .NET Core SDK ou o Runtime no seu servidor Linux, então acesse o servidor via linha de comando e siga os passos:
Atualize os pacotes e adicione os pacotes necessários:
Bloco de código |
---|
| sudo apt update
sudo apt install -y apt-transport-https |
Adicione a chave da Microsoft: Nesse passo, o arquivo a ser instalado vai variar por distribuição do Linux utilizada. Na documentação da Microsoft: Instalar o .NET no Linux, é possível obter os links a serem utilizados para cada distribuição suportada. No exemplo abaixo, vamos utilizar o Debian 10. Bloco de código |
---|
| wget https://packages.microsoft.com/config/debian/10/packages-microsoft-prod.deb -O packages-microsoft-prod.deb
sudo dpkg -i packages-microsoft-prod.deb |
Instale o SDK ou o Runtime: Para instalar o SDK:
Bloco de código |
---|
| sudo apt update
sudo apt install -y dotnet-sdk-6.0 |
Para instalar apenas o Runtime:
Bloco de código |
---|
| sudo apt update
sudo apt install -y aspnetcore-runtime-6.0 |
|
|
Com as dependências instaladas, é necessário criar o arquivo de serviço, utilizando o comando a seguir:
Bloco de código |
---|
|
sudo nano /etc/systemd/system/updatemanager.service |
Neste arquivo criado, insira o conteúdo a seguir, modificando os parâmetros do serviço, especificamente o WorkingDirectory (diretório que contém o RM.UpdateManager.Runtime) e o ExecStart (caminho absoluto para o arquivo RM.UpdateManager.Runtime):
Nota |
---|
Pela diretiva do Linux, não é recomendado que arquivo de serviço fique em uma pasta a partir do diretório /home, pois em muitas distribuições tal caminho não é permitido para a utilização como serviço. |
Bloco de código |
---|
title | updatemanager.service |
---|
|
[Unit]
Description=RM Update Service
[Service]
WorkingDirectory=/caminho/para/sua/pasta/publish
ExecStart=/caminho/para/sua/pasta/publish/RM.UpdateManager.Runtime
Restart=always
RestartSec=10
KillSignal=SIGINT
SyslogIdentifier=RM.UpdateManager
User=www-data
Environment=ASPNETCORE_ENVIRONMENT=Production
Environment=DOTNET_PRINT_TELEMETRY_MESSAGE=false
[Install]
WantedBy=multi-user.target |
Salve o arquivo utilizando as teclas: CTRL+X, Y para confirmar, e em seguida, pressione Enter.
Habilite e Inicie o Serviço:
Bloco de código |
---|
|
sudo systemctl enable updatemanager.service
sudo systemctl start updatemanager.service |
A partir deste momento, o serviço já está de pé e rodando.
Comandos para manutenção do serviço no Linux
Para verificar o status do serviço, a qualquer momento o seguinte comando pode ser utilizado:
Bloco de código |
---|
|
sudo systemctl status updatemanager.service |
E para visualizar os logs do serviço, o seguinte comando pode ser utilizado:
Bloco de código |
---|
|
sudo journalctl -fu updatemanager.service |
Para atualizar o serviço:
Bloco de código |
---|
|
sudo systemctl restart updatemanager.service |
E para parar o serviço:
Bloco de código |
---|
|
sudo systemctl stop updatemanager.service |