I. Introduction et mise en garde▲
Ce tutoriel présente les étapes minimales pour créer un petit serveur de test sur un réseau local. Ne l'utilisez pas pour créer un serveur professionnel sécurisé ! Il existe des tutoriels beaucoup plus complets et beaucoup plus orientés sécurité, pour le web et MySQL.
Dans ce qui suit, le réseau local en question est en 192.168.0.x et le nom d'utilisateur sur la machine virtuelle est alcatiz.
II. Étapes d'installation et de configuration▲
II-A. Installation du métapaquetage LAMP▲
LAMP est un métapaquetage, disponible dans les dépôts de la plupart des distributions Linux, qui permet d'installer de manière intégrée Apache, MySQL et PHP.
Dans le MCC (Mageia Control Center, le centre de contrôle de la distribution), au menu Gestion des logiciels, allez dans le module Installer et désinstaller des logiciels. Assurez-vous tout d'abord que le premier filtre, à gauche, vous permette de voir tous les logiciels (Tous, alors que seules les applications graphiques sont visibles par défaut). Dans le champ de recherche, tapez « task-lamp » :
Cochez le paquetage ainsi nommé puis cliquez sur Appliquer. Répondez par OK au dialogue de confirmation :
Les paquetages s'installent :
II-B. Apache▲
Lorsque l'installation est terminée, la première chose à faire est de voir si le serveur Apache est bien actif. Dans votre navigateur web, il suffit d'écrire dans la barre d'adresse « localhost ». Nous voyons tout de suite que cela ne fonctionne pas :
Ce n'est pas grave : il faut démarrer Apache dans le gestionnaire de services.
Retour dans le MCC, menu Système :
Cliquez sur Gérer les services système en les (dés)activant :
Mais aucun service ne s'appelle « Apache » !?! En effet : cherchez le service httpd et cliquez sur Démarrer. Apache est un serveur http et le « d » indique qu'il s'agit d'un « démon » (un service).
Ceci fait, réessayez en rafraîchissant la page sur votre navigateur :
Cette fois, ça marche (« It works ! ») !
II-C. PHP▲
Nous allons à présent tester le fonctionnement de PHP.
Pour ce faire, créons un petit script (dans l'éditeur de texte par défaut de Mageia), qui va afficher les informations relatives à la version et à la configuration de PHP :
<?php
phpinfo();
?>
Nommez le fichier info.php ; il devra être enregistré dans le répertoire /var/www/html. Ce répertoire est la racine par défaut du site web de test.
Impossible d'enregistrer ? Mais vous allez trop vite ! Il faut d'abord aller modifier les droits sur ce répertoire. Ouvrez la console, tapez « su » pour devenir superutilisateur, puis « cd /var/www » pour vous placer dans le bon répertoire. Tapez la commande « ls -al » : vous voyez que le répertoire html est la propriété de root.
Nous allons juste changer le propriétaire (utilisateur:groupe), grâce à la commande chown (« change owner ») :
chown alcatiz:alcatiz html
La mention du groupe n'est pas indispensable.
Remplacez évidemment « alcatiz:alcatiz » par votre nom d'utilisateur et votre groupe par défaut. Revérifiez avec la commande « ls -al » :
Cette fois, le fichier info.php doit s'enregistrer avec succès.
Retournez dans votre navigateur et tapez « localhost/info.php » dans la barre d'adresse :
Cela fonctionne !
Rappelons qu'il s'agit d'un petit serveur de test avec une sécurité minimaliste.
Normalement, pour des raisons de sécurité, on évite de changer les propriétés du dossier /var/www/html. On préférera créer un dossier nommé (par exemple) www dans son répertoire personnel et aller modifier le fichier httpd.conf se trouvant dans le répertoire /etc/httpd/conf (l'option s'appelle DocumentRoot).
II-D. MySQL▲
Nous allons tout d'abord tester si MySQL fonctionne dans la console. Tapez « mysql -u root » :
Une erreur 2002 nous indique que le service MySQL n'est pas actif. Hop, retour dans le MCC, Système et dans le gestionnaire de services. Cherchez le service mysqld et démarrez-le :
Réessayez la commande que vous avez tapée dans la console : cette fois, plus d'erreur 2002 mais une erreur 1045. Ce n'est pas grave. En tant que superutilisateur, tapez la même commande et vous constatez que vous aboutissez à la console MySQL (qui s'appelle en fait ici MariaDB, une déclinaison de MySQL de plus en plus utilisée) :
Nous allons commencer par créer un mot de passe pour l'utilisateur root de MySQL. Dans la console MariaDB, tapez la commande suivante :
set password for
root@localhost
=
PASSWORD
(
'mon_mot_de_passe'
);
Ceci fait, quittez la console MariaDB par la commande « exit ».
L'utilisateur root de MySQL n'a rien à voir avec le root de votre système Linux.
Pour que MySQL accepte les requêtes émanant du réseau local, il faut aller décommenter une ligne dans un fichier de configuration. Dans la console, tapez « su » pour devenir superutilisateur puis « mc » pour lancer Midnight Commander. Naviguez dans l'arborescence jusqu'au répertoire /etc puis éditez le fichier my.cnf (avec la touche F4).
Comme le fichier est long, tapez F7 pour faire une recherche textuelle. La chaîne à rechercher est « skip-networking » :
Une fois la ligne localisée, commentez-la en la faisant débuter par le caractère « # » :
Enregistrez le fichier avec la touche F2.
Dans le MCC, arrêtez le service mysqld et redémarrez-le tout simplement pour prendre en compte les modifications.
II-D-1. Pour changer le mot de passe root de MySQL▲
Si, ultérieurement, vous avez besoin de réinitialiser le mot de passe root de MySQL, voici la procédure à suivre (en ligne de commande dans la console, en tant que superutilisateur).
Stoppez le service MySQLÂ :
systemctl stop mysqld.service
Vous pourriez aussi l'arrêter via le MCC, comme précédemment, mais comme la suite se fait en ligne de commande, autant tout faire dans la console.
Redémarrez-le avec la commande suivante :
mysqld_safe --skip-grant-tables &
Lancez MySQL comme root :
mysql -u root
Il n'y a plus de mot de passe à taper à ce niveau.
L'invite de commande est à présent celle de MySQL. Nous allons inscrire le nouveau mot de passe dans les tables internes de MySQL :
use mysql;
update user set password
=
PASSWORD
(
"nouveau_mot_de_passe"
) where User
=
'root'
;
flush privileges;
La syntaxe est importante, y compris les points-virgules à la fin de chaque commande.
Quittez l'invite de commande de MySQLÂ :
quit
Il faut de nouveau stopper le service :
systemctl stop mysqld.service
Et le redémarrer :
systemctl start mysqld.service
Si vous utilisez une vieille version de Mageia, systemctl peut ne pas fonctionner. Il faudra donc faire :
- /etc/init.d/mysqld start pour démarrer le service ;
- /etc/init.d/mysqld stop pour l'arrêter ;
- /etc/init.d/mysqld restart pour le redémarrer.
II-E. phpMyAdmin▲
Nous allons tout de suite savoir si tout ce qui précède fonctionne en lançant phpMyAdmin dans le navigateur. Dans la barre d'adresse, tapez « localhost/phpmyadmin ».
Mettez « root » comme nom d'utilisateur et inscrivez le mot de passe que vous venez de créer dans la console MariaDB.
Formidable ! Cela fonctionne.
À présent, nous pouvons créer les tables internes à phpMyAdmin. C'est tout simple : pour ne pas se casser la tête, il suffit d'importer des tables prédéfinies que l'on trouve dans le répertoire /usr/share/phpmyadmin/examples. Dans la colonne de gauche, cliquez sur la base de données phpmyadmin puis, à droite, sur l'onglet Importer. Cliquez sur Parcourir et allez chercher le fichier create_tables.sql :
Une fois le fichier choisi, cliquez sur Exécuter au bas de la page : les tables internes sont créées.
Nous n'en avons pas fini avec phpMyAdmin : tel quel, il sera inaccessible depuis le réseau local. Il nous faut donc aller éditer le fichier /etc/httpd/conf/webapps.d/phpmyadmin.conf.
Direction la console, tapez « su » pour devenir superutilisateur puis « mc » pour lancer Midnight Commander. Naviguez dans l'arborescence jusqu'au répertoire /etc/httpd/conf/webapps.d puis éditez le fichier phpmyadmin.conf (touche F4). Comme dans l'image ci-dessous, ajoutez tout simplement « 192.168 » à la ligne « Require ip 127.0.0.1 » :
Enregistrez avec F2.
Tant que nous sommes dans Midnight Commander, il y a encore un fichier à modifier : /etc/phpmyadmin/config.inc.php. Il faut décommenter toutes les lignes de la section Storage database and tables :
Pour que ces modifications soient prises en compte, il faut retourner dans le gestionnaire de services du MCC, arrêter puis redémarrer le service httpd.
II-F. Configuration du pare-feu▲
Pour l'instant, tout fonctionne à condition de se trouver sur le serveur lui-même. Pour que cela puisse également fonctionner depuis les autres machines du réseau local, il faut configurer le pare-feu.
Dans le MCC, menu Sécurité, cliquez sur Configurer votre pare-feu personnel :
Dans la liste qui apparaît, cochez au minimum Serveur Web, Serveur FTP et tout ce que vous souhaitez rendre accessible : ping, SSH, etc. :
Ensuite, cliquez sur Avancé. Pour que des machines distantes puissent accéder à MySQL, il faut ouvrir un port particulier, le 3306. Inscrivez donc « 3306/tcp ». Cliquez ensuite sur OK :
II-G. Configuration de l'adresse IP▲
Il nous reste à attribuer une adresse IP fixe à notre machine de test.
Dans le MCC, allez dans le menu Réseau & Internet puis dans le Centre réseau :
Cliquez sur la petite flèche « > » qui correspond à l'interface connectée au réseau local (évidente dans cet exemple, puisqu'il n'y en a qu'une), puis sur le bouton Configurer :
Remplissez les différents champs (avec des valeurs certainement différentes de celles-ci), sans oublier de cocher l'option Lancer la connexion au démarrage. Cliquez sur OK.
La connexion devrait normalement se relancer ; si elle ne le fait pas, cliquez sur le bouton Connecter.
III. Test▲
Depuis une autre machine du réseau local, inscrivez « 192.168.0.196/phpmyadmin » (l'adresse IP de votre serveur LAMP, que vous venez de configurer, peut évidemment être différente) dans la barre d'adresse de votre navigateur :
Si vous avez bien travaillé, vous devez pouvoir accéder à phpMyAdmin avec le compte root.
Top ! Juste cinq minutes, défi réussi !
IV. Remerciements▲
Je remercie Francis Walter, Guillaume Sigui et Vincent Viale pour leur relecture technique, ainsi que FRANOUCH pour sa relecture orthographique.