Implantação de aplicação C# em VPS: nível avançado

Treinador Online de Python para Iniciantes

Aprenda Python facilmente sem sobrecarga teórica. Resolva tarefas práticas com verificação automática e escreva código diretamente no navegador.

Start Course

Implantação avançada de aplicação C# (.NET) em VPS: guia passo a passo



Implantação de aplicação C# em VPS não é apenas copiar arquivos para o servidor. Para ambiente de produção, é necessária uma configuração abrangente: desde a configuração de proxy reverso até a automação da implantação. Neste artigo, abordaremos técnicas avançadas de implantação usadas por desenvolvedores experientes. Você aprenderá a configurar Nginx, conectar HTTPS, implementar CI/CD e monitoramento.



1. Preparação do servidor e instalação do .NET Runtime



Antes de iniciar a implantação, certifique-se de que seu VPS esteja rodando Ubuntu 22.04 ou superior. Conecte-se via SSH e execute a configuração básica.



# Atualização do sistemasudo apt update && sudo apt upgrade -y

# Instalação do .NET SDK (para compilação) e Runtime (para execução)wget https://dot.net/v1/dotnet-install.sh -O dotnet-install.shchmod +x dotnet-install.shsudo ./dotnet-install.sh --channel 8.0 --install-dir /usr/share/dotnetsudo ln -s /usr/share/dotnet/dotnet /usr/local/bin/dotnet

# Verificação da instalaçãodotnet --list-runtimes


Para produção, recomenda-se usar apenas o Runtime para reduzir o tamanho da imagem. O SDK é necessário apenas na máquina de compilação (por exemplo, no CI/CD).



2. Otimização da aplicação para produção



Antes da implantação, configure a aplicação para funcionar em ambiente de produção. Isso inclui configuração do Kestrel, registro de logs e tratamento de erros.



2.1. Configuração do Program.cs



No arquivo Program.cs, especifique a porta explicitamente e ative o redirecionamento para HTTPS (se estiver usando proxy reverso).



var builder = WebApplication.CreateBuilder(args);

// Configuração do Kestrel para funcionar via proxy reversobuilder.WebHost.ConfigureKestrel(options =>{ options.Listen(IPAddress.Any, 5000); // Porta HTTP para Nginx});

// Adição de serviçosbuilder.Services.AddControllersWithViews();builder.Services.AddHealthChecks();

var app = builder.Build();

// Middleware para produçãoif (!app.Environment.IsDevelopment()){ app.UseExceptionHandler("/Home/Error"); app.UseHsts();}

app.UseStaticFiles();app.UseRouting();app.UseAuthorization();

app.MapHealthChecks("/health");app.MapControllerRoute( name: "default", pattern: "{controller=Home}/{action=Index}/{id?}");

app.Run();


2.2. Compilação e publicação



Compile a aplicação como self-contained para não depender do Runtime instalado no servidor.



dotnet publish -c Release -r linux-x64 --self-contained true -o ./publish


Este comando criará uma pasta publish com todos os arquivos necessários. Transfira-a para o servidor usando scp ou rsync.



3. Configuração do Nginx como proxy reverso



O Nginx receberá as requisições de entrada e as redirecionará para sua aplicação C#. Isso melhora o desempenho e a segurança.



3.1. Instalação e configuração básica



sudo apt install nginx -ysudo systemctl start nginxsudo systemctl enable nginx


Crie um arquivo de configuração para sua aplicação:



sudo nano /etc/nginx/sites-available/myapp


Insira o seguinte código:



server {    listen 80;    server_name your-domain.com www.your-domain.com;

location / { proxy_pass http://localhost:5000; proxy_http_version 1.1; proxy_set_header Upgrade $http_upgrade; proxy_set_header Connection keep-alive; proxy_set_header Host $host; proxy_cache_bypass $http_upgrade; proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for; proxy_set_header X-Forwarded-Proto $scheme; }

location /health { access_log off; return 200 "Healthy"; add_header Content-Type text/plain; }}


Ative o site e reinicie o Nginx:

<

Blogs

Book Recommendations