ASP.NET Core Hosting
Victor Cavalcante
@vcavalcante
vcavalcante@lambda3.com.br
VICTOR CAVALCANTE
- Desenvolvedor Web
- Microsoft MVP de ASP.NET
- vcavalcante@lambda3.com.br
- @vcavalcante
Em que S.O. Hospedar?
Em qual server?
Kestrel
IIS
WebListenner
DotNet Core
Kestrel
- Web Server para o ASP.NET Core
- Cross-platform
- Baseado no libuv
- opção padrão no template do asp.net core
- Aguenta muita porrada
Kestrel Rede Interna
Kestrel
Kestrel com SSL
Kestrel para Internet
Por questões de segurança é necessário ter um proxy reverso na frente do kestrel
server { listen 8080; location / { proxy_pass http://localhost:5000; } }
/etc/nginx/conf.d/default.conf
>sudo apt-get install nginx >sudo service nginx start
Supervisord
A Process Control System
>sudo apt-get install supervisor >dotnet publish >sudo cp -a ~/teste/bin/Debug/netcoreapp1.1/publish /var/meusite
Supervisord
Configuração
[program:teste] command=/usr/bin/dotnet /var/meusite/teste.dll --server.urls=http://0.0.0.0:5123 directory=/var/meusite autostart=true autorestart=true stderr_logfile=/var/log/dotnettest.err.log stdout_logfile=/var/log/dotnettest.out.log environment=ASPNETCORE_ENVIRONMENT=Production user=www-data stopsignal=INT
/etc/supervisor/conf.d/kestrel_default.conf
Supervisord
Executando
>sudo service supervisor start >sudo tail -f /var/log/supervisor/supervisord.log >sudo tail -f /var/log/dotnettest.out.log
Supervisor
8080
5123
Kestrel
Supervisor
8080
5124
Kestrel
5123
Kestrel
5125
Kestrel
DockerFile
Docker-Compose
>docker-compose up -d
>curl -i http://localhost:9090/api/book
Supervisor
8080
5124
Kestrel
5123
Kestrel
5125
Kestrel
Supervisor
Supervisor
Windows + IIS
Como funciona
ASP. NET CORE MODULE
O que o ANCM faz?
- Configura variáveis de ambiente.
- Loga o stdout para um arquivo de log.
- Repassa tokens de autenticação do Windows
- Cria um proxy reverso entre o IIS e o Kestrel
Como Instalar
Instale no seu server:
Como Instalar
Adicione no seu projeto
Microsoft.AspNetCore.Server.IISIntegration
<configuration>
<!--
Configure your application settings in appsettings.json. Learn more at http://go.microsoft.com/fwlink/?LinkId=786380
-->
<system.webServer>
<handlers>
<add name="aspNetCore" path="*" verb="*" modules="AspNetCoreModule" resourceType="Unspecified" />
</handlers>
<aspNetCore processPath="%LAUNCHER_PATH%"
arguments="%LAUNCHER_ARGS%" stdoutLogEnabled="true"
stdoutLogFile=".\logs\stdout" forwardWindowsAuthToken="false" />
</system.webServer>
</configuration>
<configuration>
<!--
Configure your application settings in appsettings.json. Learn more at http://go.microsoft.com/fwlink/?LinkId=786380
-->
<system.webServer>
<handlers>
<add name="aspNetCore" path="*" verb="*" modules="AspNetCoreModule" resourceType="Unspecified" />
</handlers>
<aspNetCore processPath=".\sample.exe"
arguments="" stdoutLogEnabled="true"
stdoutLogFile="\\?\%home%\LogFiles\stdout" forwardWindowsAuthToken="false" />
</system.webServer>
</configuration>
Web.Config antes antes de publicado
Web.Config depois de publicado
Azure + Visual Studio
Azure + Visual Studio
Azure + Visual Studio
Azure + Visual Studio
Azure + Visual Studio
Azure + Visual Studio
WebListener
WebListener é um servidor que roda diretamente sobre o Windows HTTP Server API.
WebListener
•Windows authentication
•Port sharing
•HTTPS
•HTTP/2
•Direct file transmission
•Response caching WebSockets
WebListenner
Quando usar qual
Dev
Prod
Kestrel
Kestrel
IIS
WebListenner
Referências
- http://docs.asp.net/
- http://docker.com
- Servers overview for ASP.NET Core
- NGINX Reverse Proxy and Load Balancing for ASP.NET 5 Applications with Docker Compose
- Publish to a Linux Production Environment
- Load Balancing DotNet Core Docker Containers with nginx
- Hosting .NET Core on linux with Docker - A Noob's Guide
Dúvidas, Críticas ou Sugestões?
@vcavalcante
vcavalcante@lambda3.com.br
ASP.NET CORE HOSTING
By Victor Cunha Cavalcante
ASP.NET CORE HOSTING
- 3,081