You are not logged in.

Announcement

 Téléchargez la dernière version stable de GLPI      -     Et vous, que pouvez vous faire pour le projet GLPI ? :  Contribuer
 Download last stable version of GLPI                      -     What can you do for GLPI ? :  Contribute

#1 2024-07-26 08:00:32

vandykmarsu
Member
Registered: 2014-11-02
Posts: 25

Procédure de migration GLPI-10.0.2 vers 10.0.16 sur Rocky Linux 9.4

Suite à mes travaux précédents sur l'installation d'un LAMP/GLPI consultable ici, il est temps de procéder à une migration vers la dernière version 10.0.16, dans le but de combler des failles de sécurités.

La manière d'installer GLPI a changé entre temps, pour renforcer la sécurité les dossiers config et files doivent se trouver en dehors du dossier GLPI.

Nous verrons dans cette procédure plusieures étapes nécessaires avant, pendant et après la migration au bon fonctionnement de GLPI.

Cette procédure s'appuie principalement sur la documentation qui est bien renseignée, si l'on se prend le temps de la lire en y ajoutant un peu de bon sens. (RTFM)


I. Prérequis


Les sauvegardes nécessaires à la migration:

- base de données mysql (par sécurité)
- dossier "config"
- dossier "files"
- dossier "marketplace"
- dossier "plugins"
- désactiver tous les plugins


Pour cela nous allons créer un dossier de backup avec les bons droits, dans une fenêtre Terminale en root ( su - ):

mkdir /var/backup
chmod -R 755 /var/backup/

Une fois le dossier créé, passons à la sauvegarde:

cd /var/backup/
mysqldump -u root -p --databases glpidb > dumpdb.sql
cp -R /var/www/html/glpi/config /var/backup/
cp -R /var/www/html/glpi/files /var/backup/
cp -R /var/www/html/glpi/marketplace /var/backup/
cp -R /var/www/html/glpi/plugins /var/backup/

Une fois les auvegardes terminées nous pouvons passer à la migration.


II. Mise à jour GLPI.


Téléchargeons la dernière version en date de GLPI:

cd /tmp
wget https://github.com/glpi-project/glpi/releases/download/10.0.16/glpi-10.0.16.tgz

Puis décompressez l'archive:

tar xvf glpi-10.0.16.tgz

Purgez le dossier GLPI avant d'y installer la nouvelle version:

rm -Rf /var/www/html/glpi/*

Installez la nouvelle version dans le dossier purgé précédemment:

cd glpi
cp -R * /var/www/html/glpi/

Restaurez les dossiers sauvegardés précédemment:

cd /var/backup/
cp -R config/* /var/www/html/glpi/config/
cp -R files/* /var/www/html/glpi/files/
cp -R marketplace/* /var/www/html/glpi/marketplace/
cp -R plugins/* /var/www/html/glpi/plugins/

Donnez les bons droits au dossier GLPI:

chown -R apache:apache /var/www/html/glpi
chmod -R 755 /var/www/html/glpi


Rajoutez des droits SELinux pour le serveur Web:

semanage fcontext -a -t httpd_sys_rw_content_t "/var/www/html/glpi(/.*)?"
restorecon -Rv /var/www/html/glpi


Activez ensuite certains booléens SELinux requis:

setsebool -P httpd_can_network_connect on
setsebool -P httpd_can_network_connect_db on
setsebool -P httpd_can_sendmail on


La migration est à présent terminée.



III. Paramétrage de renforcement.


Comme expliqué plus haut, il est nécessaire d'externaliser les dossiers config et files de GLPI, pour cela il faut créer des dossier avec les droits adéquats.


Création des dossiers:

mkdir /etc/glpi
mkdir /var/lib/glpi
mkdir /var/log/glpi


Donnez les bons droits:

chown -R apache:apache /etc/glpi
chown -R apache:apache /var/lib/glpi
chown -R apache:apache /var/log/glpi
chmod -R 755 /etc/glpi
chmod -R 755 /var/lib/glpi
chmod -R 755 /var/log/glpi


Copiez le contenu config et files de GLPI dans les dossiers créés:

cp -R /var/www/html/glpi/config/* /etc/glpi/
cp -R /var/www/html/glpi/files/* /var/lib/glpi/

Il n'y a rien à copier dans /var/log/files, juste vérifier si les droits sont bons. (ls -l et si besoin chown, chmod décris plus haut)


Suivant la nouvelle nomenclature, il faut créer un fichier php avec les bonnes redirections, n'oubliez pas de donner les bons droits (ls -l et si besoin chown, chmod décris plus haut):

cd /var/www/html/glpi/inc/
nano downstream.php

collez le code php ci-dessous et enregistrez le:

<?php
define('GLPI_CONFIG_DIR', '/etc/glpi/');

if (file_exists(GLPI_CONFIG_DIR . '/local_define.php')) {
   require_once GLPI_CONFIG_DIR . '/local_define.php';
}

Créez ensuite un fichier local et copiez le code php, n'oubliez pas de donner les bons droits (ls -l et si besoin chown, chmod décris plus haut):

nano /etc/glpi/local_define.php
<?php
define('GLPI_VAR_DIR', '/var/lib/glpi');
define('GLPI_LOG_DIR', '/var/log/glpi');

Procédez à la mise à niveau du vhost:

nano /etc/httpd/conf.d/glpi.conf
<VirtualHost *:80>
    ServerName glpi

    DocumentRoot /var/www/html/glpi/public

    # If you want to place GLPI in a subfolder of your site (e.g. your virtual host is serving multiple applications),
    # you can use an Alias directive. If you do this, the DocumentRoot directive MUST NOT target the GLPI directory itself.
    # Alias "/glpi" "/var/www/html/glpi/public"

    <Directory /var/www/html/glpi/public>
        Require all granted

        RewriteEngine On

        # Ensure authorization headers are passed to PHP.
        # Some Apache configurations may filter them and break usage of API, CalDAV, ...
        RewriteCond %{HTTP:Authorization} ^(.+)$
        RewriteRule .* - [E=HTTP_AUTHORIZATION:%{HTTP:Authorization}]

        # Redirect all requests to GLPI router, unless file exists.
        RewriteCond %{REQUEST_FILENAME} !-f
        RewriteRule ^(.*)$ index.php [QSA,L]
    </Directory>
</VirtualHost>

mysql nécessite aussi une mise à niveau de la timezone, redémarrez le service après cela:

mysql_tzinfo_to_sql /usr/share/zoneinfo | mysql -p -u root mysql
systemctl restart mysql


Redémarrez le service apache pour prendre en compte les changements de nomenclature:

systemctl reload httpd && systemctl restart httpd

Configurez la sécurité des sessions dans PHP:

nano /etc/php.ini
session.cookie_secure = on
session.cookie_httponly = on
session.cookie_samesite = Lax


Enregistrez puis redémarrez le service apache:

systemctl reload httpd && systemctl restart httpd

Vérifiez une dernière fois si tous les dossiers et code php ont les bons droits. (ls -l et si besoin chown, chmod décris plus haut)



IV. Installation de GLPI.


Procédez à la mise à niveau de la base de donnée:

cd /var/www/html/glpi/
sudo php bin/console db:check_schema_integrity

db-integrity.png


sudo php bin/console db:update

db-update.png

db-update1.png


Une fois la base de donnée à jour vous pouvez procéder à l'installation de GLPI:

dans votre navigateur renseignez votre adresse IP et suivez les instructions et sélectionnez la base de donnée glpidb.

Vous pouvez vous réferer à cette procédure


Une fois GLPI installé, n'oubliez pas de supprimer install.php:

rm -Rf /var/www/html/glpi/install/install.php

Vous pourrez consulter A propos pour la version de GLPI:

glpi-upgrade.png


N'oubliez pas de réactiver tous vos plugins.



V. Mise à niveau PHP.


cette mise à niveau se base sur un LAMP avec une version 8.1 de PHP qui arrive bientôt en fin de suport de sécurité, il est conseillé d'upgrader vers la dernière version supportée en date soit PHP8.3.


Désinstallez PHP:

dnf remove php*

désactivez PHP8.1:

dnf module disable php:remi-8.1

Réinitialisez PHP:

dnf module reset php

Activez la dernière version de PHP:

dnf module enable php:remi-8.3
dnf update php\*

Installez PHP et ses composants:

dnf install php-mysqlnd php-opcache php-gd php-xmlrpc php-ldap php-imap php-soap php-pecl-apcu php-pear php-devel make libsodium libsodium-devel php-pear-CAS php-mbstring php-sodium phpmyadmin -y

Reconfigurez la sécurité des sessions dans PHP:

nano /etc/php.ini
session.cookie_secure = on
session.cookie_httponly = on
session.cookie_samesite = Lax


Redémarrez le service apache:

systemctl reload httpd && systemctl restart httpd

Pour vérifier la version de PHP installé:

php -v

Mettez à niveau le fichier index.php dans le dossier GLPI pour la prise en charge de PHP8.3:

nano /var/www/html/glpi/index.php

remplacez comme dans la description ci-dessous puis enregistrez et redémarrez le service apache:

Index-PHP.png




Sources:

https://forum.glpi-project.org/viewtopic.php?id=284490 *pour la mise en place du plateau
https://glpi-install.readthedocs.io/fr/latest/ *la documentation indispensable
https://blog.remirepo.net/post/2022/06/ … -and-8.1.7 *pour les versions de PHP

Last edited by vandykmarsu (2024-08-02 10:44:46)

Offline

Board footer

Powered by FluxBB