Implantando sua Aplicação Sisk
Esta página foi traduzida automaticamente do inglês. Ler o original
O processo de implantar uma aplicação Sisk consiste em publicar seu projeto em produção. Embora o processo seja relativamente simples, é importante notar detalhes que podem ser letais para a segurança e estabilidade da infraestrutura de implantação.
Idealmente, você deve estar pronto para implantar sua aplicação na nuvem, após realizar todos os testes possíveis para ter sua aplicação pronta.
Publicando sua aplicação #
Publicar sua aplicação ou serviço Sisk é gerar binários prontos e otimizados para produção. Neste exemplo, vamos compilar os binários para produção para executar em uma máquina que tem o .NET Runtime instalado.
Você precisará ter o .NET SDK instalado em sua máquina para compilar sua aplicação, e o .NET Runtime instalado no servidor de destino para executar sua aplicação. Você pode aprender como instalar o .NET Runtime em seu servidor Linux aqui, Windows e Mac OS.
No diretório onde seu projeto está localizado, abra um terminal e use o comando .NET publish:
$ dotnet publish -r linux-x64 -c ReleaseIsso gerará seus binários dentro de bin/Release/publish/linux-x64.
Nota
Se sua aplicação estiver executando usando o pacote Sisk.ServiceProvider, você deve copiar seu service-config.json para o servidor de hospedagem junto com todos os binários gerados pelo dotnet publish.
Você pode deixar o arquivo pré-configurado, com variáveis de ambiente, portas e hosts de escuta, e configurações adicionais do servidor.
A próxima etapa é levar esses arquivos para o servidor onde sua aplicação será hospedada.
Depois disso, dê permissões de execução para o seu arquivo binário. Neste caso, vamos considerar que o nome do nosso projeto é “my-app”:
$ cd /home/htdocs
$ chmod +x my-app
$ ./my-appDepois de executar sua aplicação, verifique se ela produz alguma mensagem de erro. Se não produzir, é porque sua aplicação está executando.
Neste ponto, provavelmente não será possível acessar sua aplicação pela rede externa fora do seu servidor, pois as regras de acesso, como Firewall, não foram configuradas. Vamos considerar isso nas próximas etapas.
Você deve ter o endereço do host virtual onde sua aplicação está escutando. Isso é definido manualmente na aplicação e depende de como você está instanciando seu serviço Sisk.
Se você não estiver usando o pacote Sisk.ServiceProvider, você deve encontrar onde definiu sua instância de HttpServer:
HttpServer server = HttpServer.Emit(5000, out HttpServerConfiguration config, out var host, out var router);
// sisk deve escutar em http://localhost:5000/Associando um ListeningHost manualmente:
config.ListeningHosts.Add(new ListeningHost("https://localhost:5000/", router));Ou se você estiver usando o pacote Sisk.ServiceProvider, em seu service-config.json:
{
"Server": { },
"ListeningHost": {
"Ports": [
"http://localhost:5000/"
]
}
}A partir disso, podemos criar um proxy reverso para escutar seu serviço e tornar o tráfego disponível sobre a rede aberta.
Proxyando sua aplicação #
Proxyar seu serviço significa não expor diretamente seu serviço Sisk à rede externa. Essa prática é muito comum para implantações de servidor porque:
- Permite associar um certificado SSL à sua aplicação;
- Cria regras de acesso antes de acessar o serviço e evitar sobrecargas;
- Controla a largura de banda e os limites de solicitação;
- Separa os balanceadores de carga para sua aplicação;
- Previne danos de segurança à infraestrutura de falha.
Você pode servir sua aplicação por meio de um proxy reverso como Nginx ou Apache, ou pode usar um túnel http-over-dns como Cloudflared.
Além disso, lembre-se de resolver corretamente os cabeçalhos de encaminhamento do seu proxy para obter as informações do cliente, como endereço IP e host, por meio de resolvidores de encaminhamento.
A próxima etapa após criar seu túnel, configurar o Firewall e ter sua aplicação em execução é criar um serviço para sua aplicação.
Nota
Usar certificados SSL diretamente no serviço Sisk em sistemas não-Windows não é possível. Isso é um ponto da implementação do HttpListener, que é o módulo central para como a gestão da fila HTTP é feita no Sisk, e essa implementação varia de sistema operacional para sistema operacional. Você pode usar SSL em seu serviço Sisk se associar um certificado ao host virtual com IIS. Para outros sistemas, usar um proxy reverso é altamente recomendado.
Criando um serviço #
Criar um serviço fará com que sua aplicação esteja sempre disponível, mesmo após reiniciar sua instância de servidor ou uma falha não recuperável.
Neste tutorial simples, vamos usar o conteúdo do tutorial anterior como um exemplo para manter seu serviço sempre ativo.
Acesse o diretório onde os arquivos de configuração do serviço estão localizados:
Shell cd /etc/systemd/systemCrie seu arquivo
my-app.servicee inclua o conteúdo:my-app.serviceINI [Unit] Description=<descrição sobre sua aplicação> [Service] # defina o usuário que lançará o serviço User=<usuário que lançará o serviço> # o caminho do ExecStart não é relativo ao WorkingDirectory. # defina-o como o caminho completo para o arquivo executável WorkingDirectory=/home/htdocs ExecStart=/home/htdocs/my-app # defina o serviço para sempre reiniciar em caso de falha Restart=always RestartSec=3 [Install] WantedBy=multi-user.targetReinicie o módulo de gerenciamento de serviço:
Shell $ sudo systemctl daemon-reloadInicie seu novo serviço criado a partir do nome do arquivo que você definiu e verifique se ele está em execução:
Shell $ sudo systemctl start my-app $ sudo systemctl status my-appAgora, se sua aplicação estiver em execução (“Active: active”), habilite seu serviço para continuar em execução após uma reinicialização do sistema:
Shell $ sudo systemctl enable my-app
Agora você está pronto para apresentar sua aplicação Sisk a todos.