Migration d'un serveur GLPI
Le serveur GLPI est sur une Debian 7.11 et en version 9.1. Création d'un nouveau serveur en Debian 10 avec la dernière version de GLPI 9.4.6
- Préparation du nouveau système
- Sauvegarde de l'ancien GLPI
- Restauration des données de la base MySQL
- Installation de GLPI
Préparation du nouveau système
Je vous passe la création d'une VM sous Debian 10.
Modification du source.list
/etc/apt/source.list
# deb cdrom:[Debian GNU/Linux 10.4.0 _Buster_ - Official amd64 NETINST 20200509-10:25]/ buster main
deb http://deb.debian.org/debian/ buster main contrib non-free
deb-src http://deb.debian.org/debian/ buster main contrib non-free
deb http://security.debian.org/debian-security buster/updates main contrib non-free
deb-src http://security.debian.org/debian-security buster/updates main contrib non-free
# buster-updates, previously known as 'volatile'
deb http://deb.debian.org/debian/ buster-updates main contrib non-free
deb-src http://deb.debian.org/debian/ buster-updates main contrib non-free
# Backports repository
deb http://deb.debian.org/debian buster-backports main contrib non-free
#deb http://deb.debian.org/debian buster-backports-sloppy main contrib non-free
Installation des paquets de base
apt install -y \
apt-transport-https \
bash-completion \
curl \
dnsutils \
git \
htop \
locate \
net-tools \
openssl \
open-vm-tools \
python3-pip \
ssl-cert \
sudo \
telnet \
traceroute \
tuned \
v4l2loopback-utils \
wget \
unzip
MariaDB
Dépôt officiel
apt install software-properties-common dirmngr
apt-key adv --fetch-keys 'https://mariadb.org/mariadb_release_signing_key.asc'
add-apt-repository 'deb [arch=amd64] http://ftp.igh.cnrs.fr/pub/mariadb/repo/10.4/debian buster main'
Installation de MariaDB
apt install -y mariadb-client mariadb-server
Sécurisation MariaDB
mariadb-secure-installation
Enter current password for root (enter for none):
Switch to unix_socket authentication [Y/n] y
Change the root password? [Y/n] y
Remove anonymous users? [Y/n] y
Disallow root login remotely? [Y/n] y
Remove test database and access to it? [Y/n] y
Reload privilege tables now? [Y/n] y
Pour l'importation de la base de donnée, cela sera via le compte root. Avec un autre compte même avec les mêmes priviligère que root, ça ne fonctionne pas.
Installation d’Apache et PHP
apt -y install \
apache2 \
libapache2-mod-php \
php \
php-apcu \
php-cas \
php-cli \
php-curl \
php-gd \
php-gmp \
php-imap \
php-intl \
php-json \
php-ldap \
php-mysql \
php-mbstring \
php-xml \
php-xmlrpc \
php-zip
Sauvegarde de l'ancien GLPI
Backup de la base de donnée
Soit on sauvegarde seulement la base de GLPI ou la totalité, surtout si on a un OCS Inventory
mysqldump -u root -p glpi > dump-glpi-2020-06-22.sql
mysqldump -all-databases > dump-all_base.sql
tar -zcvf dump.sql
Backup binaire
tar -zcvf glpi-backup.tar.gz /var/www/glpi
Pas indispensable, juste une sécurité.
Lister les plugins utilisé
Transfert des backups vers le nouveau serveur
scp glpi-backup.tar.gz root@xxxxxxxxx:/var/www/
scp dump-glpi-2020-06-22.sql root@xxxxxxxxx:/root/
Restauration des données de la base MySQL
Restauration
mysql -u root -p glpi_db < dump-glpi-2020-06-22.sql
Contrôle de l'import du dump sql
mysql -u root -p
MariaDB [(none)]> USE glpi_db;
MariaDB [glpi_db]> SELECT DATABASE();
SHOW TABLES;
Installation de GLPI
Récupération des binaires
Récupérer GLPI sur le github officiel : https://github.com/glpi-project/glpi/releases
curl -OL https://github.com/glpi-project/glpi/releases/download/9.4.6/glpi-9.4.6.tgz
tar -xvf glpi-9.4.6.tgz -C /var/www/
chown -R www-data:www-data /var/www/glpi/
Apache
Création d’un certificat auto signé
mkdir -p /etc/ssl/localcerts
openssl req -new -x509 -days 365 -nodes -out /etc/ssl/localcerts/apache.pem -keyout /etc/ssl/localcerts/apache.key
chmod 600 /etc/ssl/localcerts/apache*
Le GLPI n'est accessible que sur le réseau interne, le certificat auto signé est intégré dans l'AD.
Si le GLPI est accessible, utiliser Let's Encrypt
Création du vhost SSL
Editer le fichier /etc/apache2/sites-available/new.glpi.local.conf
<VirtualHost *:80>
#Redirection du flux TCP 80 vers TCP 443
ServerName glpi.local
ServerAlias *.glpi.local
RewriteEngine On
RewriteRule ^(.*)$ https://%{HTTP_HOST}$1 [R=301,L]
</VirtualHost>
<VirtualHost *:443>
ServerName glpi.local
ServerAlias *.glpi.local
ServerAdmin webmaster@localhost
DocumentRoot /var/www/glpi
<Directory /var/www/glpi>
Options -Indexes +FollowSymLinks
AllowOverride All
Require all granted
</Directory>
# Paramètres SSL
SSLEngine on
SSLCertificateFile /etc/ssl/localcerts/apache.pem
SSLCertificateKeyFile /etc/ssl/localcerts/apache.key
SSLProtocol all -SSLv2 -SSLv3
SSLHonorCipherOrder on
SSLCompression off
SSLOptions +StrictRequire
SSLCipherSuite ECDHE-RSA-AES128-GCM-SHA256:ECDHE-ECDSA-AES128-GCM-SHA256:ECDHE-RSA-AES256-GCM-SHA384:ECDHE-ECDSA-AES256-GCM-SHA384:DHE-RSA-AES128-GCM-SHA256:DHE-DSS-AES128-GCM-SHA256:kEDH+AESGCM:ECDHE-RSA$ Header always set Strict-Transport-Security "max-age=31536000; includeSubDomains"
# Log
LogLevel warn
ErrorLog ${APACHE_LOG_DIR}/*.glpi.local-error.log
CustomLog ${APACHE_LOG_DIR}/*.glpi.local-access.log combined
</VirtualHost>
Mod à activer
a2enmod rewrite
a2enmod ssl
Activer le vhost
a2ensite new.glpi.local.conf
a2dissite 000-default.conf
Contrôle de la configuration
apache2ctl configtest
Si ce message d’erreur apparaît :
Invalid command 'Header', perhaps misspelled or defined by a module not included in the server configuration
Action 'configtest' failed.
Exécuter la commande suivante
cp -arp /etc/apache2/mods-available/headers.load /etc/apache2/mods-enabled/headers.load
Relancer Apache
systemctl restart apache2
Installation & mise à jour
Migration de la DB en innodb
cd /var/www/glpi/
php bin/console glpi:migration:myisam_to_innodb