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


Afin de tester CMS Made simple version 2.2 j'ai installé sur une machine 32 bits une version de PHP7.0.x avec MariaDB sur une Debian 9 Stretch.

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 gedit peut être remplacer par mousepad ou autre.


A - Préparation et installation

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


3. test

- http://localhost/ Afficher Apache2 Debian Default Page
le fichier index.html se trouve dans /var/www/html/


4. Installation de PHP7.0

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

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(); ?>

Tester avec http://localhost/phpinfo.php
Cela affichera le contenu du phpinfo
avec PHP Version 7.0.15-1
et DOCUMENT_ROOT /var/www/html


4. 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


5 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


5a. 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:
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)
MariaDB [mysql]> exit;
Bye

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.


5b. Création d"un base de donnée avec MariaDB pour gérer une seule base de données

Création d'une base de données : cmsdb

mysql -u root -p
Enter password:
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

Contrôle de la création de la base en root

root@debian:/home/linux# mysql -u root -p
Enter password:
MariaDB [(none)]> SHOW DATABASES;
+--------------------+
| Database
+--------------------+
| cmsdb
| information_schema
| mysql
| performance_schema
+--------------------+
4 rows in set (0.01 sec)

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:
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 si besoin une version plus récente
- le fichier adminer-4.2.5-mysql.php sera renommer en en adminer..php.
Se connecter avec 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 http://localhost/phpmyadmin/index.php

phpmyadmin

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

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


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

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

Commenter cette ligne
;error_reporting = E_ALL & ~E_DEPRECATED & ~E_STRICT

Ajouter
error_reporting = E_ALL | E_STRICT

Commenter cette ligne
;display_errors = Off

Ajouter
display_errors = On

Rechercher
;date.timezone =

Ajouter
date.timezone = Europe/Paris

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

Ajouter
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

1. Créer un dossier nommé 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
Remplacer le texte existant par

<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 fichier .htacces
</Directory>
</VirtualHost>


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 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 et dans le dossier /etc/apache2/mods-enabled/rewrite.load


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


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


Document http://jc.etiemble.free.fr/abc/ JCE -
version du 22/07/2017-0 CC_licence


Page précédente : Debian8+PHP7.1
Page suivante : LAMP en HTTPS