Cours 03 : Installation et Configuration des Services Web sous Linux

 


Introduction

Travailler avec Linux pour le développement web est très courant et offre une grande flexibilité et stabilité. L'approche la plus fréquente sous Linux est l'installation du stack LAMP (Linux, Apache, MySQL, PHP). Contrairement à Windows où des packs tout-en-un sont préférés, sous Linux, on installe généralement chaque composant individuellement.

Pour ce cours, nous utiliserons Ubuntu Server comme distribution Linux de référence, car elle est très populaire, bien documentée et adaptée aux serveurs.

1. Installation et Configuration des Différents Services sous Linux (Ex: Ubuntu Server)

1.1. Préparation de l'Environnement Linux

Avant de commencer, assurez-vous d'avoir une installation d'Ubuntu Server (ou une autre distribution Linux de votre choix). Si vous utilisez une machine virtuelle (comme VirtualBox ou VMware), configurez-la avec un accès réseau et, idéalement, un accès SSH pour faciliter le travail à distance depuis votre machine principale.

  • Mise à jour du système : C'est la première étape cruciale pour s'assurer que tous les paquets sont à jour.

sudo apt update

sudo apt upgrade

 

1.2. Serveur Web : Installation d'Apache2

Apache2 est le serveur web par excellence sur les systèmes Linux.

  1. Installation d'Apache2 :

sudo apt install apache2

 

Cette commande va télécharger et installer Apache2 ainsi que ses dépendances.

  1. Vérification du service Apache :

Une fois installé, Apache démarre automatiquement. Vous pouvez vérifier son statut :

 

sudo systemctl status apache2

 

Vous devriez voir "active (running)" en vert.

  1. Test de la connexion web :
    • Ouvrez un navigateur web sur votre machine hôte (ou une autre machine sur le même réseau).
    • Dans la barre d'adresse, entrez l'adresse IP de votre machine Ubuntu Server.
    • Vous devriez voir la page par défaut d'Apache2 d'Ubuntu ("Apache2 Ubuntu Default Page").
    • Si vous ne voyez rien :
      • Vérifiez que le pare-feu (ufw) sur Ubuntu autorise le trafic HTTP/HTTPS :

 

sudo ufw allow 'Apache'

sudo ufw enable

 

(Répondez 'y' si demandé de confirmer).

      • Vérifiez que la machine virtuelle a bien un accès réseau configuré.
  1. Dossier Racine Web (/var/www/html) :
    • Sous Linux, le répertoire par défaut pour les fichiers de votre site web est /var/www/html/.
    • Tous les fichiers que vous placerez dans ce répertoire seront accessibles via le serveur web.
    • Permissions : Par défaut, ce répertoire appartient à root. Pour pouvoir y travailler facilement en tant qu'utilisateur standard, il est courant de modifier les permissions :

sudo chown -R $USER:$USER /var/www/html

sudo chmod -R 755 /var/www/html

 

      • chown -R $USER:$USER /var/www/html : Change le propriétaire du dossier /var/www/html (et de son contenu) à votre utilisateur actuel.
      • chmod -R 755 /var/www/html : Définit les permissions : lecture, écriture et exécution pour le propriétaire ; lecture et exécution pour le groupe et les autres.
  1. Configuration des Virtual Hosts (Facultatif mais recommandé pour plusieurs sites) :

Pour héberger plusieurs sites sur le même serveur Apache, vous utiliserez des Virtual Hosts. Chaque Virtual Host définit un site web distinct.

    • Création du dossier pour le nouveau site :

 

sudo mkdir /var/www/mon_site

sudo chown -R $USER:$USER /var/www/mon_site

 

    • Création d'un fichier Virtual Host :

Copiez le fichier de configuration par défaut et modifiez-le :

 

sudo cp /etc/apache2/sites-available/000-default.conf /etc/apache2/sites-available/mon_site.conf

sudo nano /etc/apache2/sites-available/mon_site.conf

 

Dans le fichier mon_site.conf, modifiez les lignes suivantes :

Apache

<VirtualHost *:80>

    ServerAdmin webmaster@localhost

    DocumentRoot /var/www/mon_site   # Modifiez ceci

    # Ajoutez une ligne pour le nom de domaine si vous en avez un (ou localhost)

    # ServerName mon_site.localhost # Exemple pour un nom de domaine local

 

    ErrorLog ${APACHE_LOG_DIR}/error.log

    CustomLog ${APACHE_LOG_DIR}/access.log combined

</VirtualHost>

 

Enregistrez et quittez (Ctrl+O, Enter, Ctrl+X).

    • Activation du Virtual Host et désactivation du site par défaut :

sudo a2ensite mon_site.conf      # Active le nouveau site

sudo a2dissite 000-default.conf  # Désactive le site par défaut

sudo apache2ctl configtest       # Vérifie la syntaxe de la configuration

sudo systemctl reload apache2    # Recharge Apache pour appliquer les changements

 

    • Test : Créez un simple fichier index.html dans /var/www/mon_site et accédez à l'adresse IP de votre serveur.

1.3. Serveur Base de Données : Installation de MySQL Server (ou MariaDB)

MySQL est le système de gestion de base de données relationnelle le plus couramment utilisé avec PHP et Apache.

  1. Installation de MySQL Server :

sudo apt install mysql-server

 

Pendant l'installation, il vous sera peut-être demandé de définir un mot de passe root pour MySQL. Si ce n'est pas le cas, vous le ferez à l'étape suivante.

  1. Exécution du script de sécurité post-installation :

Ceci est une étape CRUCIALE pour sécuriser votre installation MySQL.

 

sudo mysql_secure_installation

 

    • VALIDATE PASSWORD COMPONENT : Il vous demandera si vous voulez activer ce composant. C'est recommandé pour forcer des mots de passe forts. Choisissez un niveau (Low, Medium, Strong) et définissez un mot de passe fort pour l'utilisateur root de MySQL.
    • Remove anonymous users? : Oui (Y).
    • Disallow root login remotely? : Oui (Y) si ce n'est qu'un serveur de développement local. Pour un serveur accessible à distance, réfléchissez bien.
    • Remove test database and access to it? : Oui (Y).
    • Reload privilege tables now? : Oui (Y).
  1. Test de la connexion MySQL :

Connectez-vous à la console MySQL :

 

mysql -u root -p

 

Entrez le mot de passe root que vous avez défini. Vous devriez voir l'invite mysql>.

Pour quitter, tapez exit; et appuyez sur Entrée.

1.4. Interpréteur PHP : Installation de PHP et des modules nécessaires

PHP est le langage de script qui permet à votre site web de devenir dynamique et d'interagir avec la base de données.

  1. Installation de PHP :

sudo apt install php libapache2-mod-php php-mysql

 

    • php : Le paquet PHP de base.
    • libapache2-mod-php : Module Apache qui permet à Apache d'interpréter les fichiers PHP.
    • php-mysql : Module PHP qui permet à PHP de se connecter aux bases de données MySQL/MariaDB.
  1. Redémarrage d'Apache :

Après avoir installé le module PHP pour Apache, il faut redémarrer Apache pour qu'il prenne en compte le nouveau module :

 

sudo systemctl restart apache2

 

  1. Vérification de l'installation de PHP :
    • Créez un fichier appelé info.php dans votre dossier racine web (par exemple /var/www/html/).
    • Contenu de info.php :

<?php

phpinfo();

?>

    • Enregistrez le fichier.
    • Ouvrez votre navigateur et accédez à http://<Adresse_IP_de_votre_serveur>/info.php.
    • Vous devriez voir une page affichant toutes les informations de configuration de PHP. C'est un excellent moyen de vérifier que PHP est correctement installé et que le module php-mysql est activé. N'oubliez pas de supprimer ce fichier info.php d'un serveur de production pour des raisons de sécurité !

 

2. Introduction à MySQL

Maintenant que MySQL est installé, explorons ses concepts de base.

2.1. Qu'est-ce qu'un SGBD Relationnel ?

  • SGBD (Système de Gestion de Bases de Données) : Un logiciel qui permet de créer, gérer et interroger des bases de données.
  • Relationnel : Désigne un type de SGBD où les données sont organisées sous forme de tables (appelées aussi relations). Ces tables sont liées entre elles par des relations basées sur des champs communs.
    • Tables : Sont composées de lignes (enregistrements) et de colonnes (champs/attributs).
    • Lignes (enregistrements/tuples) : Représentent une instance unique d'une entité (ex: un client, un produit).
    • Colonnes (champs/attributs) : Représentent des propriétés spécifiques d'une entité (ex: nom_client, prix_produit).
    • Clé Primaire (Primary Key - PK) : Un ou plusieurs champs qui identifient de manière unique chaque ligne d'une table (ex: id_client). Elle garantit l'unicité des enregistrements.
    • Clé Étrangère (Foreign Key - FK) : Un champ dans une table qui fait référence à la clé primaire d'une autre table. Elle établit la relation entre les tables (ex: id_client dans une table de commandes fait référence à id_client dans la table clients).

Avantages des SGBDR :

  • Intégrité des données : Les relations et contraintes (clés primaires, étrangères) aident à maintenir la cohérence des données.
  • Flexibilité : Facile d'ajouter ou de modifier des données.
  • Organisation structurée : Les données sont bien organisées et faciles à interroger.

2.2. Modèle Entité-Relation (MER) : Introduction Sommaire

Le Modèle Entité-Relation est un outil conceptuel utilisé pour modéliser les données et leurs relations avant de les implémenter dans une base de données relationnelle.

  • Entité : Représente un objet ou un concept du monde réel que l'on souhaite stocker (ex: Client, Produit, Commande). Une entité devient une table dans la base de données.
  • Attribut : Une propriété d'une entité (ex: pour l'entité Client, les attributs peuvent être nom, prénom, adresse). Les attributs deviennent des colonnes dans la table.
  • Relation : Représente l'association entre deux ou plusieurs entités (ex: "un client passe une commande"). Les relations sont souvent matérialisées par des clés étrangères.
    • Cardinalités : Décrivent le nombre de fois qu'une entité peut être associée à une autre (ex: "un client passe une ou plusieurs commandes", "une commande est passée par un seul client").

Exemple simple de MER :

  • Entité : Client (Attributs : id_client (PK), nom, email)
  • Entité : Produit (Attributs : id_produit (PK), nom_produit, prix)
  • Relation : Commande (qui relie Client et Produit)
    • id_commande (PK)
    • id_client (FK vers Client)
    • id_produit (FK vers Produit)
    • quantite
    • date_commande

Ce modèle est ensuite traduit en un schéma de base de données physique avec des tables et des relations.

 

 

 

Enregistrer un commentaire

Plus récente Plus ancienne