Categorias
.Net Core

Rodar uma aplicação Asp.Net Core no NGINX e Ubuntu

Primeiramente vamos iniciar o processo copiando o pacote do projeto para o diretório /home/ubuntu/apps/sample.
Isso pode ser feito através de um programa de ftp ou qualquer outro meio.

Depois disso vamos então editar o arquivo de configurações padrão do nginx para gerenciar o redirecionamento da aplicação:
nano /etc/nginx/sites-available/default

O arquivo deverá contar com essa estrutura:
server {
listen 80;
server_name {endereco_da_aplicacao} # todas as variações do endereço (com www, sem www) devem ser inseridas com espaço entre elas);
root /home/ubuntu/apps/{your-folder-name};
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;
}
}

Após isso basta iniciar o serviço:
service nginx restart

Com esse comando é possível iniciar o serviço se ele estiver parado:
service nginx start

Agora é criar o serviço da aplicação. Faremos isso iniciando a criação do arquivo necessário:
nano /etc/systemd/system/{your-service-name}.service

A sintaxe do arquivo deve ser similar a isso:

[Unit]
Description=Descrição da aplicação
[Service]
WorkingDirectory=/home/ubuntu/apps/diretorio_da_aplicacao
ExecStart=/usr/bin/dotnet /home/ubuntu/apps/diretorio_da_aplicacao/NomeDaDllDoProjeto.dll
Restart=always
RestartSec=10
KillSignal=SIGINT
SyslogIdentifier=dotnet-example
User=www-data
Environment=ASPNETCORE_ENVIRONMENT=Production
Environment=DOTNET_PRINT_TELEMETRY_MESSAGE=false
Environment=ASPNETCORE_URLS=http://localhost:5000
[Install]
WantedBy=multi-user.target

Agora precisamos habilitar o serviço:
systemctl enable {your-service-name}.service

Em seguida precisamos iniciar o serviço:
systemctl start {your-service-name}.service

É possível verificar o status do serviço
systemctl status {your-service-name}.service

Para acompanhar a execução da aplicação e verificar logs, execute esse comando:
journalctl -fu {your-service-name}.service