INFAL104 - Serveur web

Objectifs

  • Configurer, optimiser et sécuriser un serveur Web.

  • Créer un site web à l’aide d’un CMS

  • Publier un site chez un hébergeur

  • Changer d’hébergeur

  • Planifier et mettre en œuvre la sauvegarde des données d’un site

Déroulement théorique 😅

Jour 1
  • Rappel des protocoles réseau en jeu

  • Domain Name System

  • HyperText Transfer Protocol

  • Installation et configuration d’un serveur web Nginx sur Debian

Jour 2
  • Introduction aux languages classiques du web (HTML, CSS, PHP)

  • Tour d’horizon des serveurs web

  • Service d’un site en PHP

  • Chiffrement avec Let’s Encrypt

Jour 3
  • Découverte d’un CMS : Wordpress

  • Moteur de bases de données : MariaDB

  • TP installation de Wordpress

  • Scripting : sauvegarde, restauration, déménagement

Rappels sur les protocoles Internet

Modèle TCP/IP

Modèle OSI simplifié à 4/5 couches

NomProtocoles principaux

7

Application

HTTPS, DNS, SMTP

4

Transport

TCP, UDP

3

Réseau

IP, ICMP

2

Liaison

Ethernet, Wifi, ARP, MAC

1

Physique

Ethernet, Wifi, Fibre, Pigeons voyageurs

Protocoles pour le web

IP

Routage des paquets entre deux machines par leur adresse IP

TCP

Connexion entre deux applications par leur numéro de port sur une machine/IP

DNS

Annuaire permettant de récupérer (entre autres) l’IP associée un nom de domaine

HTTP

Transfert de pages web entre un serveur et un client

HTTPS

Idem avec chiffrement SSL

Domain Name System

  • Service d’annuaire

  • Serveurs

    Résolveur

    Cherche l’information (et la garde en mémoire)

    Authoritatif

    Détiens l’information

DNS : types d’enregistrements

SOA

Start of Authority (DNS principal, mail de l’admin, horodatage, TTL, …​)

NS

Serveur de nom

MX

Serveur mail

TXT

Champ texte (SPF, DKIM, DMARC)

SRV

Services rendus

A

IPv4

AAAA

IPv6

CNAME

Alias

Exercice : requêtes avec dig

  1. IPv4 de gitlab.ksug.fr ?

  2. Serveur DNS faisant autorité pour triscl.bzh ?

  3. IPv6 de ragnar.dubronetwork.fr ?

  4. SOA de ksug.fr selon son serveur de nom principal ?

HyperText Transfer Protocol

Protocole définissant l’interaction entre un serveur web et un client (navigateur).

  1. Créer un container Debian 12

  2. Installer Nginx

Languages pour le web

Différents types de langages selon

  • Le but (affichage, requêtes an base de données, interactivité…​)

  • Le lieu d’exécution (navigateur, serveur)

Côté navigateur : HTML et CSS

HTML

Langage à balise pour décrire le contenu d’une page

CSS

Langage pour la mise en forme d’une page (position, couleurs, etc)

Côté serveur : PHP

  • Langage de programmation impératif, orienté objet

  • Génère une page HTML avant de l’envoyer par le serveur web

  • Sait faire des requêtes en BDD

Les deux : Javascript

  • Langage de programmation impératif, orienté objet

  • Peut se retrouver aussi bien dans le navigateur que côté serveur

    Navigateur

    Mis en page dynamique, vérifications de zones de texte, animations,…​

    Serveur

    Voir PHP

TP 1 - Servir un site PHP

Voir la page de TP sur le site

Serveur de base de données

  • Stocke des données :)

  • Plusieurs façons de stocker

    Relationnelle

    Données organisées en tables reliées entre elles, se manipulent souvent avec le langage SQL

    noSQL

    Plus simple à manipuler, mais avec moins de possibilités

    clé-valeur

    Système le plus simple, juste une liste de clés et de valeurs associées

Serveurs BDD SQL répandus

Oracle

Base de données payante, plutôt pour les gros volumes

PostgreSQL

Moteur robuste, fonctionnalités de réplication, stockage JSON

MySQL

Moteur facile d’accès, interface de gestion PHP intégrée, mais rachetée par Oracle

MariaDB

Fork de MySQL indépendant d’Oracle

Microsoft SQL Server

🤔

IBM DB2

Plutôt utilisé pour les systèmes IBM basés sur le mainframe et le code COBOL

Installation d’un MariaDB

  1. Installer le paquet mariadb sur le serveur

  2. Vérifier son fonctionnement

  3. Installer l’interface de configuration phpmyadmin

  4. Configurer Nginx pour accéder proprement à phpmyadmin (domaine, chiffrement)

    1. Choisir un domaine valide phpmyadmin.xxx.tsr23.ksug.fr

    2. Mettre en place un certificat Let’s Encrypt pour le domaine

    3. Restreindre l’accès à l’interface d’administration aux IPs de la baie (et vérifier que certbot fonctionne toujours)

      • instructions allow et deny dans un bloc location

CMS : système de gestion de contenu

  • Solution permettant de créer un site web sans avoir à tout coder

  • Système de thèmes et de plugins pour étendre les fonctionnalités et configurer l’apparence

  • Plus répandu : Wordpress

Installation de Wordpress