Tester en local sous Debian 9.x + PHP 7.0.x + MariaDB


Le but de ce mode d'emploi est de créer en local, un serveur de tests dans le home/dossier_personnel/ par un VirtualHost afin de pouvoir effectuer simplement les manipulations et sauvegardes des CMS.

Dans l'exemple suivant j'ai installé sur une machine 32 bits une version de PHP7.0.x avec MariaDB sur une Debian 9 Stretch.
Nota que ce soit 32 ou 64 bits la solution est la même à quelques détails prêt en fonction de la date où vous installez !

Cette version de Debian 9 est fournie avec PHP 7.0.15-1 au moment de ce test.
Il faut donc installer Apache, PHP et mariadb-server.
(le paquet mysql-server n'est plus disponible)

Les manipulations sont faites en ligne de commande (plus simple à reproduire ici)
Uniquement pour tests et information "à vos risques et périls" ;-)
Nota suivant la distribution Linux le logiciel éditeur de texte mousepad peut être remplacer gedit , geany par ou autre a votre convenance.


A - Préparation et installation
(Terminal administrateur)

1. mise à jour des paquets

apt-get update

2. Installation de Apache

apt-get install apache2

Les NOUVEAUX paquets suivants seront installés :
apache2 apache2-bin apache2-data apache2-utils libapr1 libaprutil1
libaprutil1-dbd-sqlite3 libaprutil1-ldap
Ici se sera Apache 2.4.x


3. test

- dans la barre d’adresse du navigateur : http://localhost/  
pour afficher la page (index.html) : Apache2 Debian Default Page - It works!-
NOTA : le fichier index.html se trouve dans /var/www/html/

apache

4. Installation de PHP7.0

Attention le code ci-dessous doit être sur une seule ligne
apt install php7.0 libapache2-mod-php7.0 php7.0-mysql php7.0-curl php7.0-json php7.0-gd php7.0-mcrypt php7.0-intl php7.0-sqlite3 php7.0-gmp php7.0-mbstring  php7.0-xml php7.0-zip

Cela doit afficher sur le terminal
apt install php7.0 libapache2-mod-php7.0 php7.0-mysql php7.0-curl php7.0-json
php7.0-gd php7.0-mcrypt php7.0-intl php7.0-sqlite3 php7.0-gmp php7.0-mbstring
php7.0-xml php7.0-zip
Supprimer éventuellement les modules qui ne vous intéressent pas

The following additional packages will be installed:
libcurl3 libmcrypt4 libzip4 php-common php7.0-cli php7.0-common
php7.0-opcache php7.0-readline
Paquets suggérés :
php-pear libmcrypt-dev mcrypt
Les NOUVEAUX paquets suivants seront installés :
libapache2-mod-php7.0 libcurl3 libmcrypt4 libzip4 php-common php7.0
php7.0-cli php7.0-common php7.0-curl php7.0-gd php7.0-gmp php7.0-intl
php7.0-json php7.0-mbstring php7.0-mcrypt php7.0-mysql php7.0-opcache
php7.0-readline php7.0-sqlite3 php7.0-xml php7.0-zip

Puis une fois l'installation terminée
(pour relancer le serveur)
service apache2 restart


Créer en root dans /var/www/html/
un fichier phpinfo.php avec
 <?php phpinfo(); ?>
Ou bien en ligne de commande entrer la ligne suivante
 echo '<?php phpinfo(); ?>' >/var/www/html/phpinfo.php

Tester avec dans la barre d’adresse du navigateur : http://localhost/phpinfo.php
Cela affichera le contenu du phpinfo
avec PHP Version 7.0.xx
et DOCUMENT_ROOT /var/www/html
phpinfo70


5. Installation de MariaDB
(mariadb-server-10.1)

apt install mariadb-server-10.1

The following additional packages will be installed:
galera-3 gawk libaio1 libcgi-fast-perl libcgi-pm-perl libdbd-mysql-perl
libdbi-perl libfcgi-perl libhtml-template-perl libjemalloc1
libmariadbclient18 libreadline5 libterm-readkey-perl mariadb-client-10.1
mariadb-client-core-10.1 mariadb-common mariadb-server-core-10.1
mysql-common rsync socat
Paquets suggérés :
gawk-doc libclone-perl libmldbm-perl libnet-daemon-perl
libsql-statement-perl libipc-sharedcache-perl mailx mariadb-test
netcat-openbsd tinyca openssh-server
Les NOUVEAUX paquets suivants seront installés :
galera-3 gawk libaio1 libcgi-fast-perl libcgi-pm-perl libdbd-mysql-perl
libdbi-perl libfcgi-perl libhtml-template-perl libjemalloc1
libmariadbclient18 libreadline5 libterm-readkey-perl mariadb-client-10.1
mariadb-client-core-10.1 mariadb-common mariadb-server-10.1
mariadb-server-core-10.1 mysql-common rsync socat

Puis une fois l'installation terminée (pour relancer le serveur)
service apache2 restart


5a. Gestion des bases de données avec MariaDB

Affichage de la version
mysql -V 
mysql Ver 15.1 Distrib 10.1.21-MariaDB, for debian-linux-gnu (i686) using readline 5.2

Au cas ou on souhaite se connecter aux base de données créées soit avec PhpMyAdmin ou Adminer sans mot de passe, il suffit de passer en mysqld_safe

service mysql stop
mysqld_safe --skip-grant-tables &

[1] 1729
170213 15:14:45 mysqld_safe Logging to syslog.
170213 15:14:45 mysqld_safe Starting mysqld daemon with databases from /var/lib/mysql
Et a partir ce ce moment la connexion est possible sans mot de passe


5b. Création d'un mot de passe pour le compte "root" avec MariaDB pour gérer toutes les bases de données avec ce seul compte
- Par défaut le compte root, le mot de passe est vide donc impossible de se connecter avec Adminer

 mysql -u root -p mysql
Enter password:
NOTA:tapez sur la touche entrée pour valider
Welcome to the MariaDB monitor. Commands end with ; or \g.
Your MariaDB connection id is 2
Server version: 10.1.21-MariaDB-5 Debian 9.0
Copyright (c) 2000, 2016, Oracle, MariaDB Corporation Ab and others.
Type 'help;' or '\h' for help. Type '\c' to clear the current input statement.

MariaDB [mysql]>
MariaDB [mysql]> GRANT ALL PRIVILEGES ON *.* TO root@'localhost' IDENTIFIED BY 'monpass';
Query OK, 0 rows affected (0.00 sec)
Nota pour sortir utiliser les touches Contrôle + C (Ctrl-C = exit)
MariaDB [mysql]> exit;
Bye

Remplacer bien sur "monpass" par votre mot de passe root choisi
Il sera alors possible de se connecter avec adminer avec les identifiant "root" et "monpass" et d'avoir accès à la gestion des toutes les bases de données.

5c. Création d'une base de données avec MariaDB pour gérer une seule base de données

Exemple : création d'une base de données : cmsdb 
- avec un utilisateur cmsuser avec mot de passe mdpuser

mysql -u root -p
Enter password:
NOTA: Tapez "votre_mot_de_passe_root_choisi" puis touche entrée pour valider
Welcome to the MariaDB monitor. Commands end with ; or \g.
Your MariaDB connection id is 2
Server version: 10.1.21-MariaDB-5 Debian 9.0
Copyright (c) 2000, 2016, Oracle, MariaDB Corporation Ab and others.
Type 'help;' or '\h' for help. Type '\c' to clear the current input statement.
MariaDB [(none)]>

MariaDB [(none)]> create database cmsdb;
Query OK, 1 row affected (0.00 sec)

MariaDB [(none)]> create user cmsuser@localhost identified by 'mdpuser';
Query OK, 0 rows affected (0.00 sec)

MariaDB [(none)]> grant all privileges on cmsdb.* to cmsuser@localhost identified by 'mdpuser';
Query OK, 0 rows affected (0.01 sec)

MariaDB [(none)]> flush privileges;
Query OK, 0 rows affected (0.00 sec)

MariaDB [(none)]> exit;
Bye

5d. Contrôle de la création de la base en root

root@debian:/home/linux# mysql -u root -p
Enter password:
NOTA : Tappez "votre_mot_de_passe_root_choisi" puis touche entrée pour valider
MariaDB [(none)]> SHOW DATABASES;
+--------------------+
| Database
+--------------------+
| cmsdb
| information_schema
| mysql
| performance_schema
+--------------------+
4 rows in set (0.01 sec)

5e. Contrôle de la création de la base cmsuser (password mdpuser)

mysql -u 'cmsuser' -p  
root@debian:/home/linux# mysql -u 'cmsuser' -p
Enter password:
NOTA : Tappez "mdpuser" puis touche entrée pour valider
MariaDB [(none)]> SHOW DATABASES;
+--------------------+
| Database
+--------------------+
| cmsdb
| information_schema
+--------------------+
2 rows in set (0.00 sec)



6. Télécharger et mettre en place Adminer Editor 4.2.5 for MySQL utiliser ici lors du test - voir une version plus récente
Il est plutôt conseillé d'installer Adminer que phpMyadmin.
C'est plus simple plus sur et aussi facile à gérer en local
- plus simple un seul fichier qu l'on place ou on veux (prendre uniquement dans ce cas le fichier unique depuis le site Adminer (le premier de la liste) et non pas le paquet Debian)
- plus sur, moins de bugs et corrections.
- le fichier adminer-4.2.5-mysql.php sera renommer en en adminer..php.
Se connecter avec dans la barre d’adresse du navigateur : http://localhost/adminer.php pour afficher la base de données

Adminer

7. Pour phpmyadmin j'utilise Synaptic (pour changer)

dbconfig-common (version 2.0.8) sera installé
dbconfig-mysql (version 2.0.8) sera installé
php-bz2 (version 1:7.0+49) sera installé
php-mysql (version 1:7.0+49) sera installé
php-pear (version 1:1.10.1+submodules+notgz-9) sera installé
php-php-gettext (version 1.0.12-0.1) sera installé
php-phpseclib (version 2.0.4-1) sera installé
php-tcpdf (version 6.2.12+dfsg2-1) sera installé
php7.0-bz2 (version 7.0.15-1) sera installé
phpmyadmin (version 4:4.6.6-1) sera installé

se connecter avec dans la barre d’adresse du navigateur : http://localhost/phpmyadmin/index.php

phpmyadmin

PhpMyAdmin a créé une table en base de données

Vérifions avec MariaDB entrer : mysql -u root -p
root@debian:/home/linux# mysql -u root -p
Enter password:
MariaDB [(none)]> SHOW DATABASES;
+--------------------+
| Database
+--------------------+
| cmsdb
| information_schema
| mysql
| performance_schema
| phpmyadmin
+--------------------+


B - Manipulations et ajouts


1. Modifications du php.ni pour affichage des erreurs, date et PHAR

gksudo mousepad /etc/php/7.0/apache2/php.ini

Commenter cette ligne en ajoutant le point virgule ; devant
;error_reporting = E_ALL & ~E_DEPRECATED & ~E_STRICT

Ajouter (pour afficher les erreurs d'exécution de script et les erreurs E_STRICT)
error_reporting = E_ALL | E_STRICT

Commenter cette ligne en ajoutant le point virgule ; devant
;display_errors = Off

Ajouter  (Pour afficher les erreurs à l'écran)
display_errors = On

Rechercher
;date.timezone =

Ajouter  (Pour afficher le fuseau horaire de Paris)
date.timezone = Europe/Paris

Rechercher
[Phar]
; http://php.net/phar.readonly
;phar.readonly = On

Ajouter (Permet la création des archives Phar)
phar.readonly = Off

Puis pour relancer le serveur
service apache2 restart ou systemctl reload apache2

Dans le phpinfo.php error_reporting est passé de 22527 à 32767


C - Création d'un dossier de test dans home
En remplacement du traditionnel /var/www/html/, afin de pouvoir effectuer simplement les manipulations et sauvegardes des CMS
Nota : ici linux est le nom de mon répertoire personnel
donc le dossier de test des sites Web sites sera  /home/linux/sites (adapter suivant vos besoins

1. Créer un dossier  (dossier de test des sites Web) nommé ici sites avec CHMOD 777

2. Création d'un VirtualHost

cd /etc/apache2/sites-available
cp 000-default.conf sites.local.conf
gksudo mousepad /etc/apache2/sites-available/sites.local.conf

Ajuster les noms ici linux (répertoire personnel) et sites (dossier de tests des sites Web) suivant vos besoins ;)

<VirtualHost *:80>
ServerAdmin sites@localhost
DocumentRoot /home/linux/sites
ServerName sites
<Directory /home/linux/sites/>
Require all granted
AllowOverride All
# pour mode rewrite et autoriser les fichiers .htacces
</Directory>
</VirtualHost>
Compléter éventuellement suivant vos besoins

3. Activer le VirtualHost

a2ensite sites.local.conf
Enabling site sites.local.
To activate the new configuration, you need to run:
systemctl reload apache2
relancer Apache
 systemctl reload apache2

4. Editer le fichier hosts pour ajouter

gksudo mousepad /etc/hosts

et ajouter
127.0.0.1 sites


relancer Apache
systemctl reload apache2



5 Créer aussi un fichier phpinfo.php dans le dossier /sites avec
 <?php phpinfo(); ?>
Tester avec http://sites/phpinfo.php
Cela affichera le contenu du phpinfo
avec PHP Version 7.0.15-1
et DOCUMENT_ROOT /home/linux/sites

6. Ajouter le mode rewrite

 a2enmod rewrite
Enabling module rewrite.
To activate the new configuration, you need to run:
systemctl restart apache2
## relancer Apache
systemctl reload apache2

Note dans phpinfo
Loaded Modules : mod_rewrite est dans le dossier /etc/apache2/mods-enabled/rewrite.load


Il ne reste plus qu'à tester les CMS ! pour moi c'est CMS made simple


Pour information si vous souhaitez installer une version plus récente de PHP il faut passer par le dépôt Debian DPA (de Ondřej Surý) : Actuelment c'est le paquet PHP 7.2.x Pour information voir Tester en local sous Debian 9.x + PHP 7.2.x



Crédit pour les affichages en ligne de commande : Syntax highlighting for the Web


Erreurs, omissions, corrections merci de me le signaler

Document http://jc.etiemble.free.fr/abc/ JCE - version du 25/04/2018-0 CC_licence


Page précédente : Debian8+PHP7.1
Page suivante : Debian9+PHP7.2