Instalando e Configurando o HyperServer

Instalando e Configurando o HyperServer

Instalar e configurar o HyperServer é simples. O instalador do uniGUI distribui binários pré-compilados do HyperServer em ..\uniGUI\HyperServer\bin\ (use \bin64\ para binários 64-bit).

Esta pasta contém binários separados para os métodos de implantação disponíveis: ISAPI DLL, Standalone Server e Windows Service:

Estes arquivos são binários genéricos do servidor HyperServer e podem ser configurados para executar qualquer aplicação uniGUI. Para implantar o HyperServer, copie o arquivo binário apropriado do HyperServer para a pasta da sua aplicação uniGUI. Você pode renomear o binário do HyperServer — necessário ao executar mais de uma instância em portas diferentes. No modo DLL você pode renomear hyper_server.dll para corresponder ao nome da sua aplicação.

O HyperServer requer um arquivo de configuração com extensão .CFG que deve existir na mesma pasta que o binário do HyperServer. Se estiver ausente, um será criado automaticamente. Arquivos de configuração padrão também estão disponíveis na mesma pasta.

Primeiro passo é copiar o binário adequado com base no seu método de implantação:

  • Standalone server: hyper_server.exe

  • ISAPI DLL: hyper_server.dll

  • Windows Service: hyper_service.exe

O próximo passo é copiar hyper_server.cfg para a pasta da sua aplicação e abri-lo com um editor de texto para fazer as alterações apropriadas.

Configuração Rápida e Teste do HyperServer

Para testar rapidamente a funcionalidade do HyperServer, faça uma configuração expressa com parâmetros mínimos no arquivo de configuração.

1

Preparar arquivos

Copie hyper_server.exe e hyper_server.cfg para a pasta onde o arquivo executável da sua aplicação reside.

2

Compilar sua aplicação

Compile sua aplicação no modo Standalone Server. Você pode precisar alterar o arquivo DPR do seu projeto para mudar para Standalone Server.

3

Configurar hyper_server.cfg

Edite hyper_server.cfg e defina:

  • parâmetro binary_name para o nome do executável da sua aplicação. Exemplo: binary_name=myapp.exe

  • prompt_login=0

4

Executar e testar

Execute hyper_server.exe. No navegador navegue para: http://localhost:8077

Você deverá ver o formulário principal da sua aplicação ou a tela de login.

5

Painel de controle do servidor

Para acessar o painel de controle do HyperServer, vá para: http://localhost:8077/server

Escolha a aba HyperServer para observar os Nodes do HyperServer e outras informações. clip0145

6

Testar implantação remota

  • Faça uma pequena alteração visual no seu projeto e recompile.

  • No painel de controle do HyperServer, escolha o ícone Upload. clip0142

  • Selecione seu executável recém compilado (myapp.exe) e pressione Upload. clip0143

  • Complete o upload e confirme o próximo diálogo.

Você notará Nodes existentes marcados como Discarded. clip0144

Inicie uma nova sessão em uma nova aba do navegador — você deverá ver a nova versão da sua aplicação enquanto versões mais antigas continuam rodando em outras abas. Isso demonstra a funcionalidade de implantação remota.

Configuração Detalhada

Após testar sua aplicação com o HyperServer, revise e familiarize-se com os parâmetros no arquivo de configuração do HyperServer.

Parâmetros de Configuração do HyperServer

Abaixo estão as principais seções e parâmetros encontrados nos arquivos CFG do HyperServer. Muitos podem permanecer com os valores padrão.

[transport]

  • pool_size=0 Tamanho máximo para o pool de handles de transporte. Quando 0, o HyperServer tenta calcular um valor ótimo. Padrão = 0

  • command_timeout=20000 Tempo (ms) que o HyperServer espera por uma resposta de um Node após enviar um comando. Padrão = 20000 (20s)

  • request_timeout=300000 Tempo (ms) que o HyperServer aguardará para um Node completar uma requisição. Deve ser maior que o AjaxTimeout dos Nodes. Padrão = 300000 (5 minutos)

    Observação: Se você definir este valor próximo ao AjaxTimeout, acrescente pelo menos 10000 (10s) como margem de segurança. (AjaxTimeout + 10.000)

  • connect_timeout=20000 Tempo (ms) para estabelecer uma conexão com um Node. Padrão = 20000 (20s)

  • transport_type=0 Tipo de canal de transporte para comunicação com os Nodes do HyperServer:

    • 0 = transporte HTTP (Windows & Linux)

    • 1 = transporte Named Pipe (apenas Windows)

    Em uma fazenda de servidores HyperServer, o transporte HTTP é usado entre ServerNodes independentemente desta configuração.

  • start_port=16384 Usado com transporte HTTP (transport_type=0). O HyperServer atribui portas TCP de transporte aos Nodes a partir deste valor (Node #0 -> start_port, Node #1 -> start_port+1, ...). Padrão = 16384

    Observação: Certifique-se de que essas portas não entrem em conflito com o intervalo de portas dinâmicas do SO. Você pode visualizar o intervalo de portas dinâmicas do Windows com: C:>netsh int ipv4 show dynamicport tcp

    Se estiver executando múltiplas instâncias do HyperServer no mesmo host, calcule valores start_port que não entrem em conflito com: <start_port para a nova instância> = <start_port da instância anterior> + (<max_nodes da instância anterior> × 3) + 8

    Exemplo: Para instâncias com max_nodes 8, 16, 16 e start_port da primeira instância 16384:

    • 2ª: 16384 + (8×3 + 8) = 16416

    • 3ª: 16416 + (16×3 + 8) = 16472

    Observação: start_port também é usado para criar nomes únicos para canais named pipe.

[hyper_server]

  • binary_name= Nome do executável do Node (sua aplicação uniGUI compilada no modo Standalone Server). Somente nome do arquivo e extensão (ex.: accounting_app.exe). O arquivo deve estar na mesma pasta que o HyperServer.

  • initial_nodes=2 Número de Nodes inicialmente criados na inicialização. O HyperServer mantém esse número mínimo em modo standby. Padrão = 2

  • max_nodes=8 Número máximo de Nodes Ativos. Observe que o total de Nodes pode exceder esse valor temporariamente (por exemplo, durante purge/discard). Padrão = 8

    Limites:

    • Builds anteriores a 1608: até 128

    • Builds 1608 e posteriores: até 2024

  • max_sessions=0 Limite superior pretendido para sessões totais. O HyperServer divide max_sessions por max_nodes para definir MaxSessions em cada Node. Isso não garante estritamente a contagem global de sessões. Padrão = 0 (nenhum limite definido)

  • sessions_per_nodes=0 (Não implementado)

  • prompt_login=1 Quando 1, o monitor do servidor solicita ID de usuário e senha. Recomendado em produção. Você pode criar até 10 contas de usuário nas seções [login-x]. Defina como 0 para desenvolvimento/testes para evitar solicitações.

    Tela de Login do Server Monitor:

    Painel de Controle do HyperServer no Server Monitor:

  • persistent_node=0 Defina como 1 se sua aplicação precisar de um Node persistente (veja Terminologia).

  • port=8077 Aplica-se aos modos Standalone Server e Windows Service. Atribua uma porta diferente para cada instância no mesmo computador. Sem efeito para o Módulo ISAPI.

  • bindings= Vincule o servidor a endereços IP específicos (modos Standalone/Service). Múltiplos IPs separados por vírgulas. Padrão em branco = vincular a todos os endereços. Exemplo: 127.0.0.1, 82.178.12.1

  • url_path=

  • url_referer=

  • ext_root=[ext]\

  • uni_mobile_root=[unim]\

  • uni_root=[uni]\

  • uni_packages_root=[unipack]\

    Os parâmetros acima mapeiam diretamente para propriedades do ServerModule (ExtRoot, UniRoot, etc.). Use-os para personalizar caminhos em tempo de execução.

    Exemplo: ext_root=C:\uniserver\extjs[ext]\ (Consulte Ajustando Caminhos para mais detalhes.)

  • framework_files_root= Equivalente a UniServerModule.FrameworkFilesRoot. No Windows, os instaladores definem isso; no Linux você deve defini-lo. Exemplo: framework_files_root=/etc/fmsoft/unigui/unigui_runtime

    Exemplo de layout de pasta de runtime no Windows: clip0334

  • max_connections=500 (Modos Standalone e Service apenas) Máximo de conexões concorrentes. Padrão = 500. Deve ser >= max_requests.

  • http_max_pool=500 (Modos Standalone e Service apenas) Tamanho do pool de conexão HTTP para reutilização. Padrão = 500. Aumentar consome mais recursos.

  • max_requests=500 Máximo de requisições concorrentes que o HyperServer processará. Requisições em excesso são enfileiradas. Padrão = 500.

  • dont_create_backup=0 Quando 1, impede a criação de backups quando um novo binário de Node é enviado. Padrão = 0 (criar backups)

  • files_folder=files\ Mapeia para ServerModule.FileFolder. O uniGUI cria URLs começando com files/ e os traduz para esta pasta física. Recomenda-se manter o padrão; organize arquivos em subpastas, se necessário.

  • antiflood_per_ip=0 Mecanismo anti-flood no nível do HyperServer, funciona como ServerModule.ServerLimits.AntiFloodPerIP. A unidade é milissegundos. 0 desabilita. Valores não zero exigem um intervalo mínimo entre criações de sessão a partir do mesmo IP.

    Exemplo: 1000 significa que um IP deve esperar 1 segundo entre criações de sessão. Valores típicos: 250–1000. Note que múltiplos clientes na LAN podem compartilhar um IP externo; considere isso ao definir o valor.

    Importante: Isso pode conflitar com a ferramenta de teste de estresse do uniGUI que cria muitas sessões a partir do mesmo IP — desative antiflood_per_ip (defina como 0) ao executar testes de estresse.

    Padrão = 0

  • session_one_per_ip=0 Quando 1, restringe a uma sessão por IP (semelhante a SessionRestrict srOnePerIP). Pode conflitar com a ferramenta de teste de estresse. Padrão = 0 (desabilitado)

  • detailed_log=0 Habilita detalhes adicionais de log úteis para rastrear o ciclo de vida e a atividade dos Nodes.

  • server_title= Título personalizado exibido no painel de controle do servidor e no ícone da bandeja.

  • token=ixkdfjdjfd5115048252 String gerada aleatoriamente usada para nomes únicos (por exemplo, named pipes) e comunicação na fazenda. Se você editá-la manualmente, garanta unicidade entre instâncias. Ao copiar arquivos CFG entre instâncias, delete este parâmetro para que o HyperServer atribua um token único automaticamente.

[node_recycling]

  • enabled=1 Habilita o reciclo de nodes.

  • recycle_after_idle_seconds=0 Tempo ocioso (segundos) antes de um Node ser reciclado. 0 desabilita. Exemplo: 600 = reciclar após 10 minutos de inatividade. O valor deve ser sempre maior que o SessionTimeout do Node para evitar reciclar Nodes que ainda possuem sessões ativas. Evite estender a vida da sessão via MainModule.OnSessionTimeout (isso pode confundir o HyperServer).

  • recycle_when_empty=1 Quando habilitado, o Node é reciclado quando fica vazio (última sessão destruída). Padrão = 1

  • recycle_after_secs=3600 Mantenha o padrão.

  • recycle_after_sessions=0 Mantenha o padrão.

  • allow_remote_config=1 Habilita alterar parâmetros do HyperServer a partir do painel de controle do servidor (ícone de engrenagem). Habilitado por padrão.

    O ícone de engrenagem abre um formulário para alterar várias configurações: clip0221 Exemplo do formulário de Configurações: clip0222

    Aviso: Alterar parâmetros para valores inválidos pode causar mau funcionamento do HyperServer. Desabilite a configuração remota definindo allow_remote_config=0 no arquivo CFG se quiser impedir edições remotas.

[login-0] ... [login-9]

Você pode criar até 10 contas de usuário para entrar no monitor do servidor (efetivo somente quando prompt_login=1). Cada seção possui:

  • user_name=

  • password=

  • admin=0

admin=0 — acesso apenas ao monitor admin=1 — direitos administrativos

[custom_mimes]

Adicione tipos MIME personalizados para permitir transferir tipos adicionais de arquivo. Por padrão apenas tipos de arquivo seguros são permitidos. Adicione entradas como:

mime_0_ext= mime_0_type= mime_1_ext= mime_1_type= ...

Exemplo para habilitar arquivos 7z:

mime_0_ext=7z mime_0_type=application/x-7z-compressed

Notas e Avisos

  • Tenha cautela ao editar valores relacionados a portas, timeouts e reciclagem. Valores incorretos podem causar mau funcionamento ou perda de sessão.

  • Sempre assegure que request_timeout seja maior que o AjaxTimeout dos Nodes (adicione pelo menos 10 segundos).

  • Para produção, habilite prompt_login e configure contas em [login-x].

  • Ao implantar múltiplas instâncias do HyperServer na mesma máquina, planeje start_port e max_nodes cuidadosamente para evitar conflitos de portas.

(Fim do conteúdo importado)

Atualizado