Come installare e utilizzare più versioni di .NET Core su Ubuntu

13 feb 2024 3 min di lettura
Come installare e utilizzare più versioni di .NET Core su Ubuntu
Indice dei contenuti

Introduzione

Nel panorama dello sviluppo moderno, la versatilità e l’efficienza nella distribuzione delle applicazioni sono fondamentali. Ciò è particolarmente vero quando si lavora con .NET Core, il framework multipiattaforma di Microsoft, che ha visto un'adozione significativa per la creazione di un'ampia gamma di applicazioni. Uno scenario comune prevede l'esecuzione di più applicazioni .NET Core sullo stesso server. Questa guida fornisce una panoramica completa su come eseguire più applicazioni .NET Core affiancate su una singola istanza di Ubuntu senza fare affidamento su Docker, coprendo tutti gli aspetti, dall'installazione alla configurazione e alla distribuzione.

Docker e la containerizzazione offrono modi potenti per isolare e distribuire le applicazioni. Tuttavia, esistono scenari in cui è preferibile eseguire le applicazioni direttamente sul sistema host, sia per semplicità, conservazione delle risorse o requisiti di prestazioni specifici. Questa guida è incentrata su Ubuntu come sistema host, data la sua popolarità e il supporto all'interno dell'ecosistema .NET Core.

Prerequisiti

  • Server Ubuntu (18.04 LTS o successivo consigliato)
  • Conoscenza di base dell'interfaccia della riga di comando
  • Applicazioni .NET Core destinate a versioni diverse (ad esempio, 3.1 e 6.0)

Passaggio 1: installare gli SDK .NET

.NET Core supporta l'installazione affiancata di diverse versioni di runtime, gli SDK per le versioni specifiche di .NET Core a cui sono destinate le applicazioni. Ciò consente lo sviluppo e l'esecuzione di applicazioni per quelle versioni sul tuo server Ubuntu.

Aggiorna l' indice dei pacchetti e installa i pacchetti prerequisiti per garantire che il tuo sistema possa accedere al repository dei pacchetti di Microsoft:

wget https://packages.microsoft.com/config/ubuntu/$(lsb_release -rs)/packages-microsoft-prod.deb
sudo dpkg -i packages-microsoft-prod.deb
sudo apt update
sudo apt install -y apt-transport-https
sudo apt update

Installare gli SDK .NET Core per le versioni richieste dalle applicazioni. Ad esempio, per installare gli SDK .NET Core 3.1, .NET 6 e .NET 8:

sudo apt install -y dotnet-sdk-3.1
sudo apt install -y dotnet-sdk-6.0
sudo apt install -y dotnet-sdk-8.0

Passaggio 2: configura ciascuna applicazione

Per eseguire più applicazioni sullo stesso server, è necessario assicurarsi che siano configurate per l'ascolto su porte diverse per evitare conflitti di porte.

Nella prima applicazione, modifica il file appsettings.json o appsettings.Production.json per specificare una porta univoca:

{
  "Kestrel": {
    "Endpoints": {
      "Http": {
        "Url": "http://localhost:5001"
      }
    }
  }
}

Per la seconda applicazione, modifica la sua configurazione in modo simile per assicurarti che sia in ascolto su una porta diversa, come 5001:

{
  "Kestrel": {
    "Endpoints": {
      "Http": {
        "Url": "http://localhost:5000"
      }
    }
  }
}

Passaggio 3: eseguire le applicazioni

Passare alla directory di ogni applicazione e usare il comando dotnet run per avviarle, assicurandosi che siano in esecuzione sulle porte configurate.

dotnet run

In alternativa, per gli ambienti di produzione o se preferisci non utilizzare direttamente il comando dotnet run, pubblica le tue applicazioni per creare una distribuzione autonoma:

Pubblica le applicazioni con i seguenti comandi, adattandole al runtime specifico e ai percorsi dell'applicazione:

dotnet publish -c Release -r ubuntu.20.04-x64 --output /path/to/YourApp

Esegui le applicazioni pubblicate direttamente dalle relative directory di pubblicazione.

Passaggio 4: utilizzo di un proxy inverso (facoltativo)

In un ambiente di produzione o per semplificare le configurazioni di rete, potresti scegliere di utilizzare un proxy inverso come Nginx o Apache. Questa configurazione consente di instradare il traffico all'applicazione corretta in base ai percorsi URL o ai nomi di dominio, anche se le applicazioni sono in ascolto su porte diverse localmente.

Passaggio 5: configurazione dei servizi di sistema (facoltativo)

Per garantire che le tue applicazioni vengano eseguite come servizi e si avviino automaticamente all'avvio, puoi creare file di servizio systemd per ciascuna applicazione. Ecco un esempio per un'applicazione .NET:

Crea un file di servizio in /etc/systemd/system/yourapp.service :

[Unit]
Description=.NET Web Application

[Service]
WorkingDirectory=/path/to/app
ExecStart=/usr/bin/dotnet /path/to/app/YourApp.dll
Restart=always
RestartSec=10
SyslogIdentifier=dotnet-yourapp
User=www-data
Environment=ASPNETCORE_ENVIRONMENT=Production

[Install]
WantedBy=multi-user.target

Ricaricare il servizio demone di sistema:

sudo systemctl daemon-reload

Abilita e avvia il servizio:

sudo systemctl enable yourapp.service
sudo systemctl start yourapp.service

Ripeti la procedura per ogni applicazione, assicurandoti di utilizzare nomi di servizio univoci e percorsi corretti.

Conclusione

L'esecuzione di più applicazioni .NET Core affiancate su una singola istanza di Ubuntu è un processo semplice che può essere ottenuto senza Docker o la containerizzazione. Gestendo attentamente le installazioni SDK, configurando le porte delle applicazioni e, facoltativamente, configurando proxy inversi e servizi di sistema, è possibile distribuire e gestire in modo efficiente più applicazioni .NET Core. Questo approccio offre flessibilità nelle strategie di sviluppo e distribuzione, soddisfacendo una varietà di scenari e requisiti di prestazioni.

Buy me a coffeeBuy me a coffee

Supportaci se ti piacciono i nostri contenuti. Grazie.

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.