chrome_reader_mode

Metti in mostra la tua personalizzazione Linux help_outline Maggiori informazioni

linux/hub è molto più di quel che vedi! info_outline Leggi le intenzioni

🔧 #howto - Installare .Net Core su Debian

Scritto da Hersy il Mer, 05/15/2019 - 12:24
In questa pagina
  • Caricamento..

In questa guida vediamo come installare e rendere funzionale .NET Core su server Debian.

Introduzione

.NET Core è un framework modulare gratuito e Open source sviluppato da Microsoft per sistemi operativi Windows, Linux e MacOS.

Formato da CoreCLR, un'implementazione runtime completa di CLR, la macchina virtuale che gestisce l'esecuzione di programmi .NET.

CoreCLR viene inoltre fornito con un compilatore just-in-time ottimizzato, chiamato RyuJIT.

Installazione

Procediamo quindi con l'installazione vera e propria. È necessaria una Shell con accesso root. In questa guida utilizzeremo la versione di .NET Core stabile, la 2.2 nel momento in cui scrivo.

Installazione SDK

Partiamo con l'installare il SDK ossia la strumentazione base, completa di template, toolchain e runtimes.

Prima di tutto aggiungiamo le repository ufficiali e le chiavi necessarie:

wget -qO- https://packages.microsoft.com/keys/microsoft.asc | gpg --dearmor > microsoft.asc.gpg
sudo mv microsoft.asc.gpg /etc/apt/trusted.gpg.d/
wget -q https://packages.microsoft.com/config/debian/9/prod.list
sudo mv prod.list /etc/apt/sources.list.d/microsoft-prod.list

Impostiamo poi i giusti permessi:

sudo chown root:root /etc/apt/trusted.gpg.d/microsoft.asc.gpg
sudo chown root:root /etc/apt/sources.list.d/microsoft-prod.list

Ora che abbiamo aggiunto le chiavi e le repository, procediamo con la vera e propria installazione dell'SDK

sudo apt update
sudo apt install apt-transport-https dotnet-sdk-2.2

Installazione .NET Core

Se tutto è andato a buon fine procediamo con l'installazione del runtime.

sudo apt update
sudo apt install aspnetcore-runtime-2.2

Una volta svolti i precedenti punti, consiglio un reboot affinchè sia tutto pienamente funzionale.

Creazione della prima WebApp base

Creiamo una cartella nella directory /root/testapp  denominata testapp (nel nostro esempio):

sudo mkdir /root/testapp

entriamo nella nuova locazione:

cd /root/testapp

e creiamo l'applicazione via dotnet:

dotnet new webapp

il risultato sarà simile a questo:

[email protected]:~/testapp|⇒  dotnet new webapp
The template "ASP.NET Core Web App" was created successfully.
This template contains technologies from parties other than Microsoft, see https://aka.ms/aspnetcore-template-3pn-210 for details.

Processing post-creation actions...
Running 'dotnet restore' on /root/testapp/testapp.csproj...
  Restore completed in 4.82 sec for /root/testapp/testapp.csproj.

Restore succeeded.

Infine con dotnet run avviamo l'applicazione appena creata:

dotnet run

A questo punto, se tutto è andato a buon fine, inizierà a funzionare restituendo come risultato localhost:5001 & 5000.

Accedendo da browser a http://localhost:5001 dovremmo vedere la nostra prima applicazione in .NET Core, funzionare.

Pubblicazione tramite proxy_pass di Nginx

In questo extra della guida, andiamo a vedere come "distribuire" la nostra applicazione via Nginx e sfruttando un certificato SSL.

Prerequisiti

  • Nginx
  • Certbot
  • .Net Core SDK+Runtime

Creazione applicazione

Creiamo una directory chiamata aspnetapp (nel nostro esempio), in /var/www:

sudo mkdir /var/www/aspnetapp

ed spostiamoci al suo interno:

cd /var/www/aspnetapp

Come abbiamo visto precedentemente, creiamo una nuova applicazione .NET Core:

dotnet new webapp

La cartella /www potrebbe avere una locazione differente nel vostro server, in base alla vostra configurazione.

proxy_pass

Andiamo ora a sfruttare il proxy_pass per creare un Reverse Proxy dalla porta della nostra applicazione a quella corretta 80 o 443.

Portiamoci in locazione:

cd /etc/nginx

in sites-available create un file di configurazione chiamato dotnetpass.conf e copiate la seguente configurazione

server {
     listen 443 ssl;
     listen [::]:443 ssl;
     server_name   example.com www.example.com;
      
   ssl_certificate /etc/letsencrypt/live/youraccount/fullchain.pem; # managed by Certbot
   ssl_certificate_key /etc/letsencrypt/live/youraccount/privkey.pem; # managed by Certbot
   include /etc/letsencrypt/options-ssl-nginx.conf; # managed by Certbot
   ssl_dhparam /etc/letsencrypt/ssl-dhparams.pem; # managed by Certbot
   
    location / {
        proxy_pass         https://localhost:5001;
        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;
    }
}
server {
    if ($host = www.example.com) {
        return 301 https://$host$request_uri;
    } # managed by Certbot


    if ($host = example.com) {
        return 301 https://$host$request_uri;
    } # managed by Certbot
    
    listen 80; 
    listen [::]:80; 

    server_name example.com www.example.com;
    return 404; # managed by Certbot

}

Abilitiamo infine la configurazione creando un link alla cartella sites-enabled:

Modificate la stringa server_name con il vostro dominio a disposizione, esempio: dotnet.vostrodominio.com

Nella stringa ssl_certificate & ssl_certificate:_key inserite la posizione dei vostri certificati CERTBOT

Abilitiamo infine la configurazione creando un link alla cartella sites-enabled:

ln -s /etc/nginx/sites-availables/dotnetpass.conf /etc/nginx/sites-enabled/dotnetpass.conf

A questo punto ricarichiamo le configurazioni di Nginx:

sudo service nginx restart

Se non restituisce errori è andato tutto a buon fine.

Proseguiamo con l'abilitazione del certificato SSL per il nostro dominio:

certbot --nginx -d ilvostrodominio.com -d www.ilvostrodominio.com -d dotnet.vostrodominio.com -d www.dotnet.vostrodominio.com

Avviamo finalmente la nostra applicazione:

cd /var/www/aspnetapp
dotnet run

che dovrebbe ora essere disponibile sul dominio da noi scelto.

Etichette