meta données pour cette page
  •  

Différences

Ci-dessous, les différences entre deux révisions de la page.

Lien vers cette vue comparative

Prochaine révision
Révision précédente
certif:procedure:miseenplaceserveur:serveurnode [2026/08/18 10:46] – créée nicolascertif:procedure:miseenplaceserveur:serveurnode [2026/08/18 10:50] (Version actuelle) – [Guide de déploiement — Application Node.js sur Windows Server + IIS] nicolas
Ligne 3: Ligne 3:
 //Cas d'usage : petite application de questionnaires (trafic léger)// //Cas d'usage : petite application de questionnaires (trafic léger)//
  
-Ce guide couvre deux méthodes de déploiement : +IIS reste le serveur web exposé publiquement (port 80/443) et agit comme **reverse proxy** vers l'application Node.js, qui tourne en arrière-plan comme **service Windows** (géré par NSSMsur un port localC'est l'approche à privilégier aujourd'hui pour un déploiement durable.
- +
-  * **Méthode recommandée** — IIS en reverse proxy vers Node.js (process géré par NSSM, en tant que service Windows). +
-  * **Méthode alternative** — iisnode (module historique, intégration plus directe avec IIS mais moins maintenu). +
- +
-> Le sommaire ci-dessous est généré automatiquement par DokuWiki à partir des titres de section (comportement par défaut dès qu'une page contient plus de 3 titres).+
  
 ---- ----
  
-===== 1. Objectif et architecture retenue =====+===== 1. Objectif et architecture =====
  
 Ce document décrit, pas à pas, comment déployer une application Node.js sur un Windows Server existant, en utilisant IIS comme point d'entrée public. Il est pensé pour une application à faible trafic (formulaires / réponses à des questionnaires), mais les étapes restent valables pour la plupart des applications Node.js classiques (Express, Fastify, etc.). Ce document décrit, pas à pas, comment déployer une application Node.js sur un Windows Server existant, en utilisant IIS comme point d'entrée public. Il est pensé pour une application à faible trafic (formulaires / réponses à des questionnaires), mais les étapes restent valables pour la plupart des applications Node.js classiques (Express, Fastify, etc.).
  
-Architecture retenue : IIS reste le serveur web exposé sur le port 80/443. Il n'exécute pas directement le code Node — il agit comme reverse proxy et transmet les requêtes à l'application Node, qui tourne en arrière-plan comme un service Windows sur un port local (ex. 3000). Cette approche est celle recommandée aujourd'hui (plus proche de ce qui se fait avec nginx sous Linux), car iisnode n'est plus activement maintenu.+IIS n'exécute pas directement le code Node — il transmet les requêtes à l'application Node via un reverse proxy. L'application, elle, tourne en permanence en arrière-plan sur un port local (ex. 3000), démarrée et surveillée par NSSM en tant que service Windows.
  
 **Schéma :** Internet → IIS (port 443, certificat SSL) → module URL Rewrite + ARR → Node.js (127.0.0.1:3000, exécuté par NSSM en tant que service Windows). **Schéma :** Internet → IIS (port 443, certificat SSL) → module URL Rewrite + ARR → Node.js (127.0.0.1:3000, exécuté par NSSM en tant que service Windows).
Ligne 124: Ligne 119:
 curl http://127.0.0.1:3000 curl http://127.0.0.1:3000
 </code> </code>
- 
-> **Alternative sans NSSM :** le module npm « node-windows » permet aussi de créer un service Windows directement depuis un script Node, mais NSSM reste plus simple à administrer pour une équipe non habituée à Node. 
  
 ===== 8. Étape 6 — Configurer IIS comme reverse proxy ===== ===== 8. Étape 6 — Configurer IIS comme reverse proxy =====
Ligne 225: Ligne 218:
 > **Bonnes pratiques :** pour limiter les interruptions, prévoir les mises à jour en dehors des heures d'utilisation du questionnaire, et garder une copie de la version précédente pour pouvoir revenir en arrière rapidement en cas de problème. > **Bonnes pratiques :** pour limiter les interruptions, prévoir les mises à jour en dehors des heures d'utilisation du questionnaire, et garder une copie de la version précédente pour pouvoir revenir en arrière rapidement en cas de problème.
  
-===== 16. Méthode alternative — iisnode ===== +===== 16. Checklist finale =====
- +
-iisnode est un module IIS historique qui permet à IIS d'exécuter directement le code Node (sans passer par un reverse proxy ni un service séparé). Il fonctionne toujours mais n'est plus activement maintenu ; il reste néanmoins une option valable pour un déploiement simple et rapide si l'équipe préfère éviter la gestion d'un service Windows séparé (NSSM). +
- +
-==== 16.1 Installation ==== +
- +
-  * Installer le module URL Rewrite (voir étape 3.1). +
-  * Télécharger et installer iisnode (dépôt GitHub officiel « azure/iisnode »), version correspondant à l'architecture du serveur (x64). +
- +
-==== 16.2 Configuration ==== +
- +
-web.config à placer à la racine de l'application (le dossier contenant directement le code Node, ex. server.js) : +
- +
-<code xml> +
-<?xml version="1.0" encoding="utf-8"?> +
-<configuration> +
-  <system.webServer> +
-    <handlers> +
-      <add name="iisnode" path="server.js" verb="*" +
-           modules="iisnode" /> +
-    </handlers> +
-    <rewrite> +
-      <rules> +
-        <rule name="DynamicContent"> +
-          <match url="/*" /> +
-          <action type="Rewrite" url="server.js" /> +
-        </rule> +
-      </rules> +
-    </rewrite> +
-  </system.webServer> +
-</configuration> +
-</code> +
- +
-Créer ensuite le site IIS en pointant directement sur ce dossier (pool d'application en « No Managed Code »). Les logs sont générés automatiquement par iisnode dans un sous-dossier « iisnode » à côté de l'application, utile en cas d'erreur. +
- +
-> **Quand préférer NSSM + reverse proxy plutôt qu'iisnode :** iisnode redémarre le process Node à chaque requête après une période d'inactivité (comportement pensé pour IIS classique), ce qui peut introduire une latence. La méthode NSSM (étapes 5 à 9) garde le process Node actif en permanence et est plus proche des pratiques actuelles — c'est l'approche à privilégier pour un déploiement durable. +
- +
-===== 17. Checklist finale =====+
  
 ^ Élément ^ Statut ^ ^ Élément ^ Statut ^
Ligne 281: Ligne 237:
 | Sécurité applicative revue (helmet, validation, rate limit) | ☐ | | Sécurité applicative revue (helmet, validation, rate limit) | ☐ |
  
-===== 18. Annexe — Dépannage rapide =====+===== 17. Annexe — Dépannage rapide =====
  
 ^ Symptôme ^ Piste de résolution ^ ^ Symptôme ^ Piste de résolution ^