Introduction : pourquoi le VPS est l'endroit idéal pour votre application C#
\nLe 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\nPréparation du serveur et installation des logiciels nécessaires
\n1. Connexion au VPS et configurations de base
\nAprè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 :
\nssh root@votre_adresse_IP_serveur\nMettez à jour la base de paquets et installez curl (nécessaire pour télécharger .NET) :
\napt update && apt upgrade -y\napt install curl -y\n\n2. Installation du SDK/Runtime .NET
\nMicrosoft 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 :
\nwget 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\nVérifiez l'installation :
\ndotnet --version\n\n3. Installation de Nginx et Git
\nNginx 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 :
\napt install -y nginx git\nsystemctl enable nginx\nsystemctl start nginx\n\nPréparation et publication de l'application C#
\n1. Création ou clonage du projet
\nPour 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) :
\nmkdir /var/www/myapp\ncd /var/www/myapp\ndotnet new webapi --name MyApp\ncd MyApp\n\n2. Publication de l'application (self-contained)
\nPour que l'application fonctionne sans SDK installé sur le serveur, publions-la en mode self-contained :
\ndotnet publish -c Release -r linux-x64 --self-contained true -o /var/www/myapp/publish\nLe 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é).
3. Test de démarrage
\nVérifiez que l'application démarre (par défaut sur le port 5000) :
\ncd /var/www/myapp/publish\n./MyApp --urls "http://0.0.0.0:5000"\nOuvrez dans le navigateur http://votre_IP:5000 — vous devriez voir la réponse de l'API. Arrêtez le processus (Ctrl+C).
Configuration de Nginx comme proxy inverse
\n1. Configuration du site
\nCréons un fichier de configuration pour Nginx :
\nnano /etc/nginx/sites-available/myapp\nInsérez le code suivant (remplacez your_domain_or_ip par votre domaine ou IP) :
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\n2. Activation de la configuration
\nln -s /etc/nginx/sites-available/myapp /etc/nginx