Versões comparadas

Chave

  • Esta linha foi adicionada.
  • Esta linha foi removida.
  • A formatação mudou.

...

Image Added


Índice

...

       

Índice
maxLevel2
exclude.*ndice:


Introdução

...

        A partir da versão 12.1.23062402, 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.

Aviso
titleAtenção!

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
titleAtenção!

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.

...

       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 rodá-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.


Distribuição

...

       Este novo serviço é instalado junto com o RM, porém é um aplicativo isolado do RM.Host, seu executável se encontra na pasta rm-update da instalação padrão.
Ele pode ser utilizado como um aplicativo ou como um serviço.


Arquivo de configuração
Âncora
config-file
config-file

...

Na pasta rm-update fica o arquivo appsettings.json, que define as configurações da aplicação.

Exemplo de arquivo:

Bloco de código
titleappsettings.json
collapsetrue
{
  "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"
      }
    }
  }
}

Propriedade de configuração:

  • UseCompression: Ativa ou desativa a compactação de resposta. Ativado pode reduzir o tamanho da resposta e aumentar capacidade de performance do serviço.
  • Logging: Propriedades de registro de Log padrão do .Net, Veja mais informações:
    https://learn.microsoft.com/en-us/aspnet/core/fundamentals/logging/?view=aspnetcore-6.0
    https://learn.microsoft.com/en-us/aspnet/core/fundamentals/logging/?view=aspnetcore-6.0#llvl
  • AllowedHosts: Configuração de uma lista de Host permitidos para acessar o Totvs Update. Lista separada por ponto e vírgula de nomes de host sem número de porta.
  • UseSwagger: Ativa ou desativa a página de documentação de APIs, http://localhost:5000/swagger
  • Update
    • BasePath: É o caminho para a pasta base do RM, de onde os arquivos de atualização serão obtidos. 
      Este é o local principal onde deverá ter a versão mais recente do RM, que será utilizada como base de atualização.
    • CacheEnabled: Ativa ou desativa o gerenciamento de cache do serviço de atualização. Ativado poderá reduzir a quantidade de leitura em disco e reduzir o tempo total de atualização.
  • Kestrel.Endpoints
    • Http 
      • Url: Configuração de endereço do Servidor de Atualização e porta http, não seguro. Como padrão, 5000 (http).
    • Https
      • Url: Configuração de endereço do Servidor de Atualização e porta https, seguro. Padrão, 5001 (https).

Nota

O ambiente configurado na propriedade BasePath, deve ser um ambiente isolado.
Não pode ser um Host (Ambiente Server) e no seu arquivo RM.Host.Service.exe.config, não deve possuir a propriedade UpdateServerEnabled=true.


Configurando ambiente Client

...

      Para que o RM.exe utilize o novo serviço de atualização, seu endereço deverá ser configurado no RM.exe.config

Alterar a tag UpdateServer, no RM.exe.config com o endereço, seguindo este formato      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>, (http://localhost:5000), como no exemplo abaixo:

Bloco de código
languagexml
titleRM.exe.config
collapsetrue
<?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://localhost:50015000" />
  </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 Host "Servidor de Atualização", assim, na próxima atualização automática o arquivo *.config será baixado atualizado e as máquinas clientes já passarão a utilizar o novo endereço.

...


Configurando ambiente Server

...

      Para que o RM Host em um ambiente server utilize o novo serviço de atualização, seu endereço deverá ser configurado no RM.Host.Service.exe.config

Alterar a tag UpdateServer, no RM.Host.Service.exe.config com o endereço, seguindo este formato: <protocolo>://<endereço-do-host>:<porta>, (http://localhost:5000), como no exemplo abaixo:

Bloco de código
languagexml
titleRM.exe.config
collapsetrue
<?xml version="1.0"?>
<configuration>
	<appSettings>
		<add key="JobServer3Camadas" value="true" />
		<add key="Port" value="8050" />
		<add key="ActionsPath" value="C:\TOTVS\CorporeRM\RM.net;C:\TOTVS\CorporeRM\Corpore.Net\Bin" />
		<add key="LibPath" value="C:\TOTVS\CorporeRM\RM.net" />
		<add key="EnableDynamicLocalization" value="false" />
		<add key="EnableCompression" value="false" />
		<add key="LocalizationLanguage" value="pt-BR" />
		<add key="HttpPort" value="8051" />
		<add key="UpdateServer" value=

...

Na pasta rm-update é encontrado o arquivo appsettings.json, que define as configurações da aplicação. Exemplo de arquivo:

Bloco de código
titleappsettings.json
collapsetrue
{
  "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 httphttps são definidas. Como padrão, as portas são definidas para 5000 (http) e 5001 (https).

...

 />
	</appSettings>
	<runtime>
		<NetFx40_LegacySecurityPolicy enabled="true" />
		<generatePublisherEvidence  enabled="false" />
	</runtime>
	<startup useLegacyV2RuntimeActivationPolicy="true">
		<supportedRuntime version="v4.0" sku=".NETFramework,Version=v4.0" />
	</startup>
</configuration>
Nota

Este ambiente server não pode ser o mesmo que foi configurado no arquivo appsettings.json, pasta rm-update, na propriedade BasePath.
E em seu arquivo RM.Host.Service.exe.config, não deve possuir a propriedade UpdateServerEnabled=true.

 

Utilizando como aplicativo
Âncora
as-app
as-app

...

Ao executar "RM.UpdateManager.Runtime.exe" serão utilizadas 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.

Quando o aplicativo executar será exibido um console, informando o nome do host configurado e exposto, como o exemplo abaixo:

Image Added


Utilizando como serviço
Âncora
as-service
as-service

...

     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 veja abaixo como configurar 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.

...


Exemplo de comando que pode ser utilizado

...

:

Bloco de código
languagepowershell
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 Modified

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

...

O TOTVS Update é compatível com sistemas operacionais baseados em Linux, permitindo uma aplicação eficiente e integrada a esta plataforma.

Para implementar o TOTVS Update Manager no Linux como um serviço, siga as instruções detalhadas abaixo. Este processo assegura que o serviço seja configurado corretamente e funcione de maneira otimizada.

     Criar

Expandir
titleInstalar dependências do .NET
Painel
borderStylesolid
  1. 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:
    1. Atualize os pacotes e adicione os pacotes necessários:

      Bloco de código
      languagebash
      sudo apt update
      sudo apt install -y apt-transport-https 
    2. 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
      languagebash
      wget https://packages.microsoft.com/config/debian/10/packages-microsoft-prod.deb -O packages-microsoft-prod.deb
      sudo dpkg -i packages-microsoft-prod.deb 
    3. Instale o SDK ou o Runtime:
      Para instalar o SDK:

      Bloco de código
      languagebash
      sudo apt update
      sudo apt install -y dotnet-sdk-6.0 

      Para instalar apenas o Runtime:

      Bloco de código
      languagebash
      sudo apt update
      sudo apt install -y aspnetcore-runtime-6.0 

...

o arquivo de serviço, utilizando o comando a seguir:

Bloco de código
languagebash
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
titleupdatemanager.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
languagebash
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
languagebash
sudo systemctl status updatemanager.service 

     E para visualizar os logs do serviço, o seguinte comando pode ser utilizado:

Bloco de código
languagebash
sudo journalctl -fu updatemanager.service 

     Para atualizar o serviço:

Bloco de código
languagebash
sudo systemctl restart updatemanager.service 

     E para parar o serviço:

Bloco de código
languagebash
sudo systemctl stop updatemanager.service 


Notas e Observações importantes


Aviso
titleAtenção!

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
titleAtenção!

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.

Informações
iconfalse
Informações
iconfalse

Produto: Framework

Informações
iconfalse

Versão: 12.1.2402 ou superiores

Informações
iconfalse

Processo: TOTVS Update

Informações
iconfalse
Informações
iconfalse

Status: Finalizado

Informações
iconfalse

Data: 02 28/0611/2023

Informações
iconfalse

Autores:

Adriano Diniz Agrizzi 

Carlos Diego Lopes Almeida 

Diogo Damiani Ferreira 

Eduardo Junqueira de Matos 

Fábio Augusto Amaral Melo Nunes

Guilherme Gomes Noronha