MigrationDeGLPiIntroduction : Une migration ou une mise à jour sont des exercices à ne pas prendre à la légère, il faut mettre toutes les cartes de son côté pour éviter tous désagréments que vous pourriez regretter. La première chose à faire, c'est de prévenir les utilisateurs une journée avant d'effectuer la migration de l'application WEB par l'envoi d'un message électronique : (La migration de GLPi sera effective le .../.../... à telle heure. Et l'envoi d'un deuxième mail de confirmation lors de la mise en service définitive de l'application. Pour être sûr, lors de la migration ou de la mise à jour de l'application, que personne n'accède à ce service, veuillez désactiver tous les plugins de GLPi afin d'éviter des éventuelles modifications dans les tables de la base de données GLPi ou arrêter le service "httpd", si et seulement si, il n'y a que cette application en production. Les mises à jour de l'application GLPi doit toujours se faire par le paquet qui suit votre installation précédente. Exemple : 9.7.1 --> 9.2 --> 9.2.1 --> 9.2.2 --> 9.2.3 --> 9.2.4 --> 9.3 Changement dans la mise à niveau de GLPi depuis la version 9.4.4 Le Vendredi 27 septembre 2019, mise à niveau de GLPi version 9.2.4 vers la dernière version en date la 9.4.4. Mise à niveau réussi sans renommer le répertoire glpi. La mise à niveau lors de la commande tar xvfz glpi-9.4.4.tgz qui se trouve dans le répertoire /var/www/https remplace les fichiers nécessaires au fonctionnement de l'application GLPi sans écraser les répertoires FILES, plugins et je pense d'autres répertoires qui contiennent de la données statiques ou de configuration. J'ai quand même fait une sauvegarde de la base apps.glpi par sécurité. Procédure : Ouvrez un navigateur sur l'adresse de glpi : https://glpi.atilf.fr/glpi. Repérer les intitulés du plugin de Gestion d'objets : *Menu GLPi --> Configuration --> Gestion d'objet : **salledereunion **vehicule Intitulé Famille de gestion d'objet : *salle de réunion **Salle de cours (3) **Salle Paul Imbs (2) **Salle S15 (1) *véhicule **Renault_kangoo (1) Désactivez tous les plugins. La désactivation des plugins permet d'éviter les accès en écriture dans les tables de la bases de données de GLPi comme par exemple le service des réservation, le service le plus utilisé par nos utilisateurs. On va commencer par faire une sauvegarde en mode manuel. Pour ce faire, connectez-vous en ssh sur le serveur sql.atilf.fr, c'est le serveur de base de données. Récupérez dans le script de sauvegarde automatique de la base GLPI qui se fait tous les jours, le morceau de code qui permet cette sauvegarde : # cd /etc/cron.daily # vi sauvegardeglpi récupérez le morceau de code suivant : mysqldump -u root --password=********* apps.glpi | gzip -c Exécutez le code ci-dessous avec la redirection de l'emplacement où sera stocké le fichier de sauvegarde et remplacez les étoiles du password par le mot de passe de la base de données apps.glpi : # mysqldump -u root --password=********* apps.glpi | gzip -c > /opt/apps.glpi.2017-07-27.sql # ls -l -rw-r--r-- 1 root root 14952873 29 nov. 15:17 glpi20171129.sql.gz Par sécurité, on va faire une deuxième sauvegarde en mode automatique : # cd /etc/cron.daily # ./sauvegardeglpi Un mail est envoyé par le compte root pour confirmer que la sauvegarde c'est bien passée. Après avoir effectué une sauvegarde à un instant T, il faut se connecter en ssh sur le serveur glpi.atilf.fr. Allez dans le répertoire où se trouve l'application GLPI et renommez le répertoire afin qu'il n'y ait plus d'accès accidentel possible malgré le muessage d'avertissement posté la veille. # cd /var/www/https # mv glpi glpi-version_antérieure Sur le site de GLPi, dans les téléchargements, faites un clique droit sur le lien de l'application à récupérer et cliquez sur Copier l'adresse du lien # wget https://github.com/glpi-project/glpi/releases/download/9.2.1/glpi-9.2.1.tgz le téléchargement du fichier est terminé, nous allons le décompresser dans le répertoire /var/www/https%black''' # tar -xvfz glpi-0.84.4.tar.gz Renommez le fichier si celui-ci se nomme avec la version de l'application. Normalement, avec la nouvelle version de glpi, 9.2.1, le répertoire est automatiquement renommé après la décompression. Modifiez le nom d'utilisateur et le groupe qui par défaut est 1002 pour la version 9.2.1, root pour la version 0.85 ou woe pour la version 9.1 : # chown -R apache:apache glpi Modifier les droits du répertoire et de ces sous-répertoire ainsi que les fichiers : # chmod -R 755 glpi Ouvrir un nagigateur et exécuter la page WEB de GLPi : https://glpi.atilf.fr/glpi Vous pouvez avoir le message suivant : PHP >= 5.6 required. Vérifiez la version de php du serveur WEB de GLPi. Pour ce faire, créez un fichier test.php et y insérez le code suivant : <?php phpinfo(); ?> Ouvrir un navigateur sur l'url suivante : https://glpi.atilf.fr/test.php Dans notre exemple, la version de php est la version PHP Version 5.4.16. Installation de PHP 5.6 Installer le dépôt remi-php71. # yum-config-manager --enable remi-php71 # yum update # yum install php71 # systemctl restart httpd.service À partir de là, on va être sur la page d'installation de la nouvelle version de GLPi. Suivre les instruction par défaut. Dans notre cas, nous passons de la version 0.90.16 vers la version 9.2.1. C'est pourquoi, le système d'installation met à jour la base de données GLPi de manière séquentiel au niveau des versions : 9.1 > 9.1.1 > 9.1.3 > 9.2 > 9.2.1 Après la migration, cliquez sur le lien Utilisez GLPi. Ouvrez une session, vous pourrez apercevoir un message d'avertissement : Pour des raisons de sécurité, veuillez supprimer le fichier : install/install.php Déplacez le fichier install.php vers le répertoire /root par mesure de sécurité. # mv /var/www/https/glpi/install/install.php /root Il va falloir récuprer tout vos plugins qui se trouve dans l'ancien répertoire de GLPi : # cp -R /var/www/https/glpi_0.90.5/plugins/* /var/www/https/glpi/plugins Réactivez tous vos plugins. Si vous aviez des documents sous forme PDF ou autres format, il va falloir les récupérer de l'ancien répertoire GLPi vers le nouveau : # cp -R /var/www/https/glpi_0.90.5/files/PDF /var/www/https/glpi/files # cp -R /var/www/https/glpi_0.90.5/files/TXT /var/www/https/glpi/files Vérifiez si tout correspond avec la version d'avant. Vous pouvez vérifier les réservations, une réservation ciblée que vous aviez choisi avant la migration afin de s'assurer de l'intégrité de la donnée. Particularité des mises à jour : Depuis la version 9.2.2, un outil de mises à jour en ligne de commande est disponible, voici la documentation : https://glpi-install.readthedocs.io/fr/latest/command-line.html Depuis la version 9.3, GLPi utilise le moteur de base de données INNODB au lieu du précédent utilisé qui était MYISAM. Passage de la version 9.2.1 à la version 9.2.3 : OK Passage de la version 9.2.3 à la version 9.2.4 : OK Passage de la version 9.2.4 à la version 9.3 : La version 9.3 intègre une nouvelle fonctionnalité, l'authentification centralisée SSO. Vous aurez donc la possibilité d'installer l'extension CAS ('''Central Authentication Service''') dans le cas où vous possédez un serveur front SSO et ainsi paramétrer GLPi pour qu'il interagisse avec le serveur front SSO. https://aldian.developpez.com/tutoriels/javaee/authentification-centralisee-sso-cas/ # yum install php-pear-CAS Cependant, une erreur est générée lors de la mise à jour de la base de données GLPi : 9.3 multiple alter in glpi_computermodels - Erreur durant l'éxecution de la requête : ALTER TABLE `glpi_computermodels` ADD `weight` int(11) NOT NULL DEFAULT '0' AFTER `product_number` , ADD `required_units` int(11) NOT NULL DEFAULT '1' AFTER `weight` , ADD `depth` float NOT NULL DEFAULT 1 AFTER `required_units` , ADD `power_connections` int(11) NOT NULL DEFAULT '0' AFTER `depth` , ADD `power_consumption` int(11) NOT NULL DEFAULT '0' AFTER `power_connections` , ADD `is_half_rack` tinyint(1) NOT NULL DEFAULT '0' AFTER `power_consumption` , ADD `picture_front` TEXT COLLATE utf8_unicode_ci DEFAULT NULL AFTER `is_half_rack` , ADD `picture_rear` TEXT COLLATE utf8_unicode_ci DEFAULT NULL AFTER `picture_front` - L'erreur est Unknown column 'product_number' in 'glpi_computermodels' Solutions : Créer dans la table glpi_computermodels les champs suivants : * weight de type int(11) et avec la valeur 0 par défaut après product_number. * required_units de type int(11) et avec la valeur 1 par défaut après weight. * depth de type float et avec la valeur 1 par défaut après required_units. * power_connections de type int(11) et avec la valeur 0 par défaut après depth. * power_consumption de type int(11) et avec la valeur 0 par défaut après power_connections. * is_half_rack de type tinyint(1) et avec la valeur 0 par défaut après power_consumption. * picture_front de type text et par défaut NULL après is_half_rack. * picture_rear de type text et par défaut NULL après picture_front. Dans la table glpi_peripheralmodels, créer le champ product_number de type int(11) et par défaut la valeur 0. Passage de la version 9.3 à la version 9.3.3 : OK Passage de la version 9.3.3 à la version 9.4.1, quelques modifications à effectuer : Lors du lancement de la migration, celle-ci reste bloquée sur un traitement en cours. Nous ne savons pas ce qu'il se passe. ![]() Pour connaître la raison de ce dysfonctionnement, il faut exécuter la migration en mode console pour visualiser l'erreur. Exécutez le mode console de migration : # cd /var/www/https/glpi/bin/ # ./console db:update -vvv ![]() L'erreur est que le mécanisme de migration n'arrive pas à renommer la table glpi_change_projects en glpi_itils_projects. La solution est de supprimer les tables glpi_itils_projects et glpi_itilfollowups puis de relancer la commande CLI : console db:update -vvv Après avoir corrigé cette erreur, il va falloir maintenant installer l'application composer qui est obligatoire dans la version 9.4.1 pour la gestion des dépendances entre les librairies et applications. Installer dans le répertoire /var/www/https/glpi lutilitaire composer. Qu'est-ce que c'est que Composer ? https://connect.adfab.fr/outils/quest-ce-composer Composer est un outil mis en place pour la communauté des développeurs de PHP. A l’image de « npm » pour nodejs ou « bundler » pour ruby, il sert de gestionnaire de dépendance entre applications et librairies. Pour cela, télécharger composer sur le site suivant : https://getcomposer.org/download/ et exécutez les lignes de commandes ci-après : php -r "copy('https://getcomposer.org/installer', 'composer-setup.php');" php -r "if (hash_file('sha384', 'composer-setup.php') === '48e3236262b34d30969dca3c37281b3b4bbe3221bda826ac6a9a62d6444cdb0dcd0615698a5cbe587c3f0fe57a54d8f5') { echo 'Installer verified'; } else { echo 'Installer corrupt'; unlink('composer-setup.php'); } echo PHP_EOL;" php composer-setup.php php -r "unlink('composer-setup.php');" Effectuez la migration du moteur de base de données de vos tables, en tout, GLPi intègre 496 tables. # cd /var/www/https/glpi/bin/ # ./console glpi:migration:myisam_to_innodb |