Introdução: por que a VPS é o lugar ideal para sua aplicação C#
\nO desenvolvimento em C# no ecossistema .NET oferece ferramentas poderosas para criar aplicações web, APIs e microsserviços. No entanto, escrever o código é apenas metade do trabalho. Para que sua aplicação se torne acessível aos usuários, é necessário implantá-la em um servidor. Um Servidor Virtual Privado (VPS) fornece controle total sobre o ambiente, o que é fundamental para um ambiente de produção. Neste guia, percorreremos o caminho do zero até uma aplicação C# totalmente funcional em um VPS rodando Ubuntu. Você aprenderá como instalar o .NET Runtime, configurar o servidor proxy reverso Nginx, iniciar a aplicação como um serviço systemd e garantir sua reinicialização automática.
\n\nPreparação do servidor e instalação do software necessário
\n1. Conexão ao VPS e configurações básicas
\nApós obter acesso ao VPS (endereço IP, nome de usuário e senha ou chave SSH), conecte-se via terminal:
\nssh root@seu_IP_do_servidor\nAtualize a base de pacotes e instale o curl (será necessário para baixar o .NET):
\napt update && apt upgrade -y\napt install curl -y\n\n2. Instalação do .NET SDK/Runtime
\nA Microsoft recomenda instalar o .NET através do repositório oficial. Vamos adicioná-lo e instalar o SDK (para compilação) ou Runtime (apenas para execução). Para um servidor de produção, geralmente o Runtime é suficiente, mas para facilitar a implantação, instalaremos o SDK:
\nwget https://packages.microsoft.com/config/ubuntu/22.04/packages-microsoft-prod.deb -O packages-microsoft-prod.deb\ndpkg -i packages-microsoft-prod.deb\napt update\napt install -y dotnet-sdk-8.0\nVerifique a instalação:
\ndotnet --version\n\n3. Instalação do Nginx e Git
\nO Nginx atuará como proxy reverso, redirecionando as requisições da porta 80 para sua aplicação. O Git será necessário para clonar o repositório:
\napt install -y nginx git\nsystemctl enable nginx\nsystemctl start nginx\n\nPreparação e publicação da aplicação C#
\n1. Criação ou clonagem do projeto
\nComo exemplo, criaremos uma aplicação ASP.NET Core Web API simples diretamente no servidor (em um projeto real, você clonará o repositório):
\nmkdir /var/www/myapp\ncd /var/www/myapp\ndotnet new webapi --name MyApp\ncd MyApp\n\n2. Publicação da aplicação (self-contained)
\nPara que a aplicação funcione sem o SDK instalado no servidor, publique-a no modo self-contained:
\ndotnet publish -c Release -r linux-x64 --self-contained true -o /var/www/myapp/publish\nA flag --self-contained true inclui todas as dependências do .NET na pasta publish. A alternativa é --self-contained false (requer o Runtime instalado).
3. Teste de inicialização
\nVerifique se a aplicação inicia (por padrão, na porta 5000):
\ncd /var/www/myapp/publish\n./MyApp --urls "http://0.0.0.0:5000"\nAbra no navegador http://seu_IP:5000 — você deverá ver a resposta da API. Pare o processo (Ctrl+C).
Configuração do Nginx como proxy reverso
\n1. Configuração do site
\nCriaremos um arquivo de configuração para o Nginx:
\nnano /etc/nginx/sites-available/myapp\nInsira o seguinte código (substitua your_domain_or_ip pelo seu domínio ou IP):
server {\n listen 80;\n server_name your_domain_or_ip;\n\n location / {\n proxy_pass http://localhost:5000;\n proxy_http_version 1.1;\n proxy_set_header Upgrade $http_upgrade;\n proxy_set_header Connection keep-alive;\n proxy_set_header Host $host;\n proxy_cache_bypass $http_upgrade;\n proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;\n proxy_set_header X-Forwarded-Proto $scheme;\n }\n}\n\n2. Ativação da configuração
\nln -s /etc/nginx/sites-available/myapp /etc/nginx