Attaoui Jassim

TP — Héberger et déployer un site

Guide pas à pas : création de VM, installation des services, transfert SFTP et déploiement sur Internet avec Apache & MariaDB.

Prérequis

  • Un site web (fichiers HTML/PHP...)
  • Un client de transfert SFTP (WinSCP, FileZilla, ...)
  • Un hyperviseur (VirtualBox, VMware, ...)
  • Accès à l'interface d'administration de ton routeur / box

Étape 1 : Créer et configurer les VM

Installe l'ISO d'une distribution Linux, ici on utilisera Ubuntu Server 24.04.2 et crée deux VM :

  • UbuntuApache
  • UbuntuMariadb

Configuration recommandée (pour chaque VM)

  • RAM : 3000 Mo
  • CPU : 2 vCPU
  • Disque VDI : 60 Go
  • Interface réseau 1 : Accès par pont

Pendant l'installation :

  1. Désactive l'initialisation automatique par défaut si proposé.
  2. Choisis la langue (Français).
  3. Installe le serveur OpenSSH lorsque demandé.
  4. Redémarre et connecte-toi avec l'utilisateur créé.

Astuce : si affichage problématique dans VirtualBox → Affichage ➜ ajouter 40 Mo et passer de VMSVGA à VBoxVGA.

Étape 2 : Installer les serveurs

2.1 — Sur UbuntuApache (Apache + PHP)

Ouvre un terminal sur la VM :

# Devenir root
sudo -i

# Mettre à jour puis installer Apache, PHP et extension MySQL pour PHP
apt update && apt upgrade -y
apt install apache2 php libapache2-mod-php php-mysql -y

# Donner les droits à l'utilisateur sur /var/www/html (pour SFTP)
chown -R user:user /var/www/html

# Redémarrer apache
systemctl restart apache2

Vérifie la connexion depuis la machine physique :

ping 192.168.x.x  # ip de la VM UbuntuApache (affichée avec ip a)

2.2 — Sur UbuntuMariadb (MariaDB)

Ouvre un terminal sur la VM :

# Devenir root
sudo -i

# Mise à jour et installation
apt update && apt upgrade -y
apt install mariadb-server -y

# Autoriser connexions distantes : modifier le fichier de conf
nano /etc/mysql/mariadb.conf.d/50-server.cnf
# remplacer bind-address = 127.0.0.1 par bind-address = 0.0.0.0

# Redémarrer le service
systemctl restart mariadb

# Entrer dans le shell MariaDB (en local)
mysql

Dans le shell MariaDB, créer la base et l'utilisateur (exemple) :

CREATE DATABASE nom_base;
CREATE USER 'MonUtilisateur'@'192.168.x.x' IDENTIFIED BY 'MonPass';
GRANT ALL PRIVILEGES ON nom_base.* TO 'MonUtilisateur'@'192.168.x.x';
FLUSH PRIVILEGES;
EXIT;

(Remplace 192.168.x.x par l'IP de ta VM UbuntuApache.)

Donner les droits sur le répertoire home si nécessaire :

chown -R user:user /home/user

Étape 3 : Transfert SFTP

3.1 — Pour UbuntuApache

  1. Ouvre WinSCP ou FileZilla.
  2. Protocole : SFTP.
  3. Hôte : IP de la VM (ex : 192.168.x.x).
  4. Port : 22.
  5. Utilisateur/mot de passe : utilisateur non-root (celui pour lequel tu as fait chown).
  6. Déposer les fichiers du site dans /var/www/html/.

3.2 — Pour UbuntuMariadb

Procédure similaire pour déposer le fichier SQL :

  1. Transférer base.sql vers /home/user/.
  2. Importer la base :
mysql -u MonUtilisateur -p nom_base < /home/user/base.sql

# puis pour vérifier
mysql -u MonUtilisateur -p nom_base
SELECT * FROM une_table LIMIT 10;

Important : lors de l'export, utiliser l'interclassement utf8mb4_general_ci pour une question de compatibilité.

Étape 4 : Adaptation côté code

Isoler la connexion à la base dans un fichier database.php et adapter les variables :

<?php
// Exemple de fichier database.php
$host = '192.168.x.x';    // IP de la VM UbuntuMariadb
$dbname = 'nom_base';
$user = 'MonUtilisateur';
$password = 'MonPass';

try {
    $dsn = "mysql:host={$host};dbname={$dbname};charset=utf8mb4";
    $pdo = new PDO($dsn, $user, $password, [
        PDO::ATTR_ERRMODE => PDO::ERRMODE_EXCEPTION,
        PDO::ATTR_DEFAULT_FETCH_MODE => PDO::FETCH_ASSOC
    ]);
} catch (PDOException $e) {
    // en dev : afficher l'erreur ; en production : journaliser
    die("Erreur de connexion : " . $e->getMessage());
}
?>

Uploader ce fichier modifié dans /var/www/html/ sur le serveur Apache.

Étape 5 : Déploiement du site sur Internet

Tester localement

Ouvre un navigateur et visite :

http://192.168.x.x/  # IP du serveur Apache

Résolution d'erreurs

  • Si aucune page n'est accessible (Error 500 ou timeout) → vérifier réseau et que la machine cliente est sur le même réseau.
  • Si seules les pages utilisant la base échouent → consulter les logs Apache :
tail -f /var/log/apache2/error.log

Redirection de port (Routeur / Box)

Dans l'interface d'administration de la box, ajouter une règle de redirection :

  • IP destination : 192.168.x.x (VM UbuntuApache)
  • IP source : toutes
  • Protocole : TCP
  • Port début/fin : 80
  • Port destination : 80

Tu peux aussi utiliser un port personnalisé (dans ce cas l'URL devra finir par :x).

Nom de domaine

Si ton opérateur propose un nom de domaine (ex : sous-domaine freeboxos.fr), crée un sous-domaine (ex : monsite.freeboxos.fr) et attends sa propagation (quelques minutes à quelques heures).

Vérifier l'accès depuis l'extérieur

Depuis une connexion mobile 4G ou depuis un réseau externe, teste :

http://IP_PUBLIC/              
http://nomdomaineperso.sousdomaine.fr