Un mémo sur comment installer GLPI sous Debian Stretch avec Nginx, PHP7 et MariaDB.
GLPI est une solution libre et open-source de gestion de parc informatique et de service helpdesk administrable via son interface web.
Ce article décrit une installation pas à pas de GLPI à partir d’un serveur Debian 9 fraîchement installé.
Installation et configuration du serveur web
- Installation des paquets qui composent l’ensemble du serveur web (Nginx, PHP7 et MariaDB) :
apt install nginx php7.0-fpm mariadb-server php7.0-curl php7.0-gd php7.0-mysql php7.0-cli php7.0-imap php7.0-ldap php7.0-apcu php7.0-xmlrpc php7.0-mbstring php7.0-xml php7.0-xmlrpc
mysql_secure_installation
- Se connecter au serveur de base de données MariaDB :
mysql -u root -p
CREATE USER 'user-glpi'@'%' IDENTIFIED BY 'MY-MDP';
CREATE DATABASE glpi;
GRANT ALL PRIVILEGES ON glpi.* TO 'user-glpi'@'%';
FLUSH PRIVILEGES;
Quit;
- Éditer le fichier
/etc/php/7.0/fpm/pool.d/www.conf
:
nano /etc/php/7.0/fpm/pool.d/www.conf
listen = 127.0.0.1:9000
/etc/php/7.0/fpm/php.ini
:nano /etc/php/7.0/fpm/php.ini
cgi.fix_pathinfo=0
- Supprimer le block server par défaut :
rm /etc/nginx/sites-enabled/default
- Editer un fichier de configuration pour le server block de GLPI :
nano /etc/nginx/sites-enabled/glpi
server { listen 80 default_server; root /var/www/html; index index.php; server_name localhost; location / {try_files $uri $uri/ index.php;} #prise en charge PHP location ~ \.php$ { fastcgi_pass 127.0.0.1:9000; fastcgi_index index.php; include /etc/nginx/fastcgi_params; fastcgi_param SCRIPT_FILENAME $document_root$fastcgi_script_name; include fastcgi_params; fastcgi_param SERVER_NAME $host; } }
systemctl restart nginx systemctl restart php7.0-fpm
Installation de GLPI
- Se placer dans l’arborescence du serveur web :
cd /var/www/html/
wget https://github.com/glpi-project/glpi/releases/download/9.3.0/glpi-9.3.tgz
tar xzvf glpi-9.3.tgz
rm glpi-9.3.tgz
chgrp www-data /var/www/html/glpi/{config,files,files/_{dumps,sessions,cron,graphs,lock,plugins,tmp,rss,uploads,pictures,log}}
- Sélection la langue
- Accepter les termes de la licence libre :
- Cliquer sur installer :
- Si tout est dans le vert, cliquer sur Continuer :
- Saisir les informations concernant les accès à la base de données de GLPI :
- Sélectionner le base de données GLPI :
- Cliquer sur Continuer :
- Cliquer sur Continuer (vous pouvez décocher la case Envoyer « statistiques d’usage »)
- Cliquer sur Utiliser GLPI :
- Saisir les identifiants par défaut pour se conencter à l’interface web administration de GLPI : glpi/glpi
- Vous êtes connecté à GLPI :
chmod 777 ! Jamais ça…
chgrp www-data /var/www/html/glpi/{config,files,files/_{dumps,sessions,cron,graphs,lock,plugins,tmp,cache,rss,uploads,pictures,log}} est plus approprié
effectivement, je suis entièrement d’accord avec toi de ne jamais faire du chmod 777, j’ai actualisé l’article avec ta commande… merci :-)
holà !
Petit soucis lorsque j’effectue GRANT ALL ON `glpi` . * TO ‘glpi’@’%’; voici le message qui m’est retourner :
ERROR 1133 (28000): Can’t find any matching row in the user table
Re bonjour,
J’ai monté une VM pour refaire le tuto complet sous Debian 9 – j’ai quelques erreurs qui sont apparues, et quelques questions :
-Que devons-nous répondre sur les paramètres proposés par la commande : « mysql_secure_installation » ?
-sur la commande « mysql -u root -p » on doit bien indiquer le mot de passe root de la machine linux et pas un mot de passe pour la BD ?
– J’ai toujours la même erreur avec la commande suiviant : « CREATE USER ‘user’ identified by ‘PASSWD’; » qui me retourne l’erreur suivante :
MariaDB [(none)]> GRANT ALL ON `glpi` . * TO ‘glpi’@’%’;
ERROR 1133 (28000): Can’t find any matching row in the user table
– Plus 2 petites erreurs rencontré dans les commandes suivantes :
root@GLPI-TEST:/var/www/html# rm glpi-9.2.tar.gz
rm: impossible de supprimer ‘glpi-9.2.tar.gz’: Aucun fichier ou dossier de ce type
root@GLPI-TEST:/var/www/html# rm glpi-9.2.tgz
root@GLPI-TEST:/var/www/html# chmod -R 755 /var/www/html/glpi/
root@GLPI-TEST:/var/www/html# chgrp www-data /var/www/html/glpi/{config,files,files/_{ dumps,sessions,cron,graphs,lock,plugins,tmp,cache,rss,uploads,pictures,log}}
chgrp: impossible d’accéder à ‘/var/www/html/glpi/files/_cache’: Aucun fichier ou dossier de ce type
root@GLPI-TEST:/var/www/html# mkdir glpi/files/_cache
root@GLPI-TEST:/var/www/html# chgrp www-data /var/www/html/glpi/{config,files,files/_{dumps,sessions,cron,graphs,lock,plugins,tmp,cache,rss,uploads,pictures,log}}
root@GLPI-TEST:/var/www/html#
Comme indiquer le fichier téléchargé n’est pas .tar.gz mais seulement un .tgz – ensuite le dossier _cache/ n’existe pas dans l’archive que j’ai je l’ai dont créer pour m’assurer du fonctionnement de la manipulation et une fois tout cela effectué je lance GLPI : » http://172.20.10.7/glpi/install/install.php » mais tous les test d’écritures ont échoué – ce problème ce règle si je fais un chown www-data -R glpi/ mais après l’assistant me cris dessus parce que tout le monde peut y accéder ce qui paraît un peu logique. En revanche, lorsque j’accède à l’authentification pour entrer dans la base GLPI et que je met glpi/glpi (usere/mdp) cela m’indique « accès refusé »
Auriez-vous des informations/pistes à me donner vis à vis de ces problèmes rencontrés ??
Bonjour Monsieur_Ninja,
pour
mysql_secure_installation
, tu as les infos ici : https://memo-linux.com/securiser-un-serveur-mysql-en-quelques-secondes/pour la commande
mysql -u root -p
c’est le mot de passe root de MysqlTon utilisateur glpi existe bien ?
pour le rm, j’ai corrigé la coquille
« mais après l’assistant me cris dessus parce que tout le monde peut y accéder ce qui paraît un peu logique » : c’est un GLPI ouvert à internet ou pas ? de toute façon, www-data doit être propriétaire du dossier GLPI…
Vraiment top ton tuto.
Un grand merci à toi ;)
Bonjour,
Il y a deux fois php7.0-xml php7.0-xml dans la 1er commande a lancer pour les dépendance ce be serrais pas un oublie sur le deuxième paquet php7.0-xml php7.0-xmlRPC ?
Exact, c’est corrigé ! merci
Bonjour,
et merci pour le tuto.
Bonne continuation
Bonjour,
j’ai un souci lors du restart de
systemctl restart php7.0-fpm
Y-a-t-il à remplacer les MAJUSCULES du fichier /etc/nginx/sites-enabled/glpi
Je pense à SCRIPT_FILENAME & SERVER_NAME
=> Failed to start the PHP7.0 FastCGI Process Manager
Merci d’avance
Bonjour Stéphane,
que donne la sortie de la commande :
systemctl status php7.0-fpm -l
Bonjour Fred,
Désolé pour cette longue absence.
J’obtiens :
root@debglpi:/home/initial# systemctl status php7.0-fpm -l
● php7.0-fpm.service – The PHP 7.0 FastCGI Process Manager
Loaded: loaded (/lib/systemd/system/php7.0-fpm.service; enabled; vendor preset: enabled)
Active: failed (Result: exit-code) since Mon 2018-05-14 22:02:49 CEST; 11min ago
Docs: man:php-fpm7.0(8)
Process: 516 ExecStart=/usr/sbin/php-fpm7.0 –nodaemonize –fpm-config /etc/php/7.0/fpm/php-fpm.conf (code=exited, status=78)
Main PID: 516 (code=exited, status=78)
mai 14 22:02:47 debglpi systemd[1]: Starting The PHP 7.0 FastCGI Process Manager…
mai 14 22:02:49 debglpi php-fpm7.0[516]: [14-May-2018 22:02:49] ERROR: [/etc/php/7.0/fpm/pool.d/www.conf:36] unknown entry ‘# OLD-SB listen’
mai 14 22:02:49 debglpi php-fpm7.0[516]: [14-May-2018 22:02:49] ERROR: Unable to include /etc/php/7.0/fpm/pool.d/www.conf from /etc/php/7.0/fpm/php-fpm.conf at line 36
mai 14 22:02:49 debglpi php-fpm7.0[516]: [14-May-2018 22:02:49] ERROR: failed to load configuration file ‘/etc/php/7.0/fpm/php-fpm.conf’
mai 14 22:02:49 debglpi php-fpm7.0[516]: [14-May-2018 22:02:49] ERROR: FPM initialization failed
mai 14 22:02:49 debglpi systemd[1]: php7.0-fpm.service: Main process exited, code=exited, status=78/n/a
mai 14 22:02:49 debglpi systemd[1]: Failed to start The PHP 7.0 FastCGI Process Manager.
mai 14 22:02:49 debglpi systemd[1]: php7.0-fpm.service: Unit entered failed state.
mai 14 22:02:49 debglpi systemd[1]: php7.0-fpm.service: Failed with result ‘exit-code’.
Je pense qu’il reste un lien sur l’ancienne configuration car j’ai vu passer ‘# OLD-SB listen’
Fred,
Je viens de comprendre : j’avais mis un # pour mettre un commentaire en début de ligne au lieu d’un « ; »
Je vais tout reprendre. Merci :-)
Stéphane
Bonjour, merci beaucou pour ce tuto :
Cependant j’ai une erreur en le suivant et je n’arrive pas à la résoudre ( je suis novice ) .
lorsque que je rentre « systemctl restart nginx » ça me dit « Failed because the control process exited with error code », j’ai probablement faire une erreur de syntaxe mais sais-tu à quoi c’est lié ?
Cordialement,
Girophare
Un grand merci je ne te raconte pas le nombre de fois ou j’ai tenté de l’installer,
Par contre n’aurait-tu pas écrit deux fois le mot » ligne » a cette étape? Dé-commenter le ligne ligne 760 :/ cgi.fix_pathinfo=0
Merci ZZ, coquille corrigée :-)
@Girophare : quel est le retour de la commande
nginx -t
?Bonjour, j’ai actuellement le même problème que Girophare, la commande nginx -t me retourne :
nginx: [emerg] unknown directive « location/ » in /etc/nginx/sites-enabled/glpi:7
nginx: configuration file /etc/nginx/nginx.conf test failed
Est-ce que tu saurais me dire ce qui n’est pas bon?
Bonjour AL,
je viens de refaire toute l’installation dans une VM et tout est OK.
vérifie si tu n’as pas une erreur de saisie dans le fichier /etc/nginx/sites-enabled/glpi à la ligne 7
Merci tout est bon maintenant, super tuto.
Bonjour Fred,
Tout d’abord, je te remercie pour ce tutoriel :)
Je l’ai suivi pas à pas ! Cependant lors du redémarrage du service nginx, j’ai ‘erreur suivante :
Starting nginx (viasystemctl): nginx.servicejob for nginx.service failed because the controlprocess exited with error code.
Quand je fais nginx -t :
nginx: the configuration file /etc/nginx/nginx.conf syntax is OK
nginx: configuration file /etc/nginx/nginx.conf test is successful
Et quand je fais systemctl status php7.0-fpm -l
root@Serv-GLPI:/home/adminservglpi# systemctl status php7.0-fpm -l
● php7.0-fpm.service – The PHP 7.0 FastCGI Process Manager
Loaded: loaded (/lib/systemd/system/php7.0-fpm.service; enabled; vendor prese
Active: inactive (dead) since Fri 2018-06-01 12:18:36 CEST; 11min ago
Docs: man:php-fpm7.0(8)
Process: 19589 ExecStart=/usr/sbin/php-fpm7.0 –nodaemonize –fpm-config /etc/
Main PID: 19589 (code=exited, status=0/SUCCESS)
Status: « Processes active: 0, idle: 2, Requests: 0, slow: 0, Traffic: 0req/se
juin 01 11:15:41 Serv-GLPI systemd[1]: Starting The PHP 7.0 FastCGI Process Mana
juin 01 11:15:41 Serv-GLPI systemd[1]: Started The PHP 7.0 FastCGI Process Manag
juin 01 12:18:36 Serv-GLPI systemd[1]: Stopping The PHP 7.0 FastCGI Process Mana
juin 01 12:18:36 Serv-GLPI systemd[1]: Stopped The PHP 7.0 FastCGI Process Manag
lines 1-12/12 (END)…skipping…
● php7.0-fpm.service – The PHP 7.0 FastCGI Process Manager
Loaded: loaded (/lib/systemd/system/php7.0-fpm.service; enabled; vendor preset: enabled)
Active: inactive (dead) since Fri 2018-06-01 12:18:36 CEST; 11min ago
Docs: man:php-fpm7.0(8)
Process: 19589 ExecStart=/usr/sbin/php-fpm7.0 –nodaemonize –fpm-config /etc/php/7.0/fpm/php-fpm.conf (code=exited, status=0/SUCCESS)
Main PID: 19589 (code=exited, status=0/SUCCESS)
Status: « Processes active: 0, idle: 2, Requests: 0, slow: 0, Traffic: 0req/sec »
juin 01 11:15:41 Serv-GLPI systemd[1]: Starting The PHP 7.0 FastCGI Process Manager…
juin 01 11:15:41 Serv-GLPI systemd[1]: Started The PHP 7.0 FastCGI Process Manager.
juin 01 12:18:36 Serv-GLPI systemd[1]: Stopping The PHP 7.0 FastCGI Process Manager…
juin 01 12:18:36 Serv-GLPI systemd[1]: Stopped The PHP 7.0 FastCGI Process Manager.
Peux tu me donner une piste ?
Je te remercie !
Cédric
Bonjour Cédric,
systemctl status nginx -l
?pour php, regarde les log
/var/log/php7.0-fpm.log
lorsque tu relances les services, dans un autre terminal regarde le journal :
journalctl -f
Fred,
Merci pour les différentes commandes, j’avais omis de lancer celle-ci :
systemctl statut nginx -l qui me renvoi ce qui suis :
root@Serv-GLPI:/home/adminservglpi# systemctl status nginx -l
● nginx.service – nginx – high performance web server
Loaded: loaded (/lib/systemd/system/nginx.service; enabled; vendor preset: enabled)
Active: failed (Result: exit-code) since Fri 2018-06-01 12:25:46 CEST; 1h 10min ago
Docs: http://nginx.org/en/docs/
Process: 20222 ExecStart=/usr/sbin/nginx -c /etc/nginx/nginx.conf (code=exited, status=1/FAILURE)
juin 01 12:25:43 Serv-GLPI nginx[20222]: nginx: [emerg] listen() to 0.0.0.0:80, backlog 511 failed (98: Address already in use)
juin 01 12:25:44 Serv-GLPI nginx[20222]: nginx: [emerg] listen() to 0.0.0.0:80, backlog 511 failed (98: Address already in use)
juin 01 12:25:44 Serv-GLPI nginx[20222]: nginx: [emerg] listen() to 0.0.0.0:80, backlog 511 failed (98: Address already in use)
juin 01 12:25:45 Serv-GLPI nginx[20222]: nginx: [emerg] listen() to 0.0.0.0:80, backlog 511 failed (98: Address already in use)
juin 01 12:25:45 Serv-GLPI nginx[20222]: nginx: [emerg] listen() to 0.0.0.0:80, backlog 511 failed (98: Address already in use)
juin 01 12:25:46 Serv-GLPI nginx[20222]: nginx: [emerg] still could not bind()
juin 01 12:25:46 Serv-GLPI systemd[1]: nginx.service: Control process exited, code=exited status=1
juin 01 12:25:46 Serv-GLPI systemd[1]: Failed to start nginx – high performance web server.
juin 01 12:25:46 Serv-GLPI systemd[1]: nginx.service: Unit entered failed state.
juin 01 12:25:46 Serv-GLPI systemd[1]: nginx.service: Failed with result ‘exit-code’.
Le service PHP se lance correctement, seul celui de gninx plante ! Voici ce qu’affiche le journal lors d’une tentation de démarrage du service nginx :
juin 01 13:46:13 Serv-GLPI sudo[20653]: root : TTY=pts/1 ; PWD=/home/adminservglpi ; USER=root ; COMMAND=/etc/init.d/nginx start
juin 01 13:46:13 Serv-GLPI sudo[20653]: pam_unix(sudo:session): session opened for user root by (uid=0)
juin 01 13:46:13 Serv-GLPI systemd[1]: Starting nginx – high performance web server…
juin 01 13:46:13 Serv-GLPI nginx[20666]: nginx: [emerg] listen() to 0.0.0.0:80, backlog 511 failed (98: Address already in use)
juin 01 13:46:13 Serv-GLPI nginx[20666]: nginx: [emerg] listen() to 0.0.0.0:80, backlog 511 failed (98: Address already in use)
juin 01 13:46:14 Serv-GLPI nginx[20666]: nginx: [emerg] listen() to 0.0.0.0:80, backlog 511 failed (98: Address already in use)
juin 01 13:46:14 Serv-GLPI nginx[20666]: nginx: [emerg] listen() to 0.0.0.0:80, backlog 511 failed (98: Address already in use)
juin 01 13:46:15 Serv-GLPI nginx[20666]: nginx: [emerg] listen() to 0.0.0.0:80, backlog 511 failed (98: Address already in use)
juin 01 13:46:15 Serv-GLPI nginx[20666]: nginx: [emerg] still could not bind()
juin 01 13:46:15 Serv-GLPI systemd[1]: nginx.service: Control process exited, code=exited status=1
juin 01 13:46:15 Serv-GLPI systemd[1]: Failed to start nginx – high performance web server.
juin 01 13:46:15 Serv-GLPI systemd[1]: nginx.service: Unit entered failed state.
juin 01 13:46:15 Serv-GLPI systemd[1]: nginx.service: Failed with result ‘exit-code’.
juin 01 13:46:15 Serv-GLPI sudo[20653]: pam_unix(sudo:session): session closed for user root
N’y a t il pas un problème de conflit de port d’écoute ?
Je te remercie de ton aide :)
Cédric
tu n’aurais pas un apache qui tourne ?
que donne
netstat -lptn | grep 80
Fred,
C’est bien ça ! Quand j’ai trouvé ton tuto, j’avais oublié que j’avais activé les services web lors de l’installation de mon débian…
Merci pour ton aide :)
Très belle fin de journée et beau weekend :)
Cédric
lorsque j’installe une Debian, je n’installe que le serveur SSH afin d’installer et configurer seulement les services dont j’ai besoin.
En tout cas c’est cool, tu as trouvé. Bonne install de GLPI et bon week-end également :-)
Bonjour,
j’ai suivi votre très bon tuto à la lettre à la fin sur le check des paramètres j’ai :
Test de l’extension CAS l’extension CAS est manquante.
une petite idée ?
merci
apt-get install php-cas
Et ton soucis sera réglé.
Cordialement
ça marché
merci à toi
tes tutos sont très utiles
J’abuse mais pour :
L’accès web au dossier « files » ne devrait pas être autorisé Vérifier le fichier .htaccess et la configuration du serveur web
t’as une idée
sur mon navigateur, après avoir écris l’adresse ip du serveur/glpi j’ai le message « No input file specified »
Bonjour,
Novice en la matière, j’avais déjà mis en place un glpi il y a 2 ans en utilisant apache comme serveur web et fusioninventory comme agent pour remonter les informations des machines de mon parc informatique.
Je me relance dans la mise en place de glpi avec ton tuto. Quel outil utiliser pour remonter ces infos aujourd’hui avec ta configuration proposée? Et y a t il un tuto qui traîne pour installer ces agents?
Merci et super tuto.
Bonjour !
Excellent tuto. Un grand merci pour le partage !!!
L’assistant d’installation m’a indiqué qu’il ne pouvait pas créer le répertoire _cache dans glpi/files. Juste pour signaler que je l’ai crée et lancé un « chgrp www-data /var/www/html/glpi/files/_cache » mais peut-être l’inclure dans la commande chgrp initiale.
Merci encore :-)
j’ai fais la manip mais avec apache , il manque le php-cas dans la ligne
aprés j’ai
Test d’écriture des fichiers de cache
Le dossier n’a pas pu être créé.
Contrôle des droits sur le répertoire : /var/www/html/glpi/files/_cache’
et ça comme erreur
j’ai rajouté cache dans ta ligne
chgrp www-data /var/www/html/glpi/{config,files,files_{dumps,sessions,cron,graphs,lock,plugins,tmp,rss,uploads,pictures,log,cache}}
la commande wget https://github.com/glpi-project/glpi/releases/download/9.3.0/glpi-9.3.tgz ne marche pas
Bonjour
J’utilise un VM deb 9.4 pour installer GLPI, J’ai tout fait comme toi et lorsque je tape sur chrome localhost/glpi j’obtient :
Ce site est inaccessible
localhost n’autorise pas la connexion.
Effectuez une recherche Google sur localhost glpi.
ERR_CONNECTION_REFUSED
Bonjour,
j’installe la derniere version de GLPI sous Debian 9.5 avec PHP 7.0, mais j’ai un probleme lors du « checking of the compatibility » …. -> Web access to the files directory should not be allowed
Check the .htaccess file and the web server configuration.
Une idée ?
MOrgan
Salut salut,
Merci pour ce super tuto,
Pour l’erreur
« L’accès web au dossier « files » ne devrait pas être autorisé
Vérifier le fichier .htaccess et la configuration du serveur web »
Il faut ajouter dans le fichier /etc/nginx/sites-enabled/glpi les lignes ci dessous :
location ~ /files{
deny all;
}
Puis il faut redémarrer le service Nginx
Salut ! déjà super process ! j’ai un problème quand je veux installer GLPI le « Test d’écriture des fichiers de cache » me signale que « le dossier n’a pas été créé ».
Merci énormément, on m’a demandé de déployer GLPI pour un client hier, c’est installé aujourd’hui grâce à toi.
Je crois qu’il manque juste un ptit : chown :www-data _cache à un moment pour éviter une erreur lors du lancement du setup, mais MERCI BEAUCOUP QUAND MÊME!!!
Salut et merci pour ton super tuto, mais j’ai un erreur lors du test de connexion à la base de données :
Impossible de se connecter à la base de données
Le serveur a répondu : php_network_getaddresses: getaddrinfo failed: Temporary failure in name resolution
Une idée ?
Bonjour,
J’ai pas de mérite je ne fait que reprendre ce qui à déjà été indiqué. Je me contente juste de centraliser les infos manquantes au tuto qui sont éparpillées dans différents commentaires.
Merci à tous, vos expériences m’ont vraiment aidé à finaliser mon installation.
Dans ta procédure il faut ajouter l’extension php-cas [# apt install php-cas]
Il faut aussi ajouter [# chown -R www-data:www-data glpi/] en mode brutasse ou plus finement [#chgrp www-data /var/www/html/glpi/{config,files,files_{dumps,sessions,cron,graphs,lock,plugins,tmp,rss,uploads,pictures,log,cache}}]
et enfin modifié [#nano /etc/nginx/sites-enabled/glpi]
server {
listen 80 default_server;
root /var/www/html;
index index.php;
server_name localhost;
location / {try_files $uri $uri/ index.php;}
#prise en charge PHP
location ~ \.php$ {
fastcgi_pass 127.0.0.1:9000;
fastcgi_index index.php;
include /etc/nginx/fastcgi_params;
fastcgi_param SCRIPT_FILENAME $document_root$fastcgi_script_name;
include fastcgi_params;
fastcgi_param SERVER_NAME $host;
}
location ~ /files{
deny all;
}
}