Autres langues English ; français |
Résumé : Cette page va vous permettre de mettre en place un serveur web, propulsé par Apache, motorisé par PHP en utilisant une base de données MariaDB. |
Contents
Présentation

Chacun de ces logiciels sont indépendants et ont une fonction précise.
LAMP est un acronyme :
- Linux est le système d’exploitation qui dirige l’utilisation des ressources d’un ordinateur.
- Apache est le serveur HTTP
- MySQL est le serveur de gestion de bases de données relationnelles, remplacé par MariaDB
- PHP est un langage de programmation interprété
Bien entendu, ces logiciels sont les plus populaires, mais ils peuvent être substitués par d’autres : Linux par Windows (contre-indiqué !), Apache par Lighttpd ou Nginx, MySQL par MariaDB ou Drizzle, PHP par Python ou Perl.
Avec LAMP, nous pouvons donc mettre en place un serveur Web, hébergeant un site web dynamique écrit en PHP, tout en allant chercher des données dans une base MySQL/MariaDB.
Certaines distributions dont Mageia, proposent un métapaquet appelé LAMP pour installer le tout en une seule commande.
Mageia a fait le choix dès sa version 2 de privilégier la bifurcation de Mysql qui se nomme MariaDB. Vous ne remarquerez aucune différence notable entre ces deux logiciels à l’usage.
Installation
Pour commencer l’installation de votre serveur LAMP, votre base urpmi doit être à jour. Ensuite seulement…
Pour ce faire saisissez la commande suivante : urpmi.update -a
Installer le méta-paquetage task-lamp-php
pour mettre en œuvre tous les services associés (Apache, MySQL/MariaDB et PHP)
Dans un terminal, saisissez la commande suivante : urpmi task-lamp-php
Ou simplement avec le Centre de Contrôle de Mageia.
Apache : le serveur web (1/4)
Solution N° 1 le serveur Apache peut être démarré en mode graphique.
|
Solution N° 2 le serveur Apache peut être démarré avec un terminal.
- Dans un terminal en tant que root (super utilisateur) vous pouvez saisir ces commandes :
Pour vérifier l’état.
# systemctl status httpd.service |
Pour lancer le service si celui est inactif
# systemctl start httpd.service |
Pour lancer le service si celui est déjà actif
# systemctl restart httpd.service |
Pour activer le service au démarrage.
# systemctl enable httpd.service |
Pour désactiver le service au démarrage.
# systemctl disable httpd.service |
Pour arrêter le service.
# systemctl stop httpd.service |
- Pour vérifier que le serveur Apache fonctionne saisissez dans la barre d’adresse de votre navigateur préféré (Firefox) «localhost». It works doit s’afficher, comme l’indique l’image ci-dessous.
Remarque : Pour connaître l’adresse IP d’un serveur, saisissez cette commande soit en tant que root ou en mode sudo, qui vous indiquera à coup sûr la destination de votre serveur local. Il faut évidemment remplacer ce nom par celui de votre carte réseau. Pour identifier le nom de celle-ci, écrire la commande ip address ou ip link . Dans le cas présent, le nom de la carte réseau est enp1s0.
|
# ip addr sho enp1s0 | grep inet | awk '{ print $2 ; }' | sed 's/\/.* $//' |
Changer votre répertoire de travail
Par défaut, le répertoire de travail se situe dans /var/www/html/
. Vous pouvez, si vous le souhaitez modifier cet état de fait. Pour cela le fichier de configuration se trouve dans le dossier /etc/httpd/conf/
.
Modifier la ligne 117 contenant l’expression DocumentRoot dans le ficher httpd.conf
. Modifier aussi les lignes 122 et 129 <Directory "/var/www"> tout en respectant la structure.
Pour que ce nouveau répertoire soit pris en compte saisir la commande ci-après :
# systemctl reload httpd.service |
Le changement de répertoire est effectif mais celui-ci est vide, la page s’affiche donc avec un index of /. Pour remédier à cela, créer un fichier index.html ou copier celui inscrit dans le dossier /var/www/html/
vers votre dossier nouvellement créé.
Remarque : Penser à raffraichir la page de votre navigateur, pour prendre en compte votre nouvel index.html
|
MariaDB : le serveur de base de données (2/4)
Solution N° 1 le serveur MariaDB peut être démarré en mode graphique.
- Pour ce faire, après avoir lancé le centre de contrôle Mageia, dans
Sytème -> Gérer les services système en les (dés) activant
- Pour pouvoir démarrer le service, cocher la case mysqld pour le rendre disponible pendant des phases de démarrage du système. Cliquer sur le bouton démarrer pour le rendre actif ou arrêter pour le stopper.
Solution N° 2 le serveur MariaDB peut être démarré avec un terminal.
Remarque : Cela peut être déroutant pour un débutant, quand vous allez exécuter ces commandes pour la première fois (MySQL/MariaDB), mais nous avons bien affaire à MariaDB |
- Dans un terminal en tant que root (super utilisateur) vous pouvez saisir ces commandes :
Pour vérifier l’état.
# systemctl status mysqld.service |
Pour démarrer le service.
# systemctl start mysqld.service |
Pour activer le service au démarrage.
# systemctl enable mysqld.service |
Pour désactiver le service au démarrage.
# systemctl disable mysqld.service |
Pour arrêter le service.
# systemctl stop mysqld.service |
Attention ! MariaDB est installé sans mot de passe root, il est recommandé de définir le mot de passe root avec la commande suivante dès que possible : mysql_secure_installation .
|
# mysql_secure_installation |
NOTE: RUNNING ALL PARTS OF THIS SCRIPT IS RECOMMENDED FOR ALL MariaDB SERVERS IN PRODUCTION USE! PLEASE READ EACH STEP CAREFULLY! In order to log into MariaDB to secure it, we'll need the current password for the root user. If you've just installed MariaDB, and you haven't set the root password yet, the password will be blank, so you should just press enter here. Enter current password for root (enter for none): OK, successfully used password, moving on... Setting the root password ensures that nobody can log into the MariaDB root user without the proper authorisation. You already have a root password set, so you can safely answer 'n'. Change the root password? [Y/n] New password: Re-enter new password: Password updated successfully! Reloading privilege tables. ... Success! |
- Les questions qui suivent vont sécuriser l’installation de votre base de données. Vous pouvez laisser les options par défaut et valider par [Entrée] à chacune d’entre elles.
By default, a MariaDB installation has an anonymous user, allowing anyone to log into MariaDB without having to have a user account created for them. This is intended only for testing, and to make the installation go a bit smoother. You should remove them before moving into a production environment. Remove anonymous users?[Y/n] ... Success! Normally, root should only be allowed to connect from 'localhost'. This ensures that someone cannot guess at the root password from the network. Disallow root login remotely? [Y/n] ... Success! By default, MariaDB comes with a database named 'test' that anyone can access. This is also intended only for testing, and should be removed before moving into a production environment. Remove test database and access to it? [Y/n] - Dropping test database... ... Success! - Removing privileges on test database... ... Success! Reloading the privilege tables will ensure that all changes made so far will take effect immediately. Reload privilege tables now? [Y/n] ... Success! Cleaning up... All done! If you've completed all of the above steps, your MariaDB installation should now be secure. Thanks for using MariaDB! |
Tester MariaDB
Maintenant que les paramètres sont renseignés, tester MariaDB. Bien s’assurer que MariaDB est démarré avec la commande suivante en tant que root ou en mode sudo :
# systemctl restart mysqld.service |
Vous pouvez vous connecter à la base de données.
# mysql -u root -p |
Incriver votre mot de passe root créé précédemment.
Enter password: Welcome to the MariaDB monitor. Commands end with ; or \g. Your MariaDB connection id is 8 Server version: 10.3.12-MariaDB Mageia MariaDB Server Copyright (c) 2000, 2018, Oracle, MariaDB Corporation Ab and others. Type 'help;' or '\h' for help. Type '\c' to clear the current input statement. MariaDB [(none)]> show databases; +--------------------+ | Database | +--------------------+ | information_schema | | mysql | | performance_schema | +--------------------+ 3 rows in set (0.004 sec) MariaDB [(none)]> |
Pour quitter la base de données
exit
PHP : le serveur de contenu (3/4)
Remarque : Vérifier que le paquet apache-mod_php est bien installé et que le service httpd soit redémarré. |
En vue d’augmenter les capacités de l’interpréteur PHP, installer les paquetages suivant. Bien sûr, ce n’est pas une obligation.
- php-bcmath : Pour les calculs mathématiques d’une grande précision
- php-dba : couche d’abstraction de base de données pour applications PHP.
- php-enchant : Enchant fournit une uniformité et une conformité pour toutes les bibliothèques d’orthographe
- php-fpm : gestionnaire de processus FastCGI avec des fonctionnalités supplémentaires utiles pour les sites très fortement chargés.
Remarque : Pour savoir si un paquetage est déjà installé ou non sur le système, exécuter la commande suivante : urpmq --fuzzy NomDuPaquet
|
Tester PHP
Pour vérifier que le système est configuré convenablement, créer un script PHP dans cet exemple info.php, puis tenter de l’afficher avec votre navigateur web.
echo "<?php phpinfo();?>" >>/var/www/html/info.php && chmod a+r /var/www/html/info.php |
Dès lors, quand vous saisissez l’url http://<NomDeVotreServeur>/info.php, dans le cas présent http://localhost/info.php
Attention ! Si vous avez changé votre répertoire de travail, pensez à indiquer le bon pour que la page s’affiche |
vous devriez pouvoir afficher la page d’accueil PHP, ci-après.
phpMyAdmin, une interface conviviale (4/4)
Cette application permet de gérer sa base de données avec une interface web beaucoup plus conviviale que la console.
Pour démarrer phpMyAdmin, dans la barre d’adresse de votre navigateur, saisissez :
http://localhost/phpmyadmin |
Si votre serveur ne dispose pas d’interface graphique, vous pouvez accéder à phpMyAdmin depuis un autre ordinateur de votre réseau. Pour cela il faut modifier le fichier phpmyadmin.conf pour y déclarer l’adresse IP de la machine client. Vous pouvez modifier ce fichier à l’aide d’un éditeur de texte tel que Vim ou Nano, le fichier se trouve dans le dossier /etc/httpd/conf/site.d/
# cd /etc/httpd/conf/site.d/ |
# vim phpmyadmin.conf |
# phpMyAdmin - Web based MySQL browser written in php # # Allows only localhost by default # # But allowing phpMyAdmin to anyone other than localhost should be considered # dangerous unless properly secured by SSL Alias /phpmyadmin /usr/share/phpmyadmin <Directory /usr/share/phpmyadmin/> <IfModule mod_authz_core.c> # Apache 2.4 <RequireAny> Require ip 127.0.0.1 Require ip 192.168.1.x Require ip ::1 </RequireAny> </IfModule> <IfModule !mod_authz_core.c> # Apache 2.2 Order Deny,Allow Deny from All Allow from 127.0.0.1 Allow from 191.168.1.x Allow from ::1 </IfModule> ErrorDocument 403 "Access denied per /etc/httpd/conf/webapps.d/phpmyadmin.conf" php_flag session.auto_start 0 </Directory> <Directory /usr/share/phpmyadmin/setup/> <IfModule mod_authz_core.c> # Apache 2.4 <RequireAny> Require ip 127.0.0.1 Require ip 192.168.1.x Require ip ::1 </RequireAny> </IfModule> <IfModule !mod_authz_core.c> # Apache 2.2 Order Deny,Allow Deny from All Allow from 127.0.0.1 Allow from 192.168.1.x Allow from ::1 </IfModule> ErrorDocument 403 "Access denied per /etc/httpd/conf/webapps.d/phpmyadmin.conf" </Directory> |
Une fois modifié, il ne reste plus qu’à saisir dans la barre du navigateur hôte :
http://192.168.1.x/phpmyadmin |
Dans l’interface, inscrire le mot de passe que vous avez créé précédemment en tant qu’utilisateur root.
Au premier lancement de phpMyAdmin une erreur s’affiche par l’absence du répertoire tmp.
Pour remédier à ce problème, nous créons ce dossier dans /usr/share/phpmyadmin/
en tant que root ou en mode sudo.
$ cd /usr/share/phpmyadmin && mkdir tmp |
Nous faisons de même pour accorder les droits en lecture et écriture pour le répertoire tmp/
.
# chmod 700 tmp/ |
Donner les droits de propriété à apache au répertoire tmp/
.
# chown apache:apache /usr/share/phpmyadmin/tmp |
Sécuriser phpMyAdmin
Par défaut, dans phpMyAdmin, le compte administrateur est nommé root. Un attaquant possède déjà 50% de la solution, et, doit seulement se concentrer sur la recherche du mot de passe. Je sais, nous sommes sur une installation en local, mais il est de bon ton de faire les choses au mieux.
Premièrement, il est vivement conseillé de créer un autre compte administrateur avec un nom farfelu.
- Pour ce faire aller dans l’onglet
Comptes utilisateurs -> Ajouter un compte utilisateur
. Saisissez un Nom d’utilisateur et un Mot de passe suffisamment complexe. Pour le Nom d’hôte, rester en Local. - Base de données pour ce compte d’utilisateur
- cocher Créer une base portant son nom et donner à cet utilisateur tous les privilèges sur cette base.
- cocher Accorder tous les privilèges à un nom passe-partout (utilisateur\_%).
- Privilèges globaux
- Cocher Tout cocher, ce qui aura pour effet de sélectionner Données, Structure, Administration
- Pour finaliser la création du compte administrateur nouvellement créé cliquer sur Exécuter.
Deuxièmement, il est plus qu’indiqué de créer un compte utilisateur avec des droits limités pour faire le travail routinier. Cela limitera toute maladresse éventuelle.
- Répéter les opérations précédentes excepté dans Privilèges globaux
- Cocher uniquement Données et Structure
Attention ! Lors de la création de votre utilisateur root ou ordinaire, ne pas mettre d’accents sur les mots. Lors de la connexion à phpMyAdmin l’accentuation n’est pas gérée. |
Troisièmement, vous pouvez maintenant retirer les comptes par défaut root Retirer les comptes utilisateurs sélectionnés
.
- Cocher Supprimer les bases de données portant le même nom que les utilisateurs.
Quatrièmement, il est souhaitable de sécuriser l’adresse web qui est prédéfini comme http://localhost/phpmyadmin/. Nous allons modifier cet état de fait pour plus de sécurisation. Encore une fois, ce n’est pas nécessaire parce que nous sommes en local sur notre propre machine, mais sur une machine distante ce n’est pas la même chose. Par conséquent il vaut mieux être plus vigilant que pas assez.
# cd /etc/httpd/conf/sites.d |
Éditer le fichier phpmyadmin.conf
.
# vim phpmyadmin.conf |
# phpMyAdmin - Web based MySQL browser written in php # # Allows only localhost by default # # But allowing phpMyAdmin to anyone other than localhost should be considered # dangerous unless properly secured by SSL |
Alias /LeNomQueVousSouhaitez /usr/share/phpmyadmin
Mettez l’alias que vous voulez. Si celui-ci est LeNomQueVousSouhaitez votre adresse web aura la forme suivante : http://localhost/LeNomQueVousSouhaitez/. Pour que les modifications soient prises en compte saisissez cette commande.
# systemctl reload httpd.service |
Les liens par défaut
Saisissez dans la barre d’adresse : http://127.0.0.1/ Si la page affiche : « It works ! » apache est bien installé.
L’accès à phpmyadmin : http://127.0.0.1/phpmyadmin
Bienvenue à phpMyAdmin
login : root
par défaut
pass :
L’accès aux pages : http://127.0.0.1/
L’accès au dossier de travail est ici : /var/www/html/
Ajouter le SSL
Essayer d’ouvrir d’abord :
https://127.0.0.1/
Si vous obtenez une page « erreur ».
Installer le paquet depuis le centre de contrôle Mageia :
apache-mod_ssl
Relancer :
https://127.0.0.1/
Confirmer l’exception de sécurité.
Ainsi se termine ce tutoriel, avec l’aide précieuse de cette documentation et de celle-ci et bien d’autres informations glaner sur le web.