Expose Réseaux Linux: Serveur Web (http apache)
Plan:
I- Introduction
a-Definition du serveur web
II-Fonctionnement du serveur web
III-Installation et Configuration
IV-Test
I- Introduction :
a- Définition du serveur web
Un serveur web est une infrastructure logicielle ou matérielle qui répond aux requêtes HTTP
(Hypertext Transfer Protocol) des clients en leur fournissant des pages web, des fichiers et d'autres
ressources via Internet. En d’autre terme, un serveur Web est l’ordinateur qui reçoit et répond aux
demandes des utilisateurs pour accéder à un site Web.
II- Fonctionnement du serveur web Apache
Chaque fois qu’un navigateur a besoin d’un fichier hébergé sur un serveur Web, le navigateur
demande le fichier via HTTP. Lorsque la demande atteint le serveur Web, le serveur HTTP
(logiciel) accepte la demande, trouve le document demandé et le renvoie au navigateur,
également via HTTP.
Si le serveur ne parvient pas à fournir le document, il renvoie un code HTTP avec un numéro
spécifique.
Par exemple, si le document demandé est introuvable, il renvoie une réponse 404 (not found).
Si le client n’a pas les autorisations pour accéder à un contenu, il renvoie une réponse 403
(forbidden).
Voici les principales étapes pour obtenir une page WEB provenant d’un serveur WEB :
• L’utilisateur saisit l’adresse d’une page internet avec l’URL soit donc le nom de domaine +
une page WEB
• L’OS effectue une résolution DNS pour obtenir l’adresse IP du serveur WEB
• Puis le navigateur WEB se connecte au serveur WEB et demande le contenu de la page
WEB avec la méthode GET du protocole HTTP
• Le serveur WEB retourne le code de la page WEB (HTML, CSS, JavaScript, etc)
• Le navigateur WEB construit le contenu de la page WEB qui s’affiche ensuite à l’écran de
l’utilisateur
Contenu statique vs Contenu dynamique
Un serveur Web peut être utilisé pour desservir du contenu statique ou dynamique.
Le contenu statique fait référence au contenu affiché tel quel, tandis que le contenu dynamique
peut être mis à jour et modifié. Un serveur Web statique sera composé d’un ordinateur et d’un
logiciel HTTP. Il est considéré comme statique car le serveur enverra des fichiers hébergés tels
quels à un navigateur.
Le contenu dynamique se compose d’un serveur Web et d’autres logiciels tels qu’un serveur
d’applications et une base de données. Il est considéré comme dynamique car le serveur
d’applications peut être utilisé pour mettre à jour tous les fichiers hébergés avant d’être envoyés à
un navigateur.
Le serveur Web peut générer du contenu lorsqu’il est demandé à la base de données. Bien que ce
processus soit plus flexible, il est également plus compliqué.
PHP
De nombreux serveurs Web de base prennent également en charge les scripts côté serveur qui
peuvent personnaliser la réponse au client. Le script côté serveur s’exécute sur la machine serveur et
dispose généralement d’un ensemble de fonctionnalités larges, qui comprennent l’accès à la base de
données. Le processus de script côté serveur utilisera également Active Server Pages (ASP),
JavaScript ou Hypertext Preprocessor (PHP) et d’autres langages de script. Ce processus permet
également de créer des documents HTML dynamiquement.
PHP est un serveur externe au serveur WEB, dans Apache il s’installe à travers un module, avec
Nginx, vous pouvez installer PHP-FPM.
Le serveur WEB peut l’interroger pour interpréter le code PHP et obtenir en retour le code HTML
dynamique à envoyer au client.
III- Installation et Configuration
L'installation et la configuration d'Apache peuvent varier en fonction du système d'exploitation .
Phase d’installation :
L’installation d’Apache est facile sous Linux. Nous allons utilisé la commande apt .
- sudo apt update
- sudo apt-get install apache2
Phase de Configuration :
Après l’installation d’apache, tout les fichiers de configurations se trouve dans
le répertoire /etc/apache2 . Les fichiers de données (page web) se trouve
dans /var/www et les fichiers logs dans /var/logs/apache2.
Voici une explication brève des principaux répertoires et fichiers présents
dans /etc/apache2 sous Linux :
1. *[Link]*: Le fichier de configuration principal d'Apache2, contenant
les paramètres globaux de configuration du serveur.
2. *[Link]*: Définit les ports sur lesquels Apache écoute les requêtes
entrantes.
3. *sites-available/*: Répertoire contenant les fichiers de configuration des
différents sites web disponibles sur le serveur Apache. Chaque fichier
correspond à un site web ou à un hôte virtuel spécifique.
4. *sites-enabled/*: Répertoire contenant des liens symboliques vers les
fichiers de configuration des sites web activés. Ces liens permettent à Apache
d'identifier quels sites web doivent être servis.
5. *mods-available/*: Répertoire contenant les fichiers de configuration des
modules Apache disponibles, qui peuvent être activés ou désactivés
individuellement.
6. *mods-enabled/*: Répertoire contenant des liens symboliques vers les
fichiers de configuration des modules Apache activés.
7. *conf-available/*: Répertoire contenant des fichiers de configuration
supplémentaires pouvant être activés ou désactivés pour personnaliser le
comportement d'Apache.
8. *conf-enabled/*: Répertoire contenant des liens symboliques vers les
fichiers de configuration supplémentaires activés.
9. *envvars*: Fichier contenant les variables d'environnement utilisées par les
scripts de démarrage d'Apache.
10. *magic*: Fichier de configuration utilisé par Apache pour déterminer le
type MIME des fichiers en fonction de leur contenu.
Ces répertoires et fichiers sont cruciaux pour la configuration et le
fonctionnement d'Apache2 sous Linux, permettant aux administrateurs système
de personnaliser le comportement du serveur web selon leurs besoins
spécifiques.
Exemple de configurations :
Création des répertoires pour les sites web :
Tout d'abord, nous allons créer les répertoires pour chaque site web dans /var/www/, où les fichiers
des sites seront stockés. Assurez-vous que ces répertoires sont accessibles par l'utilisateur Apache
(www-data ) :
sudo mkdir /var/www/[Link]
sudo mkdir /var/www/[Link]
sudo chown -R www-data:www-data /var/www/[Link]
sudo chown -R www-data:www-data /var/www/[Link]
Création des fichiers de configuration pour chaque site :
Nous allons créer des fichiers de configuration pour chaque site dans le répertoire
/etc/apache2/sites-available/. Ces fichiers spécifient les paramètres de configuration pour chaque
site.
• Pour [Link] :
sudo nano /etc/apache2/sites-available/[Link]
Contenu du fichier [Link] :
<VirtualHost *:80>
ServerName [Link]
ServerAlias [Link]
DocumentRoot /var/www/[Link]
ErrorLog ${APACHE_LOG_DIR}/site1.com_error.log
CustomLog ${APACHE_LOG_DIR}/site1.com_access.log combined
</VirtualHost>
Pour [Link] :
sudo nano /etc/apache2/sites-available/[Link]
Contenu du fichier [Link] :
• <VirtualHost *:80>
ServerName [Link]
ServerAlias [Link]
DocumentRoot /var/www/[Link]
ErrorLog ${APACHE_LOG_DIR}/site2.com_error.log
CustomLog ${APACHE_LOG_DIR}/site2.com_access.log
combined
</VirtualHost>
Ces fichiers définissent les configurations pour chaque site, y compris le nom de domaine, le
répertoire racine des fichiers web et les journaux d'erreurs et d'accès.
• Activer les sites et redémarrer Apache :
Ensuite, nous devons activer les sites en créant des liens symboliques vers les fichiers de
configuration dans le répertoire /etc/apache2/sites-enabled/.
sudo a2ensite [Link]
sudo a2ensite [Link]
Enfin, redémarrez Apache pour appliquer les modifications :
sudo systemctl restart apache2
IV- Test