From Mageia wiki
Jump to: navigation, search
Drakconf multiflag.png
Autres langues

English ; Français


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.

Présentation

Lamp logo.gif

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.

Services httpd et mysqld démarrés et activés
  • 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 httpd 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 tenir stoppé.

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 activer le service au démarrage.

# systemctl enable httpd.service

Pour démarrer le service.

# systemctl start httpd.service

Pour arrêter le service.

# systemctl stop httpd.service

Pour désactiver le service au démarrage.

# systemctl disable 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.
Notepad.png
À noter !

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.

Konsole.png
[root@computer ~]# ip addr sho enp1s0 | grep inet | awk '{ print $2 ; }' | sed 's/\/.*$//'
[root@computer ~]# _



Le serveur Apache en action

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

Notepad.png
À noter !
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.

Notepad.png
À noter !
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 activer le service au démarrage.

# systemctl enable mysqld.service

Pour démarrer le service.

# systemctl start mysqld.service

Pour arrêter le service.

# systemctl stop mysqld.service

Pour désactiver le service au démarrage.

# systemctl disable mysqld.service
Warning.png
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.

Konsole.png
[root@computer ~]# mysql_secure_installation
[root@computer ~]# _


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 sudoers :

# systemctl restart mysqld.system

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)

Notepad.png
À noter !
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.
Notepad.png
À noter !
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 vous devriez pouvoir afficher la page d’accueil PHP, ci-après.

Le serveur PHP en action

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 :

localhost/phpmyadmin
Le serveur phpMyAdmin en action


Dans l’interface, inscrire le mot de passe que vous avez créé précédement en tant qu’utilisateur root. Au premier lancement de phpMyAdmin une erreur s’affiche par l’absence du répertoire tmp.

$cfg.png

Pour remédier à ce problème, nous créons ce dossier dans /usr/share/phpmyadmin/ en tant que root ou en mode sudoers.


Konsole.png
[root@computer ~]# cd /usr/share/phpmyadmin && mkdir tmp
[root@computer ~]# _

Nous faisons de même pour accorder les droits en lecture et écriture pour le répertoire tmp/.


Konsole.png
[root@computer ~]# chmod 700 tmp/
[root@computer ~]# _

Donner les droits de propriété à apache au répertoire tmp/.


Konsole.png
[root@computer ~]# chown apache:apache /usr/share/phpmyadmin/tmp
[root@computer ~]# _


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.

PhpMyadmin Comtes utilisateurs.png
  • Pour ce faire aller dans l’onglet Comptes utilisateurs -> Ajouter un compte utilisateur. Saisisser 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
  1. cocher Créer une base portant son nom et donner à cet utilisateur tous les privilèges sur cette base.
  2. cocher Accorder tous les privilèges à un nom passe-partout (utilisateur\_%).
  • Privilèges globaux
  1. 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
  1. Cocher uniquement Données et Structure
Warning.png
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.

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


Konsole.png
[root@computer ~]# cd /etc/httpd/conf/sites.d
[root@computer ~]# _

Éditer le fichier phpmyadmin.conf.


Konsole.png
[root@computer ~]# vim phpmyadmin.conf
[root@computer ~]# _


# 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
Localhost LeNomQueVousSouhaitez.png

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.