Hébergement et mise en ligne d'un projet web

introduction

Florian Rodriguez

1. Rappel - Cycle de vie d'une requète HTTP

index.svg

1. Rappel - Cycle de vie d'une requète HTTP

dns.svg

1. Rappel - Cycle de vie d'une requète HTTP

http_requete.svg

1. Rappel - Cycle de vie d'une requète HTTP

vhost.svg

1. Rappel - Cycle de vie d'une requète HTTP

db.svg

1. Rappel - Cycle de vie d'une requète HTTP

app_server_eval.svg

1. Rappel - Cycle de vie d'une requète HTTP

http_reponse.svg

2. Les deux éléments indispensables pour héberger un projet web

  • Un nom de domaine pour que les utilisateurs puissent accéder à votre site.
  • Un hébergement (ou serveur) web pour stocker les fichiers et les rendre accessibles.

2.1. Un nom de domaine

dns.svg

  • Il est géré par des registrars (OVH, Gandi, Namecheap…).
  • Il doit être acheté et renouvelé régulièrement (généralement tous les ans).
  • Il est associé à une adresse IP sur le registrars via des enregistrements DNS (A, CNAME, etc.) sur la zone DNS.

2.2. Un hébergement / serveur web

serveur-web.svg

  • C’est un espace de stockage pour les fichiers de votre site.
  • Il peut être géré par un fournisseur d’hébergement (ex: OVH, Bluehost, HostGator…) ou être un serveur que vous gérez vous-même (ex: VPS, serveur dédié, cloud).
  • Il doit être configuré pour servir les fichiers via HTTP/HTTPS.
  • Il faut associé un nom de domaine à un dossier de ce serveur (VHOST)

3. L’achat d’un nom de domaine et le rôle du DNS

  • Achat
    • Choix d’un registrar (ex: OVH, Gandi, Namecheap…).
    • Vérification de la disponibilité du nom de domaine.
    • Coût annuel (généralement entre 10€ et 50€ mais peut être bien plus).
  • Configuration / édition de la zone DNS
    • A : Associe un domaine à une IPv4.
    • AAAA : Associe un domaine à une IPv6.
    • CNAME : Alias d’un autre domaine.
    • MX : Serveur de messagerie.
    • La propagation DNS peut prendre plusieurs heures (TTL).



↓↓ 2 exemples de configuration DNS pour un site web (OVH et O2switch) ↓↓

3.1. OVH Dashboard

ovh-dashboard.webp

3.2. O2switch Dashboard

o2switch-dashboard.webp

3.3. OVH DNS Zone

ovh-zonedns.webp

3.4. O2switch DNS Zone

o2switch-zonedns.webp

3.5. Local

  • Le fichier hosts pour faire le lien entre un nom de domaine et une adresse IP localement.
    • /etc/hosts/ sur Linux/Mac
    • C:\Windows\System32\drivers\etc\hosts sur Windows.
  • Exemple d’entrée dans le fichier hosts :
#<ip-address>	<hostname.domain.org>	<hostname>
127.0.0.1 example.local example
8.8.8.8 google-dns.google google-dns
127.0.0.1 www.univ-grenoble-alpes.fr

4. Les différents types d’hébergement web

  • Hébergement mutualisé : plusieurs sites sur le même serveur, pas de gestion du serveur, coût faible mais performances ou fonctionnalités limitées. (entre 2€ et 10€ par mois)
  • Serveur privé virtuel (VPS) : serveur virtualisé avec ressources dédiées, plus de flexibilité mais nécessite une configuration et maintenance. (entre 5€ et 50€ par mois)
  • Serveur dédié : machine physique dédiée à un client unique, puissance maximale mais coût élevé et gestion avancée requise. (Comme avoir son propre serveur à la maison mais dans un datacenter) (entre 50€ et plusieurs centaines d’euros par mois)
  • Hébergement cloud : basé sur des ressources évolutives, types IaaS, PaaS, SaaS, exemples AWS, Azure, Google Cloud, OVHcloud. (entre 5€ et plusieurs centaines d’euros par mois selon les ressources utilisées)

4.1. Configuration du serveur web / VHOST

  • Un serveur web peut héberger plusieurs sites grâce à la configuration de virtual hosts (VHOST).
  • Chaque VHOST associe un nom de domaine à un dossier racine sur le serveur.


<VirtualHost *:80>
    ServerName example.com
    ServerAlias www.example.com
    DocumentRoot /var/www/example
    <Directory /var/www/example>
        AllowOverride All
        Require all granted
    </Directory>
</VirtualHost>
server {
    listen 80;
    server_name example.com www.example.com;
    root /var/www/example;
    index index.html index.php;
    location / {
        try_files $uri $uri/ =404;
    }
    location ~ \.php$ {
        include snippets/fastcgi-php.conf;
        fastcgi_pass unix:/var/run/php/php7.4-fpm.sock;
    }
}

↓↓ 2 exemples de configuration sur un hébergement mutualisé (OVH et O2switch) ↓↓

4.2. Exemple de configuration sur OVH

ovh-vhost.webp

4.3. Exemple de configuration sur O2switch

o2switch-vhost.webp

5. Transfert des fichiers sur le serveur

  • Méthodes courantes :
    • Interface de gestion du fournisseur d’hébergement (ex: OVH, O2switch…).
    • FTP/SFTP : Protocole de transfert de fichiers, nécessite un client FTP (FileZilla, WinSCP…).
    • Avec accès SSH:
      • SCP : Protocole de copie sécurisée.

        scp -r /local/path/to/website user@server:/remote/path
        
      • Rsync : Outil de synchronisation de fichiers en ligne de commande.

        rsync -avz /local/path/to/website user@server:/remote/path
        

5.1. Automatisation du déploiement:

  • Git : Utilisation de Git pour déployer les fichiers (ex: via un hook post-receive).
  • Outils de déploiement : Capistrano, Deployer, etc.
  • Script « maison » : Écrire un script personnalisé pour automatiser le transfert et la configuration.
  • Automatisation avec CI/CD (ex: GitHub Actions, GitLab CI/CD…).
    • Exemple de déploiement avec GitHub Actions :

      name: Deploy
      on: push
      jobs:
        deploy:
          runs-on: ubuntu-latest
          steps:
            - uses: actions/checkout@v3
            - name: Déploiement
              run: ./deploy.sh
      

6. Hébergement cloud

  • Basé sur des ressources évolutives.
  • Types :
    • IaaS (Infrastructure as a Service)
    • PaaS (Platform as a Service)
    • SaaS (Software as a Service)
  • Exemples : AWS, Azure, Google Cloud, OVHcloud.

6.1. Tableau comparatif des types d’hébergement cloud

Critère IaaS PaaS SaaS
Gestion par l’utilisateur Serveurs, stockage, réseau, OS Code, applications, base de données Seulement l'utilisation du logiciel
Flexibilité Très élevé Moyenne Faible
Maintenance À la charge de l’utilisateur Gérée en partie par le fournisseur Complètement gérée par le fournisseur
Exemples AWS EC2, Google Compute Engine Heroku, Google App Engine Gmail, Google Drive, Slack
Public cible Administrateurs système, DevOps Développeurs d’applications Utilisateurs finaux

7. Introduction aux technologies et outils liés au cloud

7.1. Les bases du cloud computing

  • Permet l’utilisation de serveurs et services à la demande.
  • Avantages : Scalabilité, haute disponibilité, flexibilité.

7.2. Docker et la conteneurisation

  • Conteneurs : environnements légers et isolés.
  • Différence avec les machines virtuelles :
    • VM : Un OS complet par instance.
    • Docker : Partage du noyau système, consommation réduite.
  • Commandes de base :
    • docker run nginx
    • docker ps

7.3. Orchestration de conteneurs avec Kubernetes

  • Kubernetes (K8s) gère les déploiements et la scalabilité des conteneurs.
  • Concepts clés :
    • Cluster : Ensemble de nœuds (machines) gérés par K8s. Node : Machine physique ou virtuelle exécutant des conteneurs.
    • Pod : Unité de base contenant un ou plusieurs conteneurs.
    • Service : Exposition d’une application sur un réseau.
    • Deployment : Gestion des versions et mises à jour.
    • Volume : Stockage persistant partagé entre les conteneurs.

7.4. Comparaison docker et kubernetes

Critère Docker Kubernetes
Conteneurisation ✅ Oui ✅ Oui
Orchestration ❌ Non ✅ Oui
Scalabilité ⚠️ Manuelle ✅ Automatique
Auto-réparation ❌ Non ✅ Oui
Load Balancing ⚠️ Basique ✅ Avancé


  • 💡 Docker est utilisé pour créer et gérer des conteneurs,
    tandis que Kubernetes orchestre leur exécution à grande échelle.

7.5. Infrastructure as Code (IaC) : Terraform et Ansible

  • Terraform : Provisionne l’infrastructure sous forme de code.
    • Exemple de configuration :

      resource "aws_instance" "web" {
        ami           = "ami-123456"
        instance_type = "t2.micro"
      }
      
  • Ansible : Automatise la configuration et le déploiement.
    • Exemple de playbook :

      - hosts: servers
        tasks:
          - name: Installer Apache
            apt:
              name: apache2
              state: present
      

8. Démonstration pratique

  • Achat d’un domaine et configuration DNS.
  • Déploiement sur un hébergement mutualisé.
  • Déploiement d’un projet web avec Docker sur un VPS.
  • Automatisation avec Ansible ou Terraform.