GLPI : installation sous Windows Server 2016

Suite à plusieurs demandes d’assistance, voici un article permettant l’installation de GLPI sous Windows Server 2016 avec un tutoriel détaillé. J’espère qu’il vous aidera !

Installation du serveur

L’installation du serveur s’effectue depuis une zone de service dans laquelle se trouve l’un de mes contrôleurs de domaine, ce afin de permettre plus tard une intégration LDAP. L’installation est réalisée avec une édition complètement à jour des ses patchs de sécurité de Windows Server 2016 Standard (en mode expérience utilisateur).

Le serveur est hébergé sur un cluster Hyper-V, possède 2 vCPU et 4 Go de mémoire vive. Coté stockage, je n’utilise qu’un seul disque de 60 Go qui accueillera le site web et la base de données MySQL. D’autre part, ce serveur n’a pas d’accès direct à internet.

Création du compte administrateur du serveur

Pour ne pas utiliser un compte à haut privilège sur le serveur, créez un compte dans votre annuaire et placez-le membre du groupe administrateur local de votre serveur. Ce compte ne devra disposer d’aucun privilège dans l’AD. Une fois fait, utilisez ce compte pour faire les opérations d’installation et de configuration. Pour cet article, le compte se nommera Glpi.Administrateur.

Note : un compte local peut parfaitement faire l'affaire.

Installation du rôle IIS

Avant tout, procédez à l’ajout du rôle IIS comme ceci :

  • Lancez le gestionnaire de serveur
  • Dans le menu supérieur, à droite, sélectionnez Gérer puis cliquez sur Ajouter des rôles et fonctionnalités
  • Lorsque l’assistant Ajout de rôles et de fonctionnalités apparait, cliquez sur suivant
  • Sélectionnez installation basée sur un rôle ou une fonctionnalité et cliquez sur suivant
  • Laissez l’option par défaut (le nom du serveur local doit apparaitre) et cliquez sur suivant
  • Sélectionnez Serveur Web (IIS) : cliquez sur ajouter des fonctionnalités lorsque vous y êtes invité, puis cliquez sur suivant
  • Sélectionnez fonctionnalités de .NET Framework 3.5 puis cliquez sur suivant
  • Cliquer encore sur suivant après avoir lu le message explicatif pour le rôle de serveur Web
  • Sans modifier les services de rôle proposé par défaut, cliquez sur suivant
  • Dans la fenêtre confirmer les sélections d’installation, cliquez sur spécifier un autre chemin d’accès source :

  • Dans la fenêtre spécifier un autre chemin d’accès source, remplissez le chemin vers le répertoire SXS du DVD d’installation. Par exemple, si votre lecteur DVD est monté sur le lecteur D, le chemin sera D:\sources\sxs.

  • Cliquez sur OK pour valider le chemin alternatif
  • Cliquer enfin sur installer pour terminer l’assistant et patientez jusqu’à ce que l’installation soit terminée.
  • Cliquer sur fermer

Vous pouvez vérifier que IIS est bien installé en accédant depuis le serveur aux adresses suivantes (remplacez [nomDuServeur] et [IPduServeur] par les bonnes valeurs, par exemple demo01 et 192.169.10.2) :

Répétez ensuite le test avec les deux dernières adresses depuis une machine du réseau : cette machine devra être en mesure de joindre le serveur GLPI (routage) et le port TCP/UDP 80 doit être autorisé (firewall) ; vous pouvez simplifier le test en utilisant une machine sur le même segment d’adressage.

Installation de PHP

Pour respecter une règle de sécurité élémentaire, le serveur GLPI qui sera utilisé dans mon infrastructure ne doit pas accéder à internet. Par conséquent, il sera nécessaire de récupérer les package et de les installer manuellement. Commencez par récupérer la dernière version de PHP 32 bits Non-Thread Safe (NTS) à l’adresse https://windows.php.net/download#php-7.2 ; cet article utilisera la version 7.2.8. Une fois téléchargée :

  • Copiez le fichier sur le serveur GLPI ; pour cet article, il sera positionné dans c:\Sources\Php
  • Créez le dossier Php dans C:\Program Files (x86)
  • Créez le dossier 7.2.8 dans C:\Program Files (x86)\Php
  • Décompressez l’archive dans C:\Program Files (x86)\Php\7.2.8

Une fois les binaires installés sur le système, vous devez modifier le chemin par défaut de recherche des emplacements de fichier du serveur et ajouter la fonctionnalité FastCGI à IIS (dans cet ordre pour les commandes ci-après) :

  • Ouvrez PowerShell en mode administrateur
  • Exécutez la commande suivante pour stocker le contenu de la variable path actuel :
$OldPath = (Get-ItemProperty -Path 'Registry::HKEY_LOCAL_MACHINE\System\CurrentControlSet\Control\Session Manager\Environment' -Name PATH).Path
  • Ensuite, exécutez la commande suivante pour recalculer la nouvelle valeur :
$NewPath= 'C:\Program Files (x86)\Php\7.2.8;' + $OldPath
  • finalement, exécutez la dernière commande pour mettre à jour la variable :
Set-ItemProperty -Path 'Registry::HKEY_LOCAL_MACHINE\System\CurrentControlSet\Control\Session Manager\Environment' -Name PATH -Value $newPath
  • Installer le module FastCGI :
install-windowsFeature WEB-CGI
  • Pour que la modification soit effective, fermez puis ouvrez à nouveau votre session.

Les binaires de PHP requiert également l’installation de Visual C++ : téléchargez la dernière version x64 depuis l’URL https://support.microsoft.com/fr-fr/help/2977003/the-latest-supported-visual-c-downloads :

  • Transférez-le fichier sur le serveur GLPI ; pour cet article les sources seront copiées dans c:\Sources\VC++
  • Exécutez VC_Redist.x86.exe
  • Cochez la case j’accepte les conditions générales de la licence puis cliquez sur installer
  • Cliquez sur fermer

Vérifiez alors que PHP est bien installé :

  • Lancez un interpréteur de commande (cmd.exe)
  • Exécutez la commande
php -info | more

PHP fonctionnel, il ne reste plus qu’à configurer IIS pour qu’il l’utilise… Pour ce faire, configurez le module FastCGI et IIS pour l’utilisation de PHP :

  • Ouvrez le gestionnaire de services internet
  • Sélectionnez le serveur GLPI dans la colonne de droite
  • Ouvrez mappages de gestionnaires
  • Faites un clic-droit dans le cadre du milieu et sélectionnez ajouter un mappage de modules
  • Remplissez les informations comme ci-dessous :

  • Cliquez sur OK puis Oui
  • Cliquez sur le nom du serveur dans la colonne de gauche
  • Ouvrez document par défaut
  • Cliquez sur ajouter dans la colonne de droite
  • Saisir index.php et cliquez sur OK
  • Cliquez à nouveau sur ajouter dans la colonne de droite
  • Saisir default.php et cliquez sur OK
  • Cliquez sur le nom du serveur dans la colonne de gauche
  • Dans la colonne de droite, cliquez sur redémarrer

Le serveur est maintenant configuré avec PHP : pour le vérifier, créez un fichier de test sur le site par défaut :

  • Lancez notepad et créez le fichier phpinfo.txt dans c:\sources\php et entrez le texte suivant :
<?php 
     phpinfo(); 
?>
  • Fermez Notepad
  • Renommez le fichier de phpinfo.txt en phpinfo.php
  • Copiez le fichier phpinfo.php dans C:\inetpub\wwwroot
  • Vérifiez que PHP fonctionne en accédant à l’URL http://localhost/phpinfo.php depuis le serveur

Installation de MySQL

Pour la base de données de GLPI, nous allons installer MySQL :

  • Téléchargez Visual C++ x64 pour visual Studio 2015 et installez-le sur le serveur ; les sources sont disponibles à l’adresse https://www.microsoft.com/en-us/download/details.aspx?id=48145
  • Téléchargez la dernière version de MySQL Server depuis https://dev.mysql.com/downloads/installer/ en utilisant le lien mysql-installer-community-8.0.12.0.msi

  • Transférez le fichier sur le serveur GLPI ; pour cet article, nous le positionnerons dans c:\Sources\MySQL
  • Double-cliquez sur le fichier mysql-installer-community-8.0.12.0.msi
  • Cochez I accept the licence terms et cliquez sur next
  • Sélectionnez server only et cliquez sur next
  • Cliquez sur execute et patientez jusqu’à pouvoir cliquez sur next
  • Cliquez encore sur next
  • Laissez l’option Standalone MySQL server / Classic MySQL Replication et cliquez sur next
  • Dans config type, sélectionnez Server Computer et cliquez sur next
  • Sélectionnez Use Legacy Authentication Method (retain MySQL 5.x compatibility) et cliquez sur next
  • Définissez le mot de passe du compte Root de MySQL
  • Cliquez sur Add User et ajoutez l’utilisateur GLPI.DbAdmin

  • Cliquez sur next
  • Laissez les options pour le service MySQL par défaut et cliquez à nouveau sur Next
  • Cliquez sur Execute
  • Cliquez sur finish
  • Cliquez une dernière fois sur next
  • Cliquez finalement sur finish une dernière fois

La base de données MySQL est maintenant disponible, vous devez pouvoir vous y connecter avec la commande suivante :

  • Ouvrez un interpréteur de commande (cmd.exe)
  • Saisissez la commande
cd c:\Program Files\MySQL\MySQL Server 8.0\bin
  • Saisissez la commande mysql.exe -u root -p puis entrez le mot de passe du compte Root : vous devriez avoir accès au shell.
  • Entrez la commande status pour voir l’état du serveur
  • Pour vérifier que le compte glpi.dbadmin est bien déclaré, entrez la commande
select host,user,password_expired,password_last_changed,account_locked from mysql.user;
  • Tapez exit pour revenir à la ligne de commande
  • Testez le compte glpi.dbadmin avec la commande mysql.exe -u glpi.dbadmin -p
  • Tapez exit pour revenir au shell

Installation de GLPI

Le serveur est maintenant prêt à être paramétré pour accueillir GLPI : il ne reste plus qu’à le personnaliser. Pour commencer, nous allons préparer IIS avec un nouveau site, ce qui nous permettra d’aborder quelques thématiques propres à IIS (et qui reviennent souvent dans les questions que l’on me pose).

Tout d’abord, un peu de théorie : IIS est un moteur web qui, comme Apache ou autre, peut héberger plus d’un site web. Toutefois, il n’est pas possible d’associer une adresse réseau et un port à plusieurs sites web : le serveur ne saurait pas, par défaut, sur lequel vous orienter. D’ailleurs, si vous le faites, vous obtiendrez un magnifique message d’avertissement ! Pour remédier à ce point, il existe au moins deux méthodes simple :

  • Utiliser un couple adresse IP : Port de réseau par site web
  • Utiliser un nom d’hôte différent à chaque site web

Le nom d’hôte permet à IIS de réutiliser une même combinaison adresse IP : port de réseau sur plusieurs sites et de gérer les certificats SSL (c’est même obligatoire) ; il requiert une configuration d’un enregistrement DNS pour chaque site ainsi créé.

La combinaison adresse IP : port de réseau ne nécessite aucun enregistrement DNS spécifique : dès lors que le serveur reçoit une demande sur cette adresse et ce port, il renvoie le site concerné. La combinaison doit être unique.

Il est également possible de combiner les deux méthodes : par exemple, si vous souhaitez l’implémenter sur l’adresse IP du serveur dans votre réseau et sur une URL précise lorsque cela vient de l’extérieur. Dans notre cas, nous allons configurer le serveur pour qu’il réponde à une URL spécifique (glpi.demo.ms-sec.fr).

Note : pensez à créer l'entrée DNS avant de faire les tests !

Pour commencer, créez le site web et configurez-le pour qu’il soit disponible selon les critères énoncés précédemment :

  • Créer un dossier C:\Glpi\0.9.3, n’y mettez aucune source pour l’instant.
  • Copiez dans le dossier le fichier phpinfo.php précédemment créé.
  • Ouvrez le gestionnaire de services internet
  • Double-cliquez sur le nom du serveur
  • Double-cliquez sur sites
  • Faites-un clic droit sur Default Web Site et sélectionnez Gérer les sites web puis arrêter (le site ne répondra plus sur le port 80)
  • Faites un clic-droit sur sites et sélectionnez ajouter un site web
  • Remplissez les champs comme dans la capture ci-dessous (en remplaçant le nom de l’hôte par votre URL) :

  • Cliquez sur OK : vous disposez maintenant d’un nouveau site (vide) qui répond sur le port 80 à son URL spécifique.

Pour palier à un problème courant lorsque l’on déploie GLPI, il est nécessaire de modifier le composant FastCGI pour que son Time-Out soit allongé (par défaut 60 secondes). Procédez ainsi :

  • Ouvrez l’interpréteur de commande (cmd.exe)
  • Exécutez la commande
%windir%\system32\inetsrv\appcmd set config -section:system.webServer/fastCgi /[fullPath='"C:\Program Files (x86)\Php\7.2.8\php-cgi.exe"'].activityTimeout:600

Pour tester le site depuis le serveur (pensez à désactiver la sécurité renforcée d’internet explorer) :

Pour tester le site depuis une autre machine :

Si vous accéder avec succès à toutes les pages, le serveur est paré ! Passons alors au déploiement de GLPI 9.3 :

  • Récupérer les sources de GLPI et positionnez-les à disposition sur le serveur GLPI ; pour cet article, nous placerons l’archive dans c:\sources\glpi
  • Décompressez le fichier glpi-9-3.tgz dans c:\sources\glpi
  • Décompressez le fichier glpi-9-3.tar dans c:\sources\glpi
  • Copiez l’intégralité de c:\sources\glpi\glpi dans c:\gpli\0.9.3
  • Faites-un clic-droit sur le dossier c:\gpli\0.9.3, allez dans les propriétés puis choisissez l’onglet sécurité
  • Ajoutez IIS_IUSRS , IUSRS et SERVICE RESEAU et donnez-leur le privilège modification

Vérifier ensuite que GLPI est bien fonctionnel sur l’URL souhaité :

  • Accédez à l’URL http://glpi.home.ms-sec.fr depuis un poste client
  • Sélectionnez la langue de votre choix et cliquez sur ok
  • Sélectionnez j’ai lu et accepte les termes de la licence énoncés ci-dessus et cliquez sur continuer
  • Cliquez sur installer

Cette page nous permet de valider la configuration de notre environnement PHP : comme vous le constatez, la configuration par défaut n’est pas bonne… Commençons par créer un fichier de configuration adapté :

  • Copiez c:\program files (x86)\php\7.2.8\php.ini-developpement vers c:\program files (x86)\php\7.2.8\php.ini
  • A l’aide de notepad, ouvrez c:\program files (x86)\php\7.2.8\php.ini
  • Appuyer sur CTRL+G, entrez la valeur 1763 et retirer le signe commentaire « ; » devant la ligne opcache.enable_cli = 0
  • Appuyer sur CTRL+G, entrez la valeur 1760 et retirer le signe commentaire « ; » devant la ligne opcache.enable = 1
  • Appuyer sur CTRL+G, entrez la valeur 1344 et retirer le signe commentaire « ; » devant la ligne session.save_path = “/tmp” 
  • Appuyer sur CTRL+G et entrez la valeur 885 et retirer le signe commentaire « ; » devant les extensions à activer, à savoir curl, fileinfo, gd2, imap, ldap, mbstring, mysqli, openssl et xmlrpc
  • Appuyer sur CTRL+G, entrez la valeur 782 et retirer le signe commentaire « ; » devant la ligne fastcgi.impersonate = 1
  • Appuyer sur CTRL+G, entrez la valeur 769 et retirer le signe commentaire « ; » devant la ligne cgi.fix_pathinfo = 1
  • Appuyer sur CTRL+G, entrez la valeur 749 et retirer le signe commentaire « ; » devant la ligne cgi.force_redirect = 1
  • Appuyer sur CTRL+G, entrez la valeur 732 et retirer le signe commentaire « ; » devant la ligne extension_dir = “ext”
  • Appuyer sur CTRL+G, entrez la valeur 378 et passez max_execution_time= 30 à 600
  • Appuyer sur CTRL+G, entrez la valeur 304, retirer le signe commentaire « ; » devant la ligne open_basedir = ; ajouter à la fin de la ligne la valeur C:\glpi\0.9.3″
  • Sauvez ensuite le fichier sous le nom c:\program files (x86)\php\7.2.8\php.ini

Il faut redémarrer IIS pour que les modifications soient prises en compte :

  • Ouvrez un interpréteur de commande (cmd.exe)
  • Exécutez la commande
IISRESET
  • Retourner sur la page d’installation de GLPI et cliquez sur réessayer

Il existe encore des extensions que vous pouvez activer pour améliorer les performances de GLPI : nous ne détaillerons pas leur installation ici, alors cliquez simplement sur continuer et configurez la base de données :

  • Saisissez localhost comme serveur SQL
  • Saisissez glpi.dbadmin comme utilisateur
  • Saisissez le mot de passe du compte
  • Cliquez sur continuer
  • Sélectionnez créer une nouvelle base et donnez-lui un nom (par exemple GLPI-0-9-3)
  • Patientez jusqu’à ce que l’étape 3 s’affiche et vous invite à poursuivre (cela dure un moment) : cliquez alors sur continuer
  • Décochez la case envoyer “statistiques d’usage” : le serveur n’est pas connecté à internet
  • cliquer sur continuer
  • Cliquez sur continuer à l’étape 5
  • Cliquez sur utiliser GLPI à l’étape 6.

GLPI est maintenant opérationnel. Bonne utilisation !

Lien Permanent pour cet article : https://ms-sec.fr/?p=2759

(16 commentaires)

Passer au formulaire de commentaire

    • Asticotmargot on 9 août 2018 at 11 h 33 min
    • Répondre

    Bonjour,
    Merci beaucoup pour la redaction de ce tutoriel.
    Autodidacte et avec l’aide d’un stagiare Nico nous avons pu installer GLPI avec IIS 8.5 et Windows server 2012 r2
    Loic nous a aidé directement en rédigeant ce tuto suite à notre demande.
    Merci pour ta réactivité,ta patience et ton engagement
    Nous t’avons sollicité par mail pour plusieurs problèmes (de débutants et de non compétence) et à chaque fois tu nous as aiguillé correctement dans la résolution de nos diffcultés
    Je te réitère MILLE MERCI ainsi qu’à NICO (notre stagiaire) pour la mise en place de ce projet.
    La réalisation n’est pas simple pour des débutants mais accessible en analysant toutes les étapes de ce tuto
    Merci encore
    Maintenant un autre job nous attend…la gestion de GLPI

    Cordialement
    Asticotmargot

    1. Merci. Comme disais un ami à moi, “la connaissance s’accroit quand on la partage”. Je crois qu’il a emprunté ça à un certain Einstein 🙂

    • Cerre philippe on 13 septembre 2018 at 14 h 01 min
    • Répondre

    Merci pour ce tuto.
    j’ai cependant un souci, lors des vérifications des extensions, “l’extension CAS est manquante”.
    et je ne trouve pas cette extension.
    aurais-tu une idée ?
    philippe

    1. bonjour Philippe,

      Il faut chercher du coté de PHP pour activer le module. Cela peut requiert des manipulations assez avancées… bon courage !

    • hamelin on 24 septembre 2018 at 10 h 41 min
    • Répondre

    Bonjour a tous,

    Suite a l’installation du MySQL Server > l’utilisateur GLPI.DbAdmin ne peut pas se connecter !
    ERROR 1045 (28000) : Acces denied for user ‘GLPI.DbAdmin’@’localhosts’

    Avez-vous une idée ?

    J’arrive a me connecter sans pb en root, mais impossible de fournir de des pour l’autre compte…

    1. Vous avez indiqué @localhosts, mettez @localhost (sans s a la fin).

        • hamelin on 24 septembre 2018 at 11 h 26 min
        • Répondre

        Bonjour Loic,

        Il s’agit d’une erreur de frappe.. dsl
        Le message d’erreur est bien > ERROR 1045 (28000) : Acces denied for user ‘GLPI.DbAdmin’@’localhost’
        using password: YES

        J’ai suivis la procedure mais impossible a me connecter avec le compte

        1. L’acces en ligne de commande fonctionne-t-il avec ce compte ? A-t-il les bons droits ?

            • hamelin on 24 septembre 2018 at 12 h 28 min

            mysql -u root -p > OK

            mysql -u GLPI.DbAdmin -p > NOK > ERROR 1045 (28000): Access denied for user ‘GLPI.DbAdmin’@’localhost’

            La commande select host,user,password_expired,password_last_changed,account_locked from mysql.user; >
            ———–+
            | host | user | password_expired | password_last_changed | ac
            unt_locked |
            +———–+——————+——————+———————–+—
            ———–+
            | % | GLPI.DbAdmin | N | 2018-09-21 11:43:34 | N
            |
            | localhost | mysql.infoschema | N | 2018-09-21 11:43:24 | Y
            |
            | localhost | mysql.session | N | 2018-09-21 11:43:24 | Y
            |
            | localhost | mysql.sys | N | 2018-09-21 11:43:24 | Y
            |
            | localhost | root | N | 2018-09-21 11:43:34 | N
            |

          1. Le mot de passe a expiré le 21/9.

            • hamelin on 24 septembre 2018 at 14 h 05 min

            Pourtant le password_expired est N ?
            Pareil pour le compte root, cependant j’arrive a me connecter..
            J’ai pas trop de connaisance en sql… mais la je seche completement !

          2. Exact, mauvaise lecture depuis mon téléphone, désolé 🙂

            • hamelin on 24 septembre 2018 at 16 h 27 min

            pourtant password_expired est sur N ?
            j’avoue je seiche un peu… n’ayant pas beaucoup de connaissance en BDD..

          3. Vous pouvez parfaitement utiliser le compte root pour GLPI : ce n’est effectivement pas propre en terme de bonne-pratique de sécurité, mais si le serveur MySQL et la base de données qu’il héberge sont exclusivement dédié à GLPI, alors root ou GLPI_DbAdmin représente le même niveau de privilège et donc le même risque.

            Essayer de créer un nouveau compte pour MySQL ; il y a peut-être eu une erreur à la création par le script : https://www.digitalocean.com/community/tutorials/how-to-create-a-new-user-and-grant-permissions-in-mysql

            En espérant que cela vous aidera.

    • Eric Charland on 5 octobre 2018 at 20 h 34 min
    • Répondre

    J’ai le message suivant lors de l’installation de Glpi après la création du php.ini

    PHP Warning: Unknown: open_basedir restriction in effect. File(C:\Glpi\0.9.3\index.php) is not within the allowed path(s): (“C:\glpi\0.9.3″) in Unknown on line 0
    PHP Warning: Unknown: failed to open stream: Operation not permitted in Unknown on line 0

    1. Bonjour,

      Je pense que votre fichier est mal interprété par PHP (utf16 au lieu d’utf8 ?) : essayer de le recréer.

Laisser un commentaire

Your email address will not be published.

Ce site utilise Akismet pour réduire les indésirables. En savoir plus sur comment les données de vos commentaires sont utilisées.