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.


Configuration de base Linux sur Linode
Mise à jour du système :
root@localhost:~# sudo apt updateCréation d'un nouvel utilisateur :
root@localhost:~# adduser epa
Attribution des privilèges sudo :
root@localhost:~# usermod -aG sudo epaSpé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
Changement d'utilisateur :
root@localhost:~# su - epaInstallation 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.0Vérification de l'installation :
epa@localhost:~# dotnet --list-sdks
Récupération de l'adresse IP du serveur :
epa@localhost:~# curl ifconfig.me
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 buildCréation du dossier sur le serveur :
epa@localhost:~$ mkdir chretienTransfert 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.

Configuration de Nginx
Installation de Nginx :
epa@localhost:~$ sudo apt install nginx
Configuration de Nginx :
Modifions le fichier de configuration par défaut :
epa@localhost:~$ sudo vim /etc/nginx/sites-available/defaultConfiguration 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
Redémarrage de Nginx :
epa@localhost:~$ sudo systemctl restart nginxConfiguration 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/tcpLancement de l'API
Navigation vers le dossier du projet :
epa@localhost:~$ cd chretien/Lancement de l'application :
epa@localhost:~/chretien$ dotnet CHRETIEN2.dll
Test de l'API
Testons notre API avec ces endpoints :
- http://178.79.168.173/actualities
- http://178.79.168.173:5000/actualities
- http://178.79.168.173:5002/actualities

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.