Serveur WEB


Serveur LAMP sous Fedora

Comment installer un serveur LAMP

Décrit la procédure d’installation d’un serveur LAMP sur un poste Linux Fedora 32.

Il peut être utile de disposer d’une couche LAMP sur son ordinateur personnel, que ce soit pour l’apprentissage au développement de sites WEB basés sur PHP ou pour tester un projet d’évolution d’un site WEB en production utilisant un CMS   écrit en PHP. Voyons comment faire pour installer ces différentes couches sur un PC équipé de l’OS Linux Fedora.


 Présentation

LAMP désigne une architecture permettant de disposer des fonctionnalités d’un site WEB complet basé sur le langage PHP.

Ici, sera décrit les quelques commandes et procédures utiles pour disposer d’un système LAMP complet sous Fedora.

IMPORTANT : Cet article ne traitera pas d’une installation sur serveur de production qui demande d’entrer plus en détail sur le paramétrage des différentes couches pour pouvoir gérer plusieurs sites par exemples ou régler des problèmes liés à la sécurité.

Nous utiliserons le gestionnaire de paquet dnf fourni par Fedora pour installer les différents logiciels.

 Installation du serveur Web

Nous allons commencer par installer le logiciel httpd de la fondation Apache.

Mais d’abord assurons nous que notre système est à jour.

$ sudo dnf update

puis installons le paquet correspondant :

$ sudo dnf install httpd

Nous pouvons maintenant démarrer le serveur avec la commande suivante :

$ sudo systemctl start httpd

Si nous désirons que le serveur soit activé à chaque démarrage de la machine, nous devrons également taper la commande suivante :

$ sudo systemctl enable httpd

Remarque : Même si l’ancienne syntaxe avec la commande service fonctionne encore, la documentation préconise d’utiliser la commande systemctl .

Nous pouvons maintenant tester dans un navigateur si le site localhost par défaut fonctionne.

Vous devriez voir afficher la page de présentation suivante :

Il s’agit d’une page initialisée par défaut par l’installation d’Apache. Elle donne certaines informations et notamment, le dossier correspondant à la racine du site :

/var/www/html

On peut le vérifier en ajoutant dans ce répertoire un fichier index.html   contenant un peu de code html  .

  1.   <body>
  2.     <h1>Bonjour à tous !</h1>
  3.  </body>
  4. </html>

Télécharger

Testons l’affichage de la page :

La page s’affiche, le serveur web est donc opérationnel.

 Installation de PHP

On installe PHP avec la commande suivante :

$ sudo dnf install php

Cette commande installe plusieurs paquets pour disposer d’un minimum de fonctionnalités.

On peut notamment vérifier la version avec la commande suivante :

Il faut maintenant vérifier que si du code PHP se trouve dans une page, ce dernier est bien exécuté. Pour cela, il suffit de créer un petit fichier de test. Pour cet exemple, il a été nommé : test.php et contient les lignes suivantes :

  1.   <body>
  2.     <h1>Bonjour à tous !</h1>
  3.     <?php
  4.      phpinfo();
  5.    ?>
  6.  </body>
  7. </html>

Télécharger

Il faut également redémarrer le serveur WEB pour que celui-ci prenne bien en compte PHP.

$ sudo systemctl restart httpd

On devrait avoir maintenant le résultat suivant dans le navigateur en tapant l’adresse : localhost/test.php :

Le PHP est maintenant opérationnel mais il se peux que vous ayez besoin de fonctionnalités supplémentaires. Pour cela, vous devrez ajouter les modules correspondant.

Par exemple, si vos programmes utilisent la librairie de traitement d’images GD :

$ sudo dnf install php-gd

ou pour manipuler des fichiers zip :

$ sudo dnf install php-zip

Remarque  : Dans le paragraphe suivant, nous ajouterons un module indispensable à l’utilisation de MySQL/MariaDB avec PHP.

 Installation de MariaDB

Remarque  : Que l’on choisisse MariaDB ou MySQL le principe reste le même. D’autre par, pour des raisons de compatibilités les noms des utilitaires en ligne commandes n’ont pas été modifiés et sont les mêmes que pour MySQL (mysql, mysqldump...)

Nous installons le SGBD   MariaDB avec la commande suivante :

$ sudo dnf install mariadb-server

Nous activons le service :

$ sudo systemctl start mysql

Pour que ce dernier se lance même après un redémarrage, il faut exécuter la commande suivante :

$ sudo systemctl enable mysql

MariaDB est maintenant opérationnel mais nous pouvons affiner un peu son paramétrage. Par exemple, par défaut il n’y a pas de mot de passe de défini pour l’administrateur du SGBD  . Même si c’est moins important sur notre poste isolé que sur un serveur de production, il vaut mieux en mettre un car l’on peut travailler sur des copies de données réelles qui peuvent être sensibles. Puis, pour tester son code de connexion à la base de données il vaut mieux également qu’il y ait un mot de passe pour vérifier lorsque ce dernier n’est pas correcte, que le programme gère correctement les exceptions.

Pour cela MariaDB fournit un script nommé mysql_secure_installation qui permet d’affiner certains paramètres liés à la sécurité. Il suffit de taper la commande suivante pour le lancer.

$ sudo mysql_secure_installation

A l’exécution de la commande, un certain nombre de questions devraient vous être posées :

  • le mot de passe root LINUX (du fait de sudo et ne fait pas partie du script)
  • le mot de passe root du SGBD : au départ il n’y en pas on ne saisit rien,
  • confirmation de saisie d’un nouveau mot de passe root pour MariaDB,
  • la suppression des utilisateurs anonymes,
  • la désactivation de la possibilité de se connecter à distance en root,
  • la suppression de la base de données de test,
  • le rechargement des privilèges pour prise en compte des modifications.

Vous pourrez répondre oui à toutes les questions, le principal dans notre cas étant la définition du mot de passe.

MariaDB est maintenant utilisable.

On peut maintenant lancer la commande mysql pour vérifier que notre SGBD fonctionne :

Pour tester, on peut taper une commende, ici la commande d’affichages des bases de données existantes. On peut vérifier que la base de données de test a bien été supprimée.

Nous nous trouvons maintenant avec une couche LAMP opérationnelle.

 Utilisation de MySQL/MariaDb à partir de PHP

Le module pour PDO a été en principe installé avec PHP mais ce n’est pas suffisant, si l’on désire utiliser MySQL dans un programme. Il faut ajouter le pilote spécifique au SGBD. Pour cela on peut l’installer avec la commande suivante :

$ sudo dnf install php-mysqlnd

 Le cas de SELinux

Une particularité de Fedora (et de CentOS, RHE) est que par défaut est installé et activé SELinux. Ce système développé par la NSA, ajoute une couche de sécurité supplémentaire.

Quelques explications ici

Le problème est que le paramétrage par défaut ne permettra pas au serveur Web httpd d’écrire dans les dossiers même si tous les droits linux sont positionnés. Pour un poste qui ne sera pas un serveur de production, j’ai préféré le désactiver pour éviter des problèmes avec l’installation et le fonctionnement de CMS  . Cela évitera de perdre du temps sur les réglages de SELinux.

Pour connaître le statut de SELinux, tapez la commande :

La ligne suivante indique que SELinux est activé :

Pour désactiver SELinux, il faut modifier le fichier /etc/sysconfig/selinux

et modifier le paramètre SELINUX=disabled comme ceci :

Il faudra redémarrer le système serveur à la suite de cette action.
Une fois l’ordinateur redémarré, on teste l’état de SELinux

Il est bien désactivé.

Remarque : Cette couche logicielle, que je n’avais jamais utilisée m’a fait perdre pas male de temps lors de l’installation d’un CMS   qui bloquait sur des dossiers pour lesquels j’avais mis pourtant tous les droits.

 Conclusion

Nous avons vu qu’il était facile à l’aide de quelques commandes, d’installer un serveur WEB pour l’apprentissage et le développement. Par contre, nous nous sommes contenté des paramétrages par défaut ce qui ne serait pas suffisant dans le cas d’un véritable serveur WEB en production.

Pour le développement et l’apprentissage de PHP, il est tout à fait possible de ne pas installer le serveur WEB d’Apache car, comme je l’ai montré dans un autre article sur ce site, PHP intègre in serveur HTTP.


Article n° 161

Crée par: chris

Créé le: 14 novembre

Modifié le: 14 novembre

Nombre de visites: 11

Popularité: 11 %

Popularité absolue: 1

Distribution Fedora, CentOS, Red Hat

Mots clés de cet article


SPIP

2003-2020 LePpf
Plan du site | | Contact | RSS 2.0 | Sur YouTube

Visiteurs connectés : 4

Nombre moyen de visites quotidiennes sur le site: 170