Come distribuire applicazioni .NET Core su server Linux

26 feb 2024 4 min di lettura
Come distribuire applicazioni .NET Core su server Linux
Indice dei contenuti

Introduzione

La distribuzione di applicazioni .NET Core su server Linux segna un cambiamento significativo rispetto alle tradizionali piattaforme di distribuzione incentrate su Microsoft. La natura multipiattaforma di .NET Core consente agli sviluppatori di sfruttare le prestazioni, l'affidabilità e la sicurezza degli ambienti Linux. Questa guida fornisce una panoramica completa della distribuzione di applicazioni .NET Core in varie distribuzioni Linux, concentrandosi sull'uso di Nginx o Apache come proxy inverso e sulla protezione delle distribuzioni con SSL.

Prerequisiti

Prima di immergerti nel processo di distribuzione, assicurati di avere:

  • Un'applicazione .NET Core pronta per la distribuzione.
  • Un server Linux (Ubuntu, CentOS o qualsiasi distribuzione preferita).
  • Conoscenza base della riga di comando di Linux.

Passaggio 1: prepara il tuo server Linux

Innanzitutto, aggiorna il gestore pacchetti del tuo server. Installa il runtime o l'SDK .NET Core sul tuo server, a seconda delle tue esigenze specifiche. L'SDK è necessario per scopi di sviluppo, mentre il runtime è sufficiente per l'esecuzione delle applicazioni.

Per le distribuzioni basate su Debian come Ubuntu, utilizzare:

sudo dnf update
sudo apt install dotnet-runtime-6.0

Per le distribuzioni basate su Red Hat come CentOS, utilizzare:

sudo apt update
sudo dnf install dotnet-runtime-6.0

Passaggio 2: pubblicare l'applicazione .NET sul computer dello sviluppatore

La pubblicazione di un'applicazione .NET per la produzione è un passaggio cruciale che implica la preparazione dell'applicazione per la distribuzione, comprese la compilazione, l'ottimizzazione e il confezionamento. Per pubblicare un'applicazione .NET per la produzione, la CLI .NET fornisce un comando semplice e potente:

dotnet publish -c Release -o ./publish

Questo comando compila l'applicazione in modalità di rilascio, consentendo ottimizzazioni per migliorare le prestazioni e ridurre le dimensioni dell'applicazione. L'argomento -o ./publish specifica la directory di output in cui verrà archiviata l'applicazione pubblicata. Garantisce che tutti i componenti runtime, le librerie e le dipendenze necessarie siano inclusi, rendendo l'applicazione pronta per la distribuzione su qualsiasi piattaforma o ambiente hosting supportato.

Passaggio 3: trasferire il codice pubblicato sul server di produzione

Questo processo prevede la copia sicura dei file dell'applicazione nell'ambiente di produzione. Un comando ampiamente utilizzato per questo scopo è scp (secure copy), che utilizza SSH per il trasferimento dei dati, garantendo sicurezza e affidabilità. Il comando seguente illustra come trasferire l'applicazione pubblicata da una directory locale a un server remoto:

scp -r ./publish username@your_production_server:/path/to/destination

Questo comando copia in modo ricorsivo l'intero contenuto della directory ./publish (dove è stata pubblicata l'applicazione .NET) nel percorso specificato sul server di produzione. Sostituisci nome utente, tuo_server_produzione e /percorso/della/destinazione rispettivamente con il nome utente SSH, il nome host o l'indirizzo IP del tuo server effettivo e il percorso in cui desideri che risieda l'applicazione.

Passaggio 4: esegui l'applicazione .NET

Passare alla directory dell'applicazione ed eseguire l'applicazione con il seguente comando:

dotnet MyApplication.dll

Questo comando avvia l'applicazione sulla porta predefinita, in genere 5000 per il server Kestrel.

Passaggio 5: configura un proxy inverso con Nginx o Apache

Un proxy inverso si trova davanti alla tua applicazione, gestendo le richieste HTTP in entrata e inoltrandole all'app. Questa configurazione aumenta la sicurezza, consente il bilanciamento del carico e serve il contenuto statico in modo efficiente.

Utilizzando Nginx

Installa Nginx:

sudo apt install nginx

Configura Nginx creando un nuovo file di configurazione per la tua applicazione in /etc/nginx/sites-available/myapp e collegalo a sites-enabled.


server {
    listen 80;
    server_name example.com;

    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;
    }
}

Abilita la configurazione e riavvia Nginx:

sudo ln -s /etc/nginx/sites-available/myapp /etc/nginx/sites-enabled/
sudo nginx -t
sudo systemctl restart nginx

Utilizzando Apache

Installa Apache:

sudo apt install apache2

Abilita i moduli proxy e proxy_http :

sudo a2enmod proxy proxy_http

Crea un nuovo file di configurazione per la tua applicazione in /etc/apache2/sites-available/myapp.conf con il seguente contenuto:

<VirtualHost *:80>
    ServerName example.com

    ProxyPreserveHost On
    ProxyPass / http://localhost:5000/
    ProxyPassReverse / http://localhost:5000/
</VirtualHost>

Abilita il sito e riavvia Apache:

sudo a2ensite myapp.conf
sudo systemctl restart apache2

Passaggio 6: Proteggi l'applicazione con Let's Encrypt SSL

Proteggere la tua applicazione con SSL è fondamentale per proteggere i dati sensibili. Let's Encrypt offre certificati SSL gratuiti. Certbot è uno strumento popolare per ottenere e rinnovare i certificati Let's Encrypt.

Per Nginx

Installa Certbot e il plugin Nginx:

sudo apt-get install certbot python3-certbot-nginx

Ottieni e installa un certificato:

sudo certbot --nginx -d example.com

Per Apache

Installa Certbot e il plugin Apache:

sudo apt-get install certbot python3-certbot-apache

Ottieni e installa un certificato:

sudo certbot --apache -d example.com

Migliori pratiche

  • Mantieni aggiornati il ​​tuo server e la tua applicazione per mitigare le vulnerabilità.
  • Utilizza le variabili di ambiente per le impostazioni dell'applicazione, in particolare per i dati sensibili.
  • Implementare la registrazione e il monitoraggio per rilevare e risolvere tempestivamente i problemi.
  • Prendi in considerazione l'utilizzo di una pipeline CI/CD per test e distribuzione automatizzati.
  • Effettua regolarmente il backup dell'applicazione e del database.

Conclusione

La distribuzione di applicazioni .NET Core su server Linux apre un mondo di possibilità per gli sviluppatori abituati agli ambienti Windows. Seguendo questa guida è possibile sfruttare la potenza di Linux per ospitare applicazioni .NET Core robuste, sicure e scalabili.

Support us with a

Successivamente, completa il checkout per l'accesso completo a Noviello.it.
Bentornato! Accesso eseguito correttamente.
Ti sei abbonato con successo a Noviello.it.
Successo! Il tuo account è completamente attivato, ora hai accesso a tutti i contenuti.
Operazione riuscita. Le tue informazioni di fatturazione sono state aggiornate.
La tua fatturazione non è stata aggiornata.