O ASP.NET é um framework popular de desenvolvimento web criado pela Microsoft. Ele permite que os desenvolvedores criem aplicações web, sites e serviços dinâmicos e robustos, utilizando diversas linguagens de programação, como C# e Visual Basic .NET.
Graças aos seus recursos poderosos e à integração eficiente com outras tecnologias da Microsoft, o ASP.NET simplifica o processo de criação e implantação de aplicações web.
A versão do ASP.NET suportada no Ubuntu é o ASP.NET Core. Caso você utilize ASP.NET MVC com o .NET Framework ou Web API, pode ser necessário converter seu projeto para o ASP.NET Core MVC antes de poder implantá-lo em nosso VPS Linux.
Para rodar sua aplicação ASP.NET na Hostinger, é necessário ter um VPS com Ubuntu 22.04 64bit e o template ASP.NET já instalado.
Visite nossa página de Hospedagem ASP.NET para saber mais sobre os planos VPS disponíveis 🚀
Configuração da aplicação ASP.NET Core
Ao fazer login no seu VPS por SSH, você pode checar as versões do .NET instaladas rodando este comando:
dotnet --version
Para começar, vamos criar uma aplicação web simples a partir dos templates pré-instalados e vamos chamá-la de NewApp:
dotnet new webapp -o NewApp
Isso criará uma nova pasta para sua aplicação em: /root/NewApp/. Agora, vamos alterar a porta padrão da sua aplicação para 5000 no arquivo launchSettings.json:
nano /root/NewApp/Properties/launchSettings.json
O resultado deve ser este:
"profiles": {
"NewApp": {
"commandName": "Project",
"dotnetRunMessages": true,
"launchBrowser": true,
"applicationUrl": "http://localhost:5000",
"environmentVariables": {
"ASPNETCORE_ENVIRONMENT": "Development"
}
}
Além disso, precisamos remover o middleware UseHttpsRedirection(), pois usaremos o NGINX para gerenciar o redirecionamento HTTPS. Abra o arquivo Program.cs e certifique-se de que a linha app.UseHttpsRedirection() não esteja presente:
nano /root/NewApp/Program.cs
Também podemos adicionar o middleware app.UseForwardedHeaders(), já que estamos usando o NGINX como um proxy reverso. O resultado deve ser este:
var builder = WebApplication.CreateBuilder(args);
// Add services to the container.
builder.Services.AddRazorPages();
var app = builder.Build();
// Configure the HTTP request pipeline.
if (!app.Environment.IsDevelopment())
{
app.UseExceptionHandler("/Error");
// The default HSTS value is 30 days. You may want to change this for production scenarios, see https://aka.ms/aspnetcore-hsts.
app.UseHsts();
}
app.UseStaticFiles();
app.UseForwardedHeaders();
app.UseRouting();
app.UseAuthorization();
app.MapRazorPages();
app.Run();
Publicar e executar a aplicação
Para publicar a aplicação usando a configuração de Release, certifique-se de que você está no diretório do projeto e, em seguida, execute o comando a seguir:
cd /root/NewApp/
dotnet publish --configuration Release
O projeto foi publicado. Agora, precisamos criar um serviço para garantir que a aplicação inicie e execute corretamente. Para começar, vamos criar um arquivo de serviço para o nosso projeto dentro do diretório /etc/systemd/system:
cd /etc/systemd/system
sudo nano NewApp.service
No novo arquivo, insira a seguinte configuração:
[Unit]
Description=NewApp
[Service]
WorkingDirectory=/root/NewApp/bin/Release/net6.0/publish/
ExecStart=/usr/bin/dotnet /root/NewApp/bin/Release/net6.0/publish/NewApp.dll
Restart=always
# Restart service after 10 seconds if the dotnet service crashes:
RestartSec=10
KillSignal=SIGINT
SyslogIdentifier=dotnet-NewApp
User=root
Environment=ASPNETCORE_ENVIRONMENT=Production
Environment=DOTNET_PRINT_TELEMETRY_MESSAGE=false
[Install]
WantedBy=multi-user.target
Agora, vamos habilitar e iniciar o serviço usando os comandos abaixo:
sudo systemctl enable NewApp.service
sudo systemctl start NewApp.service
Instalar e configurar o NGINX
Para começar, vamos instalar o servidor NGINX. Ele é um software de servidor web de código aberto muito popular, famoso por seu alto desempenho, escalabilidade e robustez. É muito usado como servidor de proxy reverso, balanceador de carga e cache HTTP.
sudo apt-get -y install nginx certbot python3-certbot-nginx
Após a instalação, vamos configurar o NGINX. Para isso, podemos editar o arquivo de configuração usando o comando abaixo:
sudo nano /etc/nginx/sites-available/default
Vamos fazer duas alterações neste arquivo. Primeiro, defina o nome do seu domínio no parâmetro server_name:
server_name domain.tld;
Em seguida, defina a configuração de location da seguinte forma:
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;
}
Instalar um SSL e iniciar o Proxy NGINX
Após a conclusão da propagação DNS do seu domínio, o próximo passo é gerar o certificado SSL para sua aplicação ASP.NET. Execute o comando abaixo para gerar o certificado SSL automaticamente:
sudo certbot --nginx -d domain.tld
Depois, reinicie o NGINX para aplicar a configuração:
nginx -t && nginx -s reload
Em seguida, execute o comando crontab para renovar automaticamente o certificado SSL:
crontab -e
Para finalizar, insira o comando a seguir para que o SSL seja renovado automaticamente todos os dias às 12h (meio-dia):
0 12 * * * /usr/bin/certbot renew --quiet
Feito! Sua aplicação já está acessível no domínio que você configurou neste tutorial 🎉