Introdução
Desenvolver uma aplicação C# na plataforma .NET é apenas metade do caminho. Para tornar seu projeto acessível aos usuários na internet, ele deve ser devidamente implantado em um servidor. VPS (Servidor Virtual Privado) é uma solução ideal para pequenas e médias empresas e desenvolvedores independentes: oferece controle total sobre o ambiente a um preço acessível. Neste artigo, abordaremos o processo completo de implantação de uma aplicação C# em um VPS rodando Linux (Ubuntu 22.04). Você aprenderá como preparar o servidor, publicar a aplicação, configurar um proxy reverso com Nginx e garantir a inicialização automática via systemd.
1. Preparando o VPS e Instalando o .NET Runtime
1.1. Conectando ao Servidor
Após adquirir um VPS, você receberá um endereço IP e uma senha de root. Conecte-se via SSH:
ssh root@your-server-ipRecomenda-se criar imediatamente um usuário separado para segurança:
adduser appuserusermod -aG sudo appusersu - appuser1.2. Instalando o .NET Runtime
Para que uma aplicação C# funcione no servidor, o ASP.NET Core Runtime é necessário. Adicione o repositório da Microsoft e instale o pacote:
wget https://packages.microsoft.com/config/ubuntu/22.04/packages-microsoft-prod.deb -O packages-microsoft-prod.debsudo dpkg -i packages-microsoft-prod.debsudo apt-get updatesudo apt-get install -y aspnetcore-runtime-8.0Verifique a instalação:
dotnet --list-runtimesVocê deve ver uma linha com a versão ASP.NET Core 8.0.0.
2. Publicando a Aplicação e Enviando para o Servidor
2.1. Publicando na Máquina Local
No seu computador com Visual Studio ou .NET CLI, abra o projeto e execute o comando de publicação:
dotnet publish -c Release -o ./publishEste comando cria uma pasta publish contendo todos os arquivos necessários para executar a aplicação (incluindo dependências de runtime se você estiver usando FDD — Framework-Dependent Deployment).
2.2. Enviando para o VPS
Copie a pasta publish para o servidor usando scp ou sftp. Na máquina local, execute:
scp -r ./publish appuser@your-server-ip:/home/appuser/myappAgora, no servidor, verifique se os arquivos estão no lugar:
ls -la /home/appuser/myapp3. Configurando o systemd para Inicialização Automática
Para garantir que a aplicação inicie na inicialização do sistema e reinicie automaticamente após falhas, crie uma unit do systemd.
3.1. Criando o Arquivo de Serviço
Crie o arquivo /etc/systemd/system/myapp.service com privilégios de root:
sudo nano /etc/systemd/system/myapp.serviceInsira o seguinte conteúdo:
[Unit]Description=Minha Aplicação ASP.NET CoreAfter=network.target
[Service]WorkingDirectory=/home/appuser/myappExecStart=/usr/bin/dotnet /home/appuser/myapp/YourAppName.dllRestart=alwaysRestartSec=10KillSignal=SIGINTSyslogIdentifier=myappUser=appuserEnvironment=ASPNETCORE_ENVIRONMENT=ProductionEnvironment=ASPNETCORE_URLS=http://localhost:5000
[Install]WantedBy=multi-user.targetSubstitua YourAppName.dll pelo nome real do seu arquivo .dll (geralmente corresponde ao nome do projeto).
3.2. Iniciando e Habilitando o Serviço
sudo systemctl daemon-reloadsudo systemctl start myappsudo systemctl enable myappVerifique o status:
sudo systemctl status myappSe tudo estiver configurado corretamente, você verá o status active (running). A aplicação agora está ouvindo na porta 5000 na interface local.
4. Configurando o Nginx como Proxy Reverso
Para tornar a aplicação acessível externamente nas portas padrão (80/443) e adicionar um certificado SSL, instale e configure o Nginx.
4.1. Instalando o Nginx
sudo apt updatesudo apt install nginx -y