#dotnet#linux#ubuntu#nginx#linode#déploiement#api#production

Comment déployer .net 5 api sur linux Ubuntu 20.04 (Nginx) -Linode (Partie1)

Découvrez comment déployer une API .NET 5 sur Ubuntu 20.04 avec Nginx sur Linode. Guide complet avec configuration serveur et mise en production.

Avant de commencer nous nous connectons sur la plateforme Linode sur notre VPS linux(Ubuntu).

Si vous voulez savoir comment accéder à un VPS sur Linode suivez cet article. Connectons-nous par SSH à notre machine Ubuntu sur linode. Rappelons que les prix sur Linode sont vraiment accessibles et abordables.

Linode Dashboard

Ubuntu SSH Connection

Configuration de base Linux sur Linode

Mise à jour du système :

root@localhost:~# sudo apt update

Création d'un nouvel utilisateur :

root@localhost:~# adduser epa

Création utilisateur

Attribution des privilèges sudo :

root@localhost:~# usermod -aG sudo epa

Spécifions les privilèges de l'utilisateur en ajoutant le nom de notre utilisateur et les accès ALL=(ALL: ALL) ALL dans le fichier qui s'ouvrira :

root@localhost:~# visudo

Configuration sudoers

Changement d'utilisateur :

root@localhost:~# su - epa

Installation de .NET sur Ubuntu 20.04

Installation des packages Microsoft :

epa@localhost:~# wget https://packages.microsoft.com/config/ubuntu/20.04/packages-microsoft-prod.deb -O packages-microsoft-prod.deb
epa@localhost:~# sudo dpkg -i packages-microsoft-prod.deb
epa@localhost:~# sudo apt update
epa@localhost:~# sudo apt install apt-transport-https
epa@localhost:~# sudo apt-get install -y dotnet-sdk-5.0

Vérification de l'installation :

epa@localhost:~# dotnet --list-sdks

.NET SDK installé

Récupération de l'adresse IP du serveur :

epa@localhost:~# curl ifconfig.me

Adresse IP serveur

Configuration du projet .NET

Modification du fichier Program.cs :

Dans le fichier Program.cs, ajoutons l'adresse IP de notre machine Ubuntu :

public static IHostBuilder CreateHostBuilder(string[] args) =>
    Host.CreateDefaultBuilder(args)
        .ConfigureWebHostDefaults(webBuilder =>
        {
            webBuilder.UseStartup<Startup>().UseUrls("http://178.79.168.173:5000;http://178.79.168.173:5002");
            // webBuilder.UseStartup<Startup>().UseUrls("http://localhost:5000");
        });

Build du projet :

D:\PROJET\BACK DOTNET\CHRETIEN 2\CHRETIEN2> dotnet build

Création du dossier sur le serveur :

epa@localhost:~$ mkdir chretien

Transfert des fichiers :

Utilisons FileZilla pour récupérer notre projet sur notre serveur Linode Ubuntu en ligne. Utilisons la connexion FTP avec le port 22.

FileZilla Transfer

Configuration de Nginx

Installation de Nginx :

epa@localhost:~$ sudo apt install nginx

Nginx installé

Configuration de Nginx :

Modifions le fichier de configuration par défaut :

epa@localhost:~$ sudo vim /etc/nginx/sites-available/default

Configuration Nginx pour reverse proxy :

server {
    listen 80;
    location / {
        proxy_pass            http://178.79.168.173:5002;
        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;
    }
}

Vérification de la configuration :

epa@localhost:~$ sudo nginx -t

Configuration Nginx OK

Redémarrage de Nginx :

epa@localhost:~$ sudo systemctl restart nginx

Configuration du pare-feu UFW

Activation et configuration des ports :

epa@localhost:~$ sudo ufw enable
epa@localhost:~$ sudo ufw allow ssh
sudo ufw allow 80/tcp
sudo ufw allow 5000/tcp
sudo ufw allow 5002/tcp

Lancement de l'API

Navigation vers le dossier du projet :

epa@localhost:~$ cd chretien/

Lancement de l'application :

epa@localhost:~/chretien$ dotnet CHRETIEN2.dll

Application running

Test de l'API

Testons notre API avec ces endpoints :

Test API

Conclusion

Super ! Notre configuration marche bien. Dans un prochain article, nous améliorerons notre déploiement .NET sur Linux en ajoutant :

  • Un nom de domaine personnalisé
  • Un certificat SSL valide pour activer HTTPS
  • Configuration d'un service systemd pour le démarrage automatique

Cette configuration de base nous permet d'avoir une API .NET 5 fonctionnelle sur Ubuntu 20.04 avec Nginx comme reverse proxy. L'API est maintenant accessible via l'adresse IP publique de notre serveur Linode.

Dans la partie 2, nous verrons comment sécuriser davantage notre déploiement et le rendre plus professionnel avec HTTPS.