# 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

Je vous passe la création d'une VM sous Debian 10.

### Modification du source.list

<span class="NormalTextRun  BCX0 SCXW221240791">/</span><span class="NormalTextRun SpellingErrorV2  BCX0 SCXW221240791">etc</span><span class="NormalTextRun  BCX0 SCXW221240791">/</span><span class="NormalTextRun SpellingErrorV2  BCX0 SCXW221240791">apt</span><span class="NormalTextRun  BCX0 SCXW221240791">/</span><span class="NormalTextRun SpellingErrorV2  BCX0 SCXW221240791">source.list</span>

```shell
# 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

```shell
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  
```

### <span class="TextRun SCXW213086612 BCX0" data-contrast="none" lang="FR-FR" xml:lang="FR-FR"><span class="NormalTextRun SpellingErrorV2 SCXW213086612 BCX0" data-ccp-parastyle="heading 1">MariaDB</span></span>

#### <span class="TextRun SCXW213086612 BCX0" data-contrast="none" lang="FR-FR" xml:lang="FR-FR"><span class="NormalTextRun SpellingErrorV2 SCXW213086612 BCX0" data-ccp-parastyle="heading 1">Dépôt officiel</span></span>

```
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' 
```

#### <span class="TextRun SCXW213086612 BCX0" data-contrast="none" lang="FR-FR" xml:lang="FR-FR"><span class="NormalTextRun SpellingErrorV2 SCXW213086612 BCX0" data-ccp-parastyle="heading 1"><span class="TextRun SCXW111606051 BCX0" data-contrast="none" lang="FR-FR" xml:lang="FR-FR"><span class="NormalTextRun SCXW111606051 BCX0" data-ccp-parastyle="heading 2">Installation</span></span><span class="TextRun SCXW111606051 BCX0" data-contrast="none" lang="FR-FR" xml:lang="FR-FR"><span class="NormalTextRun SCXW111606051 BCX0" data-ccp-parastyle="heading 2"> de </span><span class="NormalTextRun SpellingErrorV2 SCXW111606051 BCX0" data-ccp-parastyle="heading 2">MariaDB</span></span></span></span>

```shell
apt install -y mariadb-client mariadb-server 
```

#### <span class="TextRun SCXW213790359 BCX0" data-contrast="none" lang="FR-FR" xml:lang="FR-FR"><span class="NormalTextRun SCXW213790359 BCX0" data-ccp-parastyle="heading 2">Sécurisation </span><span class="NormalTextRun SpellingErrorV2 SCXW213790359 BCX0" data-ccp-parastyle="heading 2">MariaDB</span></span><span class="EOP SCXW213790359 BCX0" data-ccp-props="{"201341983":0,"335559738":40,"335559739":0,"335559740":259}"> </span>

```shell
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 
```

<p class="callout warning">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.</p>

### <span class="TextRun SCXW249075068 BCX0" data-contrast="none" lang="FR-FR" xml:lang="FR-FR"><span class="NormalTextRun SCXW249075068 BCX0" data-ccp-parastyle="heading 1">Installation d’Apache</span></span><span class="TextRun SCXW249075068 BCX0" data-contrast="none" lang="FR-FR" xml:lang="FR-FR"><span class="NormalTextRun SCXW249075068 BCX0" data-ccp-parastyle="heading 1"> et PHP</span></span>

```shell
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

```shell
tar -zcvf glpi-backup.tar.gz /var/www/glpi 
```

<p class="callout info">Pas indispensable, juste une sécurité.</p>

### Lister les plugins utilisé

### Transfert des backups vers le nouveau serveur

```shell
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

```shell
mysql -u root -p glpi_db < dump-glpi-2020-06-22.sql 
```

### Contrôle de l'import du dump sql

```shell
mysql -u root -p 
MariaDB [(none)]> USE glpi_db; 
MariaDB [glpi_db]> SELECT DATABASE(); 
SHOW TABLES; 
```

# Installation de GLPI

### <span data-contrast="none">Récupération des binaires</span><span data-ccp-props="{"201341983":0,"335559738":40,"335559739":0,"335559740":259}"> </span>

<span data-ccp-props="{"201341983":0,"335559739":160,"335559740":259}"> </span><span data-contrast="auto">Récupérer GLPI sur le github officiel : </span>[<span data-contrast="auto">https://github.com/glpi-project/glpi/releases</span>](https://github.com/glpi-project/glpi/releases)<span data-ccp-props="{"201341983":0,"335559739":160,"335559740":259}"> </span>

```shell
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/ 
```

### <span data-contrast="none">A</span><span data-contrast="none">pache</span>

#### <span data-contrast="none">Création </span><span data-contrast="none">d’un </span><span data-contrast="none">certificat au</span><span data-contrast="none">t</span><span data-contrast="none">o</span><span data-contrast="none"> </span><span data-contrast="none">signé</span><span data-ccp-props="{"201341983":0,"335559738":40,"335559739":0,"335559740":259}"> </span>

```shell
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* 
```

<p class="callout info"><span data-ccp-props="{"201341983":0,"335559739":160,"335559740":259}">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</span></p>

#### <span data-contrast="none">Création du vhost SSL</span><span data-ccp-props="{"201341983":0,"335559738":40,"335559739":0,"335559740":259}"> </span>

<span data-contrast="auto">Editer le fichier </span><span data-contrast="auto">/etc/apache2/sites-available/</span><span data-contrast="auto">new.glpi.local</span><span data-contrast="auto">.conf</span>

```shell
<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> 
```

#### <span class="TextRun SCXW81547156 BCX0" data-contrast="none" lang="FR-FR" xml:lang="FR-FR"><span class="NormalTextRun SCXW81547156 BCX0" data-ccp-parastyle="heading 3">Mod à activer</span></span>

```shell
a2enmod rewrite 
a2enmod ssl  
```

#### <span class="TextRun SCXW81547156 BCX0" data-contrast="none" lang="FR-FR" xml:lang="FR-FR"><span class="NormalTextRun SCXW81547156 BCX0" data-ccp-parastyle="heading 3"><span class="TextRun SCXW76157926 BCX0" data-contrast="none" lang="FR-FR" xml:lang="FR-FR"><span class="NormalTextRun SCXW76157926 BCX0" data-ccp-parastyle="heading 3">Activer le </span><span class="NormalTextRun SpellingErrorV2 SCXW76157926 BCX0" data-ccp-parastyle="heading 3">vhost</span></span></span></span>

```shell
a2ensite new.glpi.local.conf 
a2dissite 000-default.conf 
```

#### <span class="TextRun SCXW144485734 BCX0" data-contrast="none" lang="FR-FR" xml:lang="FR-FR"><span class="NormalTextRun SCXW144485734 BCX0" data-ccp-parastyle="heading 3">Contrôle de la configuration</span></span><span class="EOP SCXW144485734 BCX0" data-ccp-props="{"201341983":0,"335559738":40,"335559739":0,"335559740":259}"> </span>

```shell
apache2ctl configtest 
```

<p class="callout info"><span data-contrast="auto">Si ce message d’erreur apparaît :</span><span data-ccp-props="{"201341983":0,"335559739":160,"335559740":259}"> </span></p>

<p class="callout warning"><span data-contrast="auto">Invalid command 'Header', perhaps misspelled or defined by a module not included in the server configuration</span><span data-ccp-props="{"201341983":0,"335559739":160,"335559740":259}">   
</span><span data-contrast="auto">Action 'configtest' failed.</span><span data-ccp-props="{"201341983":0,"335559739":160,"335559740":259}"> </span></p>

<span data-ccp-props="{"201341983":0,"335559739":160,"335559740":259}">Exécuter la commande suivante</span>

```shell
cp -arp /etc/apache2/mods-available/headers.load  /etc/apache2/mods-enabled/headers.load
```

#### <span data-ccp-props="{"201341983":0,"335559739":160,"335559740":259}">Relancer Apache</span>

```shell
systemctl restart apache2 
```

### <span class="TextRun SCXW109531107 BCX0" data-contrast="none" lang="FR-FR" xml:lang="FR-FR"><span class="NormalTextRun SCXW109531107 BCX0" data-ccp-parastyle="heading 2">Installation &amp; </span></span><span class="TextRun SCXW109531107 BCX0" data-contrast="none" lang="FR-FR" xml:lang="FR-FR"><span class="NormalTextRun SCXW109531107 BCX0" data-ccp-parastyle="heading 2">mise à jour</span></span>

<span class="TextRun SCXW109531107 BCX0" data-contrast="none" lang="FR-FR" xml:lang="FR-FR"><span class="NormalTextRun SCXW109531107 BCX0" data-ccp-parastyle="heading 2">[![glpi01.png](https://doc.ataxya.net/uploads/images/gallery/2020-07/scaled-1680-/glpi01.png)](https://doc.ataxya.net/uploads/images/gallery/2020-07/glpi01.png)</span></span>

<span class="TextRun SCXW109531107 BCX0" data-contrast="none" lang="FR-FR" xml:lang="FR-FR"><span class="NormalTextRun SCXW109531107 BCX0" data-ccp-parastyle="heading 2">[![glpi02.png](https://doc.ataxya.net/uploads/images/gallery/2020-07/scaled-1680-/glpi02.png)](https://doc.ataxya.net/uploads/images/gallery/2020-07/glpi02.png)</span></span>

<span class="TextRun SCXW109531107 BCX0" data-contrast="none" lang="FR-FR" xml:lang="FR-FR"><span class="NormalTextRun SCXW109531107 BCX0" data-ccp-parastyle="heading 2">[![glpi03.png](https://doc.ataxya.net/uploads/images/gallery/2020-07/scaled-1680-/glpi03.png)](https://doc.ataxya.net/uploads/images/gallery/2020-07/glpi03.png)</span></span>

<span class="TextRun SCXW109531107 BCX0" data-contrast="none" lang="FR-FR" xml:lang="FR-FR"><span class="NormalTextRun SCXW109531107 BCX0" data-ccp-parastyle="heading 2">[![glpi04.png](https://doc.ataxya.net/uploads/images/gallery/2020-07/scaled-1680-/glpi04.png)](https://doc.ataxya.net/uploads/images/gallery/2020-07/glpi04.png)</span></span>

<span class="TextRun SCXW109531107 BCX0" data-contrast="none" lang="FR-FR" xml:lang="FR-FR"><span class="NormalTextRun SCXW109531107 BCX0" data-ccp-parastyle="heading 2">[![glpi05.png](https://doc.ataxya.net/uploads/images/gallery/2020-07/scaled-1680-/glpi05.png)](https://doc.ataxya.net/uploads/images/gallery/2020-07/glpi05.png)</span></span>

<span class="TextRun SCXW109531107 BCX0" data-contrast="none" lang="FR-FR" xml:lang="FR-FR"><span class="NormalTextRun SCXW109531107 BCX0" data-ccp-parastyle="heading 2">[![glpi06.png](https://doc.ataxya.net/uploads/images/gallery/2020-07/scaled-1680-/glpi06.png)](https://doc.ataxya.net/uploads/images/gallery/2020-07/glpi06.png)</span></span>

[![glpi07.png](https://doc.ataxya.net/uploads/images/gallery/2020-07/scaled-1680-/glpi07.png)](https://doc.ataxya.net/uploads/images/gallery/2020-07/glpi07.png)

[![glpi08.png](https://doc.ataxya.net/uploads/images/gallery/2020-07/scaled-1680-/glpi08.png)](https://doc.ataxya.net/uploads/images/gallery/2020-07/glpi08.png)

#### <span class="TextRun SCXW109531107 BCX0" data-contrast="none" lang="FR-FR" xml:lang="FR-FR"><span class="NormalTextRun SCXW109531107 BCX0" data-ccp-parastyle="heading 2"><span class="TextRun SCXW105338560 BCX0" data-contrast="none" lang="FR-FR" xml:lang="FR-FR"><span class="NormalTextRun SCXW105338560 BCX0" data-ccp-parastyle="heading 2">Migration de la DB </span></span><span class="TextRun SCXW105338560 BCX0" data-contrast="none" lang="FR-FR" xml:lang="FR-FR"><span class="NormalTextRun SCXW105338560 BCX0" data-ccp-parastyle="heading 2">en </span><span class="NormalTextRun SpellingErrorV2 SCXW105338560 BCX0" data-ccp-parastyle="heading 2">innodb</span></span></span></span>

<span class="TextRun SCXW109531107 BCX0" data-contrast="none" lang="FR-FR" xml:lang="FR-FR"><span class="NormalTextRun SCXW109531107 BCX0" data-ccp-parastyle="heading 2"><span class="TextRun SCXW105338560 BCX0" data-contrast="none" lang="FR-FR" xml:lang="FR-FR"><span class="NormalTextRun SpellingErrorV2 SCXW105338560 BCX0" data-ccp-parastyle="heading 2">[![glpi10.png](https://doc.ataxya.net/uploads/images/gallery/2020-07/scaled-1680-/glpi10.png)](https://doc.ataxya.net/uploads/images/gallery/2020-07/glpi10.png)</span></span></span></span>

```shell
cd /var/www/glpi/ 
php bin/console glpi:migration:myisam_to_innodb 
```