Déploiement d'une application C# sur VPS : guide pas à pas de A à Z

Formateur Python en ligne pour débutants

Apprenez Python facilement sans surcharge théorique. Résolvez des tâches pratiques avec vérification automatique et écrivez du code directement dans le navigateur.

Start Course

Introduction : pourquoi le VPS est l'endroit idéal pour votre application C#

\n

Le développement en C# dans l'écosystème .NET offre des outils puissants pour créer des applications web, des API et des microservices. Cependant, écrire le code n'est que la moitié du travail. Pour que votre application soit accessible aux utilisateurs, elle doit être déployée sur un serveur. Un serveur privé virtuel (VPS) offre un contrôle total sur l'environnement, ce qui est essentiel pour un environnement de production. Dans ce guide, nous passerons de zéro à une application C# entièrement fonctionnelle sur un VPS sous Ubuntu. Vous apprendrez à installer le .NET Runtime, à configurer le serveur proxy inverse Nginx, à exécuter l'application en tant que service systemd et à assurer son redémarrage automatique.

\n\n

Préparation du serveur et installation des logiciels nécessaires

\n

1. Connexion au VPS et configurations de base

\n

Après avoir obtenu l'accès au VPS (adresse IP, nom d'utilisateur et mot de passe ou clé SSH), connectez-vous via le terminal :

\n
ssh root@votre_adresse_IP_serveur
\n

Mettez à jour la base de paquets et installez curl (nécessaire pour télécharger .NET) :

\n
apt update && apt upgrade -y\napt install curl -y
\n\n

2. Installation du SDK/Runtime .NET

\n

Microsoft recommande d'installer .NET via le dépôt officiel. Ajoutons-le et installons le SDK (pour la compilation) ou le Runtime (uniquement pour l'exécution). Pour un serveur de production, le Runtime est généralement suffisant, mais pour faciliter le déploiement, installons le SDK :

\n
wget https://packages.microsoft.com/config/ubuntu/22.04/packages-microsoft-prod.deb -O packages-microsoft-prod.deb\ndpkg -i packages-microsoft-prod.deb\napt update\napt install -y dotnet-sdk-8.0
\n

Vérifiez l'installation :

\n
dotnet --version
\n\n

3. Installation de Nginx et Git

\n

Nginx agira comme un proxy inverse, redirigeant les requêtes du port 80 vers votre application. Git sera nécessaire pour cloner le dépôt :

\n
apt install -y nginx git\nsystemctl enable nginx\nsystemctl start nginx
\n\n

Préparation et publication de l'application C#

\n

1. Création ou clonage du projet

\n

Pour l'exemple, créons une simple application Web API ASP.NET Core directement sur le serveur (dans un projet réel, vous clonerez un dépôt) :

\n
mkdir /var/www/myapp\ncd /var/www/myapp\ndotnet new webapi --name MyApp\ncd MyApp
\n\n

2. Publication de l'application (self-contained)

\n

Pour que l'application fonctionne sans SDK installé sur le serveur, publions-la en mode self-contained :

\n
dotnet publish -c Release -r linux-x64 --self-contained true -o /var/www/myapp/publish
\n

Le flag --self-contained true inclut toutes les dépendances .NET dans le dossier publish. L'alternative est --self-contained false (nécessite le Runtime installé).

\n\n

3. Test de démarrage

\n

Vérifiez que l'application démarre (par défaut sur le port 5000) :

\n
cd /var/www/myapp/publish\n./MyApp --urls "http://0.0.0.0:5000"
\n

Ouvrez dans le navigateur http://votre_IP:5000 — vous devriez voir la réponse de l'API. Arrêtez le processus (Ctrl+C).

\n\n

Configuration de Nginx comme proxy inverse

\n

1. Configuration du site

\n

Créons un fichier de configuration pour Nginx :

\n
nano /etc/nginx/sites-available/myapp
\n

Insérez le code suivant (remplacez your_domain_or_ip par votre domaine ou IP) :

\n
server {\n    listen 80;\n    server_name your_domain_or_ip;\n\n    location / {\n        proxy_pass http://localhost:5000;\n        proxy_http_version 1.1;\n        proxy_set_header Upgrade $http_upgrade;\n        proxy_set_header Connection keep-alive;\n        proxy_set_header Host $host;\n        proxy_cache_bypass $http_upgrade;\n        proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;\n        proxy_set_header X-Forwarded-Proto $scheme;\n    }\n}
\n\n

2. Activation de la configuration

\n
ln -s /etc/nginx/sites-available/myapp /etc/nginx                

Blogs

Book Recommendations