Implantação de aplicação C# em VPS: guia passo a passo do início ao fim

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

Introdução: Por que o VPS é a solução ideal para aplicações C#?

O desenvolvimento em C# e na plataforma .NET deixou de ser privilégio exclusivo de servidores Windows. Com o lançamento do .NET Core (e agora .NET 5/6/7/8), os desenvolvedores ganharam a capacidade de executar suas aplicações no Linux, o que abriu acesso a servidores VPS baratos e de alto desempenho. Implantar uma aplicação C# em VPS não é apenas uma economia de orçamento, mas também controle total sobre a infraestrutura: desde a escolha do SO até a configuração de segurança.

Neste guia, abordaremos o ciclo completo de implantação de uma aplicação ASP.NET Core em um servidor remoto. Você aprenderá como preparar o servidor, configurar o proxy reverso Nginx, executar a aplicação através do Kestrel e protegê-la com um certificado SSL. Todas as etapas são acompanhadas de exemplos de código e comandos de console.



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

Escolha do SO e conexão via SSH

Para implantar uma aplicação C# em VPS, recomenda-se usar a distribuição Ubuntu 22.04 LTS ou Debian 11. Após alugar o servidor, conecte-se a ele via SSH:

ssh root@seu_IP_do_servidor

Atualize o gerenciador de pacotes e instale os utilitários necessários:

apt update && apt upgrade -yapt install curl wget git -y


Instalação do .NET SDK ou Runtime

Para executar uma aplicação pronta, basta instalar o ASP.NET Core Runtime. Se você planeja compilar o código diretamente no servidor, instale o SDK. Adicionaremos o repositório Microsoft e instalaremos o .NET 8:

wget https://packages.microsoft.com/config/ubuntu/22.04/packages-microsoft-prod.deb -O packages-microsoft-prod.debdpkg -i packages-microsoft-prod.debapt updateapt install aspnetcore-runtime-8.0 -y

Verifique a instalação:

dotnet --list-runtimes

A saída deve conter uma linha com a versão do ASP.NET Core 8.0.x.



2. Preparação e publicação da aplicação

Configuração do projeto para produção

No seu projeto ASP.NET Core, abra o arquivo Program.cs e certifique-se de que a aplicação está ouvindo a URL correta. Para funcionar através do Kestrel, definiremos a porta 5000:

var builder = WebApplication.CreateBuilder(args);builder.WebHost.UseUrls("http://0.0.0.0:5000");var app = builder.Build();app.MapGet("/", () => "Hello from VPS!");app.Run();

Adicione também em appsettings.json uma seção para logs e strings de conexão com o banco de dados, se forem utilizados.



Publicação da aplicação (Self-contained ou Framework-dependent)

Escolha o método de publicação. Self-contained inclui todas as dependências, o que é conveniente se o servidor não tiver .NET Runtime. Framework-dependent requer o Runtime instalado. Execute o comando na pasta do projeto:

dotnet publish -c Release -o ./publish

Após a conclusão, todos os arquivos necessários estarão na pasta publish. Compacte-os:

tar -czf app.tar.gz ./publish


Upload para o servidor

Use SCP ou SFTP para transferir o arquivo. Exemplo via SCP (executado na máquina local):

scp app.tar.gz root@seu_IP:/var/www/myapp/

No servidor, descompacte o arquivo:

mkdir -p /var/www/myapptar -xzf /var/www/myapp/app.tar.gz -C /var/www/myapp/


3. Configuração do Kestrel e criação do serviço systemd

Execução da aplicação através do Kestrel

Kestrel é o servidor web embutido do ASP.NET Core. Para um teste de execução, faça:

cd /var/www/myapp/publishdotnet YourAppName.dll

A aplicação deve iniciar na porta 5000. Verifique com curl http://localhost:5000. Se tudo funcionar, pare o processo (Ctrl+C).



Criação do arquivo de unidade systemd

Para que a aplicação inicie automaticamente na inicialização do sistema e seja reiniciada em caso de falhas, criaremos um serviço systemd. Crie o arquivo:

nano /etc/systemd/syst                

Blogs

Book Recommendations