Windows Server

IIS — Serveur Web

Installer et configurer Internet Information Services (IIS) pour héberger des sites web et applications ASP.NET sur Windows Server.

← Retour aux tutoriels Windows
📚 C'est quoi IIS ? IIS (Internet Information Services) est le serveur web intégré à Windows Server. Il permet d'héberger des sites web statiques (HTML/CSS), des applications dynamiques (ASP.NET, PHP), et des services web (API). C'est l'équivalent Windows d'Apache ou Nginx sous Linux.
ⓘ Prérequis Windows Server 2016 ou supérieur. Un nom DNS qui pointe vers le serveur (pour les sites publics). Les fichiers de votre site web prêts à déployer.

Installer le rôle IIS

  1. Ouvrez le Gestionnaire de serveur → Ajouter des rôles et fonctionnalités.
  2. Cochez Serveur Web (IIS).
  3. Dans les services de rôle, cochez ASP.NET 4.8, Extensions ISAPI, Filtres ISAPI.
  4. Terminez l'installation.
  5. Ouvrez un navigateur et accédez à http://localhost — la page d'accueil IIS par défaut s'affiche.

Créer un site web

  1. Créez le dossier C:\Sites\MonSite et placez-y vos fichiers (ex : index.html).
  2. Ouvrez le Gestionnaire IIS (inetmgr).
  3. Clic droit sur Sites → Ajouter un site Web.
  4. Nom du site : MonSite.
  5. Chemin d'accès physique : C:\Sites\MonSite.
  6. Liaison : type http, port 80, nom d'hôte : monsite.local.
  7. Cliquez OK.
⚠ Conflit de port Si le site par défaut (Default Web Site) utilise déjà le port 80 sans hostname, vous aurez un conflit. Soit arrêtez le site par défaut, soit spécifiez un hostname unique dans le binding.

Configurer les bindings (HTTP / HTTPS)

  1. Dans le Gestionnaire IIS, sélectionnez votre site → Liaisons (panneau droit).
  2. Cliquez Ajouter → type https, port 443, nom d'hôte : monsite.local.
  3. Sélectionnez votre certificat SSL dans la liste déroulante.
  4. Cliquez OK.
Protocole Port Usage
HTTP 80 Site web standard (non chiffré)
HTTPS 443 Site web sécurisé (SSL/TLS)
HTTP 8080 Port alternatif (intranet, API)

Déployer une application

  1. Copiez les fichiers de votre application dans C:\Sites\MonSite\.
  2. Dans le Gestionnaire IIS, cliquez sur Pools d'applications.
  3. Sélectionnez le pool MonSite → Paramètres avancés.
  4. Version du CLR .NET : v4.0 (ou Aucun code managé pour .NET Core/6+).
  5. Clic droit sur le pool → Recycler pour appliquer les changements.
  6. Testez dans un navigateur : http://monsite.local.
💡 Astuce Pour les applications .NET Core / .NET 6+, installez le Hosting Bundle et configurez le pool en No Managed Code (le runtime est géré par Kestrel derrière IIS).

Surveiller et dépanner

  1. Dans le Gestionnaire IIS, vérifiez l'état de chaque site (Démarré / Arrêté).
  2. Les logs d'accès se trouvent dans C:\inetpub\logs\LogFiles\.
  3. Pour redémarrer IIS : Gestionnaire IIS → clic droit sur le serveur → Arrêter puis Démarrer.
  4. En cas d'erreur 503, vérifiez le pool d'applications dans l'Observateur d'événements.
  5. En cas d'erreur 404, vérifiez que le fichier demandé existe dans le dossier du site.

⌨️ Version PowerShell

Retrouvez ci-dessous les commandes PowerShell correspondant à chaque étape du tutoriel.

Étape 1 — Installer IIS

# Installer IIS
Install-WindowsFeature -Name Web-Server -IncludeManagementTools

# Modules complémentaires
Install-WindowsFeature -Name Web-Asp-Net45, Web-Net-Ext45, Web-ISAPI-Ext, Web-ISAPI-Filter, Web-Mgmt-Console, Web-Log-Libraries

# Vérification
Invoke-WebRequest -Uri http://localhost -UseBasicParsing | Select-Object StatusCode

Étape 2 — Créer un site web

# Créer le dossier et la page de test
New-Item -Path "C:\Sites\MonSite" -ItemType Directory -Force
"<h1>Mon site fonctionne !</h1>" | Out-File "C:\Sites\MonSite\index.html" -Encoding UTF8

# Créer le site
Import-Module WebAdministration
New-IISSite -Name "MonSite" -PhysicalPath "C:\Sites\MonSite" -BindingInformation "*:80:monsite.local"

Étape 3 — Configurer les bindings HTTPS

# Récupérer le certificat SSL
$cert = Get-ChildItem Cert:\LocalMachine\My |
    Where-Object { $_.Subject -like "*monsite.local*" }

# Ajouter le binding HTTPS
New-IISSiteBinding -Name "MonSite" `
    -BindingInformation "*:443:monsite.local" `
    -Protocol https `
    -CertificateThumbPrint $cert.Thumbprint `
    -CertStoreLocation "Cert:\LocalMachine\My"

# Lister les bindings
Get-IISSiteBinding -Name "MonSite" | Format-Table

Étape 4 — Déployer une application

# Copier les fichiers
Copy-Item -Path "C:\Deploy\MonApp\*" -Destination "C:\Sites\MonSite\" -Recurse -Force

# Configurer le pool .NET
Set-ItemProperty "IIS:\AppPools\MonSite" -Name managedRuntimeVersion -Value "v4.0"

# Redémarrer le pool
Restart-WebAppPool -Name "MonSite"

# Tester
Invoke-WebRequest -Uri http://monsite.local -UseBasicParsing | Select-Object StatusCode

Étape 5 — Surveiller et dépanner

# État des sites
Get-IISSite | Select-Object Name, State, Bindings | Format-Table -AutoSize

# Logs d'accès
Get-Content "C:\inetpub\logs\LogFiles\W3SVC1\*.log" -Tail 20

# Redémarrer IIS
iisreset /restart

# Vérifier les ports
netstat -an | Select-String ":80 |:443 "
✔ Résultat IIS est installé et votre site web est en ligne. Vous maîtrisez la création de sites, la configuration SSL et le déploiement d'applications.