Durée : 8-12 semaines Niveau : Débutant Objectif : Maîtriser l’installation, la configuration et la gestion d’un site WordPress haute performance sur un serveur VPS Debian avec WordOps
Table des Matières
- Vue d’ensemble
- Prérequis
- Programme détaillé semaine par semaine
- Ressources officielles
- Critères de réussite
- Certification finale
Vue d’ensemble
Ce parcours d’apprentissage vous guidera de débutant à développeur WordPress autonome capable de :
- Gérer un serveur VPS Debian en ligne de commande
- Installer et configurer WordPress avec WordOps
- Optimiser les performances (Nginx, PHP-FPM, cache)
- Sécuriser votre installation (SSL, headers, hardening)
- Utiliser Git et GitHub pour le versioning
- Automatiser vos workflows avec l’IA (Claude, ChatGPT)
- Déployer et maintenir un site WordPress en production
Stack technologique :
- OS : Debian 12 (Bookworm)
- Serveur Web : Nginx + FastCGI Cache
- PHP : 8.2 + PHP-FPM + Opcache
- Base de données : MariaDB 10.11
- CMS : WordPress 6.9+
- Gestionnaire de stack : WordOps 3.22.0
- Versioning : Git + GitHub
- IA : Claude.ai + ChatGPT
Prérequis
Avant de commencer
- [ ] Accès à un VPS Debian 12 (recommandé : 2GB RAM minimum)
- [ ] Connexion SSH fonctionnelle
- [ ] Nom de domaine avec accès DNS
- [ ] Compte GitHub (gratuit)
- [ ] Connaissance basique de l’anglais technique (documentation)
- [ ] Motivation et 8-15h/semaine disponibles
Matériel requis
- Ordinateur avec terminal SSH (Windows : WSL2, PuTTY / Mac, Linux : terminal natif)
- Éditeur de code (VS Code recommandé)
- Navigateur moderne (Chrome, Firefox)
Programme détaillé semaine par semaine
Semaine 1 : Fondations Linux & SSH
Objectif : Maîtriser les bases de la ligne de commande Linux et sécuriser l’accès SSH
Compétences à acquérir
- [ ] Connexion SSH au VPS
- [ ] Navigation dans le système de fichiers (
cd,ls,pwd,tree) - [ ] Gestion des fichiers et dossiers (
mkdir,touch,cp,mv,rm) - [ ] Permissions Linux (
chmod,chown,ls -la) - [ ] Éditeur de texte en ligne de commande (nano ou vim basique)
- [ ] Gestion des utilisateurs et sudo
- [ ] Configuration sécurisée SSH (clés publiques/privées)
Projet pratique #1
« Sécuriser mon VPS »
Tâches :
- Créer un utilisateur non-root avec privilèges sudo
- Désactiver l’authentification root par SSH
- Générer une paire de clés SSH (ed25519)
- Configurer l’authentification par clé uniquement
- Changer le port SSH par défaut (optionnel)
- Installer et configurer fail2ban
Temps estimé : 8-10h
Commandes clés à maîtriser
# Connexion SSH
ssh user@votredomaine.com
# Navigation
ls -lah
cd /var/www
pwd
# Création utilisateur
sudo adduser deployer
sudo usermod -aG sudo deployer
# Clés SSH
ssh-keygen -t ed25519 -C "votre@email.com"
ssh-copy-id deployer@votredomaine.com
# Permissions
sudo chown -R www-data:www-data /var/www/html
sudo chmod 755 /var/www/html
# Édition configuration SSH
sudo nano /etc/ssh/sshd_config
sudo systemctl restart ssh
Ressources semaine 1
- Guide SSH – Debian Wiki
- Linux Command Line Basics
- Documentation fail2ban :
/usr/share/doc/fail2ban/
Critères de réussite
- [ ] Connexion SSH uniquement par clé (pas de mot de passe)
- [ ] Utilisateur non-root fonctionnel avec sudo
- [ ] fail2ban actif et protégeant SSH
- [ ] Logs SSH accessibles et compréhensibles (
/var/log/auth.log)
Semaine 2 : Installation de la Stack (Nginx, PHP, MariaDB)
Objectif : Comprendre et installer manuellement les composants de la stack LEMP avant d’utiliser WordOps
Compétences à acquérir
- [ ] Mise à jour du système Debian (
apt update,apt upgrade) - [ ] Installation Nginx et compréhension des virtual hosts
- [ ] Installation PHP-FPM et gestion des pools
- [ ] Installation MariaDB et sécurisation
- [ ] Configuration firewall UFW
- [ ] Compréhension architecture LEMP
Projet pratique #2
« Installer LEMP manuellement »
Tâches :
- Installer Nginx et créer un virtual host de test
- Installer PHP 8.2 et PHP-FPM
- Installer MariaDB et exécuter
mysql_secure_installation - Créer une base de données et un utilisateur
- Configurer UFW (ports 22, 80, 443)
- Tester PHP avec
info.php
Temps estimé : 8-10h
Commandes clés à maîtriser
# Mise à jour système
sudo apt update && sudo apt upgrade -y
# Installation Nginx
sudo apt install nginx -y
sudo systemctl status nginx
sudo systemctl enable nginx
# Installation PHP 8.2
sudo apt install php8.2-fpm php8.2-mysql php8.2-curl php8.2-gd \
php8.2-mbstring php8.2-xml php8.2-xmlrpc php8.2-zip -y
# Installation MariaDB
sudo apt install mariadb-server mariadb-client -y
sudo mysql_secure_installation
# Gestion base de données
sudo mysql
CREATE DATABASE test_db;
CREATE USER 'test_user'@'localhost' IDENTIFIED BY 'mot_de_passe_fort';
GRANT ALL PRIVILEGES ON test_db.* TO 'test_user'@'localhost';
FLUSH PRIVILEGES;
EXIT;
# Configuration firewall
sudo apt install ufw -y
sudo ufw allow 22/tcp
sudo ufw allow 80/tcp
sudo ufw allow 443/tcp
sudo ufw enable
sudo ufw status
Configuration Nginx basique
Créer /etc/nginx/sites-available/test.conf :
server {
listen 80;
server_name test.votredomaine.com;
root /var/www/test;
index index.php index.html;
location ~ \.php$ {
include snippets/fastcgi-php.conf;
fastcgi_pass unix:/run/php/php8.2-fpm.sock;
}
}
Activer le site :
sudo ln -s /etc/nginx/sites-available/test.conf /etc/nginx/sites-enabled/
sudo nginx -t
sudo systemctl reload nginx
Ressources semaine 2
Critères de réussite
- [ ] Nginx répond sur le port 80
- [ ] PHP-FPM fonctionne (vérification via phpinfo())
- [ ] MariaDB sécurisée et accessible
- [ ] Base de données de test créée
- [ ] UFW actif et configuré correctement
Semaine 3 : WordOps & Premier Site WordPress
Objectif : Installer WordOps et déployer votre premier site WordPress automatisé
Compétences à acquérir
- [ ] Installation de WordOps 3.22.0
- [ ] Commandes WordOps essentielles
- [ ] Création site WordPress avec SSL Let’s Encrypt
- [ ] Compréhension du cache FastCGI
- [ ] Gestion des sites WordOps
- [ ] Logs et debugging
Projet pratique #3
« Déployer WordPress avec WordOps »
Tâches :
- Installer WordOps sur Debian 12
- Créer un site WordPress avec cache et SSL
- Configurer wp-admin et base de données
- Activer Redis pour le cache objet (optionnel)
- Tester la performance avec GTmetrix
- Explorer la structure des fichiers générés
Temps estimé : 6-8h
Commandes clés à maîtriser
# Installation WordOps
wget -qO wo wops.cc && sudo bash wo
# Vérification installation
sudo wo --version
# Devrait afficher : WordOps 3.22.0
# Stack complète
sudo wo stack install
sudo wo stack install --php82
# Création site WordPress avec toutes options
sudo wo site create votredomaine.com --wp \
--php82 --mysql8 \
--letsencrypt \
--wpfc --wpredis
# Obtenir les informations du site
sudo wo site info votredomaine.com
# Gestion des sites
sudo wo site list
sudo wo site show votredomaine.com
# Mise à jour WordPress
sudo wo site update votredomaine.com --wp
# Logs en temps réel
sudo wo log show votredomaine.com --nginx
sudo wo log show votredomaine.com --php
# Debug
sudo wo stack status
sudo wo debug votredomaine.com
Structure fichiers générés par WordOps
/var/www/votredomaine.com/
├── htdocs/ # Racine WordPress
│ ├── wp-admin/
│ ├── wp-content/
│ │ ├── plugins/
│ │ ├── themes/
│ │ └── uploads/
│ ├── wp-config.php
│ └── index.php
├── conf/
│ └── nginx/ # Config Nginx spécifique
├── logs/ # Logs Nginx/PHP
└── backup/ # Backups automatiques
Configuration WordPress post-installation
- Accéder à
https://votredomaine.com/wp-admin - Compléter l’installation WordPress
- Installer un thème (GeneratePress recommandé)
- Sécuriser wp-config.php avec clés de sécurité
- Désactiver l’édition fichiers dans wp-admin
Ajouter dans wp-config.php :
// Désactiver éditeur de fichiers
define('DISALLOW_FILE_EDIT', true);
// Forcer HTTPS
define('FORCE_SSL_ADMIN', true);
// Augmenter memory limit
define('WP_MEMORY_LIMIT', '256M');
// Activer debug (développement seulement)
define('WP_DEBUG', false);
define('WP_DEBUG_LOG', false);
Ressources semaine 3
Critères de réussite
- [ ] WordOps 3.22.0 installé et fonctionnel
- [ ] Site WordPress accessible en HTTPS
- [ ] Cache FastCGI actif (vérification headers HTTP)
- [ ] Score GTmetrix > 85% (A/B)
- [ ] Logs accessibles et compréhensibles
- [ ] Backup automatique configuré
Semaine 4 : Sécurité WordPress & Hardening
Objectif : Sécuriser WordPress contre les menaces courantes et mettre en place les bonnes pratiques
Compétences à acquérir
- [ ] Configuration headers sécurité HTTP
- [ ] Installation et configuration Wordfence
- [ ] Hardening wp-config.php
- [ ] Protection contre brute-force
- [ ] Désactivation XML-RPC et user enumeration
- [ ] Configuration SSL/TLS optimale
- [ ] Mise en place backups automatiques
Projet pratique #4
« Forteresse WordPress »
Tâches :
- Ajouter headers sécurité dans Nginx (HSTS, CSP, X-Frame-Options)
- Installer et configurer Wordfence Security
- Hardening wp-config.php (clés secrètes, permissions)
- Désactiver XML-RPC
- Configurer UpdraftPlus avec backup cloud
- Tester sécurité avec Mozilla Observatory
- Obtenir note A+ sur SSL Labs
Temps estimé : 8-10h
Headers sécurité Nginx
Éditer /etc/nginx/common/wpcommon-php82.conf ou le fichier de conf du site :
# Headers sécurité HTTP
add_header Strict-Transport-Security "max-age=31536000; includeSubDomains; preload" always;
add_header X-Frame-Options "SAMEORIGIN" always;
add_header X-Content-Type-Options "nosniff" always;
add_header X-XSS-Protection "1; mode=block" always;
add_header Referrer-Policy "strict-origin-when-cross-origin" always;
add_header Permissions-Policy "geolocation=(), microphone=(), camera=()" always;
add_header Content-Security-Policy "default-src 'self' https:; script-src 'self' 'unsafe-inline' 'unsafe-eval' https:; style-src 'self' 'unsafe-inline' https:; img-src 'self' data: https:; font-src 'self' data: https:; connect-src 'self' https:; frame-ancestors 'self';" always;
Tester et recharger :
sudo nginx -t
sudo systemctl reload nginx
Hardening wp-config.php
<?php
// === Clés de sécurité ===
// Générer avec : https://api.wordpress.org/secret-key/1.1/salt/
define('AUTH_KEY', 'votre-clé-unique-ici');
define('SECURE_AUTH_KEY', 'votre-clé-unique-ici');
define('LOGGED_IN_KEY', 'votre-clé-unique-ici');
define('NONCE_KEY', 'votre-clé-unique-ici');
define('AUTH_SALT', 'votre-clé-unique-ici');
define('SECURE_AUTH_SALT', 'votre-clé-unique-ici');
define('LOGGED_IN_SALT', 'votre-clé-unique-ici');
define('NONCE_SALT', 'votre-clé-unique-ici');
// === Sécurité ===
define('DISALLOW_FILE_EDIT', true);
define('DISALLOW_FILE_MODS', false); // true = bloquer installation plugins/thèmes
define('FORCE_SSL_ADMIN', true);
define('WP_AUTO_UPDATE_CORE', 'minor'); // Updates sécurité auto
// === Performance ===
define('WP_MEMORY_LIMIT', '256M');
define('WP_MAX_MEMORY_LIMIT', '512M');
define('WP_POST_REVISIONS', 5);
define('AUTOSAVE_INTERVAL', 300);
define('EMPTY_TRASH_DAYS', 7);
// === Cache ===
define('WP_CACHE', true);
// === Debugging (DÉSACTIVER EN PRODUCTION) ===
define('WP_DEBUG', false);
define('WP_DEBUG_LOG', false);
define('WP_DEBUG_DISPLAY', false);
define('SCRIPT_DEBUG', false);
Permissions correctes :
sudo chown www-data:www-data /var/www/votredomaine.com/htdocs/wp-config.php
sudo chmod 640 /var/www/votredomaine.com/htdocs/wp-config.php
Plugins sécurité recommandés
-
Wordfence Security (gratuit)
- Firewall applicatif
- Scan malware
- Protection brute-force
- 2FA (authentification à deux facteurs)
-
UpdraftPlus (gratuit)
- Backups automatiques
- Stockage cloud (Google Drive, Dropbox, S3)
- Restauration en un clic
-
Limit Login Attempts Reloaded (gratuit)
- Protection brute-force additionnelle
- Logs tentatives de connexion
Désactiver XML-RPC
Ajouter dans wp-config.php :
// Désactiver XML-RPC
add_filter('xmlrpc_enabled', '__return_false');
Ou bloquer dans Nginx (déjà inclus dans WordOps) :
location = /xmlrpc.php {
deny all;
access_log off;
log_not_found off;
return 444;
}
Tests sécurité
# Test SSL Labs (note A+ attendue)
# Aller sur : https://www.ssllabs.com/ssltest/
# Test headers sécurité (note A attendue)
# Aller sur : https://observatory.mozilla.org/
# Vérifier headers en ligne de commande
curl -I https://votredomaine.com | grep -i "strict-transport"
curl -I https://votredomaine.com | grep -i "x-frame"
Ressources semaine 4
Critères de réussite
- [ ] Note A+ sur SSL Labs
- [ ] Note A ou B sur Mozilla Observatory
- [ ] Wordfence installé et configuré (scan initial OK)
- [ ] XML-RPC désactivé
- [ ] Backups automatiques fonctionnels (test restauration)
- [ ] Headers sécurité présents (vérification curl)
- [ ] wp-config.php hardenisé avec permissions 640
Semaine 5 : Git, GitHub & Versioning
Objectif : Maîtriser Git pour versionner votre code et collaborer via GitHub
Compétences à acquérir
- [ ] Installation et configuration Git
- [ ] Commandes Git essentielles (add, commit, push, pull)
- [ ] Création et gestion de repository GitHub
- [ ] Branches et merging
- [ ] .gitignore pour WordPress
- [ ] Déploiement via Git (optionnel)
- [ ] GitHub Actions basiques (optionnel)
Projet pratique #5
« Versionner mon thème WordPress »
Tâches :
- Installer Git sur le VPS
- Créer un repository GitHub pour votre thème
- Initialiser Git dans wp-content/themes/votre-theme/
- Créer un .gitignore adapté WordPress
- Premier commit et push vers GitHub
- Créer une branche feature et merger
- Ajouter un README.md professionnel
Temps estimé : 6-8h
Installation et configuration Git
# Installation
sudo apt install git -y
# Configuration globale
git config --global user.name "Votre Nom"
git config --global user.email "votre@email.com"
git config --global init.defaultBranch main
# Vérification
git config --list
# Générer clé SSH pour GitHub (si pas déjà fait)
ssh-keygen -t ed25519 -C "votre@email.com"
cat ~/.ssh/id_ed25519.pub
# Copier la clé et l'ajouter sur GitHub : Settings → SSH Keys
Workflow Git basique
# Se positionner dans le dossier du thème
cd /var/www/votredomaine.com/htdocs/wp-content/themes/votre-theme/
# Initialiser repository
git init
# Créer .gitignore
nano .gitignore
# Premier commit
git add .
git commit -m "Initial commit: Mon thème WordPress"
# Lier au repository GitHub (créé au préalable sur github.com)
git remote add origin git@github.com:votre-username/votre-theme.git
# Pousser vers GitHub
git push -u origin main
# Workflow quotidien
git status # Voir les modifications
git add fichier.php # Ajouter un fichier modifié
git add . # Ajouter tous les fichiers modifiés
git commit -m "Description" # Créer un commit
git push # Envoyer vers GitHub
git pull # Récupérer les modifications
.gitignore pour WordPress
Créer .gitignore :
# WordPress Core
/wp-admin/
/wp-includes/
/wp-*.php
/xmlrpc.php
/readme.html
/license.txt
# Configuration
wp-config.php
.htaccess
# Contenu utilisateur (ne pas versionner)
/wp-content/uploads/
/wp-content/backup*/
/wp-content/upgrade/
/wp-content/cache/
# Plugins (sauf si vous développez des plugins custom)
/wp-content/plugins/
!/wp-content/plugins/votre-plugin-custom/
# Thèmes (sauf votre thème)
/wp-content/themes/
!/wp-content/themes/votre-theme/
# Logs et temporaires
*.log
*.sql
*.sqlite
.DS_Store
Thumbs.db
*.swp
*.bak
*~
# Environnements
.env
.env.local
# IDE
.vscode/
.idea/
*.sublime-project
*.sublime-workspace
# Dépendances
node_modules/
vendor/
composer.phar
package-lock.json
Branches Git
# Créer une nouvelle branche
git checkout -b feature-nouvelle-fonctionnalite
# Lister les branches
git branch
# Changer de branche
git checkout main
# Merger une branche
git checkout main
git merge feature-nouvelle-fonctionnalite
# Supprimer une branche
git branch -d feature-nouvelle-fonctionnalite
# Pousser une branche vers GitHub
git push -u origin feature-nouvelle-fonctionnalite
README.md professionnel
Créer README.md dans votre thème :
# Mon Thème WordPress



## Description
Thème WordPress moderne et performant pour [décrire l'usage].
## Fonctionnalités
- Responsive design
- SEO optimisé
- Performance optimisée (lazy loading, WebP)
- Compatible Gutenberg
- Accessible (WCAG 2.1)
## Installation
1. Télécharger le thème
2. Uploader via WordPress Admin → Apparence → Thèmes
3. Activer le thème
4. Configurer via Apparence → Personnaliser
## Prérequis
- WordPress 6.9+
- PHP 8.2+
- Nginx ou Apache
## Configuration
### Widgets
Le thème propose 3 zones de widgets :
- Sidebar
- Footer 1
- Footer 2
## Développement
### Structure
votre-theme/ ├── style.css ├── functions.php ├── header.php ├── footer.php ├── index.php ├── single.php ├── archive.php └── template-parts/
### Commandes
```bash
# Installation dépendances
npm install
# Compilation SASS (si utilisé)
npm run build
Support
Pour toute question : contact@votredomaine.com
Changelog
Version 1.0.0 – 2025-01-15
- Release initiale
- Design responsive
- SEO optimisé
Licence
GPLv2 or later
#### Ressources semaine 5
- [Pro Git Book (français)](https://git-scm.com/book/fr/v2)
- [GitHub Docs](https://docs.github.com/fr)
- [Learn Git Branching (interactif)](https://learngitbranching.js.org/?locale=fr_BE)
#### Critères de réussite
- [ ] Git installé et configuré
- [ ] Repository GitHub créé et lié
- [ ] .gitignore correct (ne pas tracker wp-config.php, uploads/)
- [ ] Au moins 5 commits significatifs
- [ ] Une branche feature créée et mergée
- [ ] README.md professionnel
- [ ] Clé SSH GitHub fonctionnelle
---
### Semaine 6 : Performance & Optimisation
**Objectif :** Optimiser WordPress pour des temps de chargement ultra-rapides
#### Compétences à acquérir
- [ ] Configuration cache Nginx FastCGI
- [ ] Optimisation PHP-FPM (workers, memory)
- [ ] Configuration Opcache
- [ ] Optimisation MariaDB (InnoDB)
- [ ] Conversion images WebP
- [ ] Lazy loading
- [ ] CDN (Cloudflare)
- [ ] Analyse performance (GTmetrix, PageSpeed)
#### Projet pratique #6
**"Site WordPress ultra-rapide"**
Tâches :
1. Configurer cache FastCGI avec purge automatique
2. Optimiser PHP-FPM (pm.max_children, etc.)
3. Activer et tuner Opcache
4. Optimiser MariaDB (innodb_buffer_pool_size)
5. Convertir images en WebP
6. Activer lazy loading natif WordPress
7. Configurer Cloudflare CDN
8. Atteindre score 95+ sur PageSpeed Insights
Temps estimé : 10-12h
#### Configuration cache FastCGI
WordOps active déjà le cache, mais vérifier la configuration :
```bash
# Vérifier config cache
sudo cat /var/www/votredomaine.com/conf/nginx/redis.conf
# Purger cache manuellement
sudo wo clean votredomaine.com --fastcgi
# Purger tout
sudo wo clean votredomaine.com --all
Plugin recommandé : Nginx Helper pour purge automatique.
Configuration Nginx Helper :
- Activer « Enable Purge »
- Cache Method: FastCGI Cache
- Purge on: Post/Page publish, update, delete
Optimisation PHP-FPM
Éditer /etc/php/8.2/fpm/pool.d/www.conf :
[www]
user = www-data
group = www-data
listen = /run/php/php8.2-fpm.sock
listen.owner = www-data
listen.group = www-data
listen.mode = 0660
; Process manager (dynamic recommandé)
pm = dynamic
; Calcul basé sur RAM disponible
; Formule : pm.max_children = RAM_libre / 50MB
pm.max_children = 20 ; Pour 2GB RAM
pm.start_servers = 4
pm.min_spare_servers = 2
pm.max_spare_servers = 6
pm.max_requests = 500
; Limites mémoire
php_admin_value[memory_limit] = 256M
Appliquer :
sudo systemctl restart php8.2-fpm
Configuration Opcache
Éditer /etc/php/8.2/fpm/conf.d/10-opcache.ini :
; Active Opcache
opcache.enable=1
opcache.enable_cli=0
; Mémoire allouée (128MB recommandé)
opcache.memory_consumption=128
; Nombre de scripts à cacher (10000+ pour WordPress)
opcache.max_accelerated_files=10000
; Validation timestamp (60s en développement, 300s+ en production)
opcache.revalidate_freq=60
; Interned strings buffer
opcache.interned_strings_buffer=16
; Fast shutdown
opcache.fast_shutdown=1
Redémarrer PHP-FPM :
sudo systemctl restart php8.2-fpm
Vérifier Opcache actif via phpinfo() ou plugin.
Optimisation MariaDB
Éditer /etc/mysql/mariadb.conf.d/50-server.cnf :
[mysqld]
# Mémoire InnoDB (50-70% de RAM totale recommandé)
innodb_buffer_pool_size = 1G # Pour 2GB RAM
# Instances buffer pool (1 par GB recommandé)
innodb_buffer_pool_instances = 1
# Log file size
innodb_log_file_size = 256M
# Flush method
innodb_flush_method = O_DIRECT
# Thread cache
thread_cache_size = 8
# Table cache
table_open_cache = 2000
# Query cache (désactivé par défaut sur MariaDB 10.11+)
# query_cache_size = 0
# query_cache_type = 0
# Max connections
max_connections = 50
Redémarrer MariaDB :
sudo systemctl restart mariadb
Conversion images WebP
Installation outils :
sudo apt install webp -y
Script conversion batch :
#!/bin/bash
# Script : convert-to-webp.sh
UPLOADS_DIR="/var/www/votredomaine.com/htdocs/wp-content/uploads"
find "$UPLOADS_DIR" -type f \( -iname "*.jpg" -o -iname "*.jpeg" -o -iname "*.png" \) | while read IMG; do
WEBP="${IMG%.*}.webp"
if [ ! -f "$WEBP" ]; then
echo "Converting: $IMG"
cwebp -q 85 "$IMG" -o "$WEBP"
fi
done
echo "Conversion terminée!"
Ou utiliser plugin : ShortPixel Image Optimizer ou Imagify.
Lazy loading
WordPress 5.5+ intègre lazy loading natif pour images.
Vérifier présence attribut loading="lazy" dans HTML :
<img src="image.jpg" alt="Description" loading="lazy">
Plugin optionnel : Lazy Load by WP Rocket pour iframes et vidéos.
Configuration Cloudflare CDN
- Créer compte gratuit sur Cloudflare
- Ajouter votre domaine
- Changer nameservers chez votre registrar
- Attendre propagation DNS (24-48h)
- Activer options :
- SSL/TLS: Full (Strict)
- Auto Minify: JS, CSS, HTML
- Brotli: ON
- HTTP/2: ON
- HTTP/3 (QUIC): ON
Configuration Cloudflare optimale :
Speed → Optimization :
- Auto Minify: Tout cocher
- Brotli: ON
- Early Hints: ON
- Rocket Loader: OFF (peut casser scripts)
Caching :
- Caching Level: Standard
- Browser Cache TTL: 4 hours
- Always Online: ON
Rules → Page Rules (gratuit : 3 règles) :
Règle 1 : Cache everything
- URL:
votredomaine.com/* - Cache Level: Cache Everything
- Edge Cache TTL: 1 month
Règle 2 : Bypass wp-admin
- URL:
votredomaine.com/wp-admin/* - Cache Level: Bypass
Règle 3 : Bypass wp-login
- URL:
votredomaine.com/wp-login.php - Security Level: High
Tests performance
# Test PageSpeed Insights
# Aller sur : https://pagespeed.web.dev/
# Objectif : Score 90+ mobile et desktop
# Test GTmetrix
# Aller sur : https://gtmetrix.com/
# Objectif : Grade A, Performance 90+
# Test temps de chargement (ligne de commande)
curl -o /dev/null -s -w "Time Total: %{time_total}s\n" https://votredomaine.com
# Objectif : < 1s
Checklist optimisation
# Vérifier cache FastCGI actif
curl -I https://votredomaine.com | grep -i "x-fastcgi-cache"
# Devrait afficher : X-FastCGI-Cache: HIT
# Vérifier Opcache
php -i | grep opcache.enable
# Devrait afficher : opcache.enable => On => On
# Vérifier Brotli/Gzip
curl -H "Accept-Encoding: br,gzip" -I https://votredomaine.com | grep -i "content-encoding"
# Devrait afficher : content-encoding: br ou gzip
Ressources semaine 6
Critères de réussite
- [ ] Cache FastCGI actif (vérification headers)
- [ ] PHP-FPM optimisé (pm.max_children adapté)
- [ ] Opcache actif et configuré
- [ ] MariaDB innodb_buffer_pool_size optimisé
- [ ] Images converties en WebP
- [ ] Cloudflare configuré et actif
- [ ] Score PageSpeed Insights 90+ (mobile + desktop)
- [ ] Score GTmetrix A (90+)
- [ ] Temps de chargement < 1s
Semaine 7 : SEO & Rank Math
Objectif : Optimiser le référencement naturel avec Rank Math SEO
Compétences à acquérir
- [ ] Installation et configuration Rank Math
- [ ] Optimisation on-page (titres, meta descriptions, H1-H6)
- [ ] Schema.org markup
- [ ] Sitemap XML
- [ ] Breadcrumbs
- [ ] Open Graph et Twitter Cards
- [ ] Google Search Console
- [ ] Google Analytics 4
Projet pratique #7
« SEO WordPress parfait »
Tâches :
- Installer et configurer Rank Math SEO
- Optimiser 5 articles existants (score 90+)
- Configurer Schema.org (Organization, Article)
- Générer et soumettre sitemap XML
- Configurer Open Graph pour partage social
- Lier Google Search Console
- Installer Google Analytics 4
- Analyser mots-clés avec Ubersuggest
Temps estimé : 8-10h
Installation Rank Math
# Via wp-cli (si installé)
sudo -u www-data wp plugin install seo-by-rank-math --activate \
--path=/var/www/votredomaine.com/htdocs
# Ou via WordPress Admin → Extensions → Ajouter
Configuration Setup Wizard :
- Account: Créer compte Rank Math (optionnel)
- Site Type: Blog / Portfolio / Business
- Business Info: Nom, logo, social links
- Google Services: Search Console + Analytics
- Sitemap: Activer (désactiver taxonomies inutiles)
- Schema: Organization + Website
- Finir et accéder au tableau de bord
Configuration Rank Math avancée
Rank Math → General Settings → Breadcrumbs :
- Enable Breadcrumbs: ON
- Separator:
/ou→ - Hide on Homepage: ON
Ajouter au thème (avant le titre) :
<?php
if ( function_exists('rank_math_the_breadcrumbs') ) {
rank_math_the_breadcrumbs();
}
?>
Rank Math → Titles & Meta :
Configuration par type :
- Posts:
%title% %sep% %sitename% - Pages:
%title% %sep% %sitename% - Archives:
%term% Archives %sep% %sitename% - Meta description: Auto-generated or custom
Rank Math → Sitemap Settings :
- Include Posts: ON
- Include Pages: ON
- Include Media: OFF (optionnel)
- Include Categories: ON
- Include Tags: OFF (sauf si très utilisés)
- Images in Sitemap: ON
Sitemap URL : https://votredomaine.com/sitemap_index.xml
Optimisation article (on-page SEO)
Checklist par article :
- Focus Keyword : Choisir 1 mot-clé principal
- Titre (H1) : Inclure mot-clé, < 60 caractères
- URL : Courte, mot-clé inclus, pas de stopwords
- Meta description : 150-160 caractères, mot-clé, CTA
- Premier paragraphe : Mot-clé dans les 100 premiers mots
- Headings (H2-H6) : Structure logique, mots-clés secondaires
- Images : Alt text descriptif avec mot-clé
- Liens internes : 2-3 liens vers articles connexes
- Liens externes : 1-2 liens vers sources qualité
- Longueur : 1500+ mots pour articles piliers
Objectif : Score Rank Math 90+/100
Schema.org markup
Rank Math ajoute automatiquement Schema.org.
Vérifier types activés :
- Organization (site entier)
- Website (site entier)
- Article (posts)
- Breadcrumbs (navigation)
Tester Schema : Google Rich Results Test
Open Graph et Twitter Cards
Rank Math → Titles & Meta → Social Meta :
- Enable Open Graph: ON
- Facebook App ID: (optionnel)
- Enable Twitter Card: ON
- Twitter Username: @votre_compte
Par article, Rank Math génère automatiquement :
og:titleog:descriptionog:imageog:urltwitter:card
Vérifier : Facebook Sharing Debugger
Google Search Console
- Aller sur Google Search Console
- Ajouter propriété (votredomaine.com)
- Vérification : Méthode DNS (TXT record) ou HTML file
- Soumettre sitemap :
https://votredomaine.com/sitemap_index.xml
Métriques à suivre :
- Impressions
- Clics
- CTR moyen
- Position moyenne
- Pages indexées
Google Analytics 4
- Créer compte Google Analytics
- Créer propriété (GA4)
- Créer flux de données (Web)
- Copier Measurement ID (G-XXXXXXXXXX)
Installation via plugin Site Kit by Google ou code manuel.
Code tracking (dans <head>) :
<!-- Google tag (gtag.js) -->
<script async src="https://www.googletagmanager.com/gtag/js?id=G-XXXXXXXXXX"></script>
<script>
window.dataLayer = window.dataLayer || [];
function gtag(){dataLayer.push(arguments);}
gtag('js', new Date());
gtag('config', 'G-XXXXXXXXXX');
</script>
Recherche de mots-clés
Outils gratuits :
- Ubersuggest (3 recherches/jour gratuit)
- Google Keyword Planner
- AnswerThePublic
- Google Trends
Critères mot-clé :
- Volume : 100-1000/mois (niche) ou 1000-10000/mois (large)
- Difficulté : < 40 (facile) pour débuter
- Intention : Informationnelle pour blog
- Langue : Français (Belgique)
Ressources semaine 7
Critères de réussite
- [ ] Rank Math installé et configuré
- [ ] 5 articles optimisés (score 90+)
- [ ] Sitemap XML généré et soumis
- [ ] Schema.org validé (Google Rich Results Test)
- [ ] Open Graph fonctionnel (test Facebook)
- [ ] Google Search Console lié et sitemap soumis
- [ ] Google Analytics 4 installé et tracking actif
- [ ] Liste 10 mots-clés cibles identifiés
Semaine 8 : IA & Automatisation (Claude, ChatGPT)
Objectif : Utiliser l’IA pour accélérer la création de contenu et automatiser les tâches répétitives
Compétences à acquérir
- [ ] Rédaction assistée par IA (Claude, ChatGPT)
- [ ] Génération de prompts efficaces
- [ ] Optimisation SEO avec IA
- [ ] Génération d’images (Midjourney, DALL-E)
- [ ] Automatisation avec Make.com ou Zapier (optionnel)
- [ ] Code WordPress avec assistance IA
- [ ] Documentation automatique
Projet pratique #8
« Blog WordPress alimenté par IA »
Tâches :
- Créer 3 articles complets avec Claude.ai
- Optimiser pour SEO avec ChatGPT
- Générer featured images avec DALL-E
- Créer un prompt template réutilisable
- Coder un shortcode WordPress avec assistance Claude
- Générer documentation README.md
- Automatiser publication (optionnel)
Temps estimé : 8-10h
Workflow rédaction article avec Claude.ai
Étape 1 : Recherche sujet
Prompt Claude :
Je gère un blog DevOps/SRE en français ciblant la Belgique.
Public : Administrateurs systèmes, DevOps, SRE, développeurs backend.
Propose-moi 5 idées d'articles sur le thème "Docker" qui sont :
1. Recherchés (mots-clés volume > 500/mois)
2. Peu concurrentiels (difficulty < 40)
3. Pratiques (tutoriels ou guides)
4. Pertinents pour mon audience
Format :
- Titre SEO-optimisé
- Mot-clé principal
- Volume de recherche estimé
- Angle unique
Étape 2 : Plan détaillé
Prompt Claude (après avoir choisi un sujet) :
Crée un plan détaillé pour l'article suivant :
Titre : "Docker Compose : Guide complet pour débutants"
Mot-clé principal : docker compose tutoriel
Longueur cible : 2000 mots
Public : Débutants en Docker
Le plan doit inclure :
1. Introduction accrocheuse (problème + solution)
2. 5-7 sections H2 logiques
3. Sous-sections H3 si nécessaire
4. Exemples de code concrets
5. Section FAQ (3-5 questions)
6. Conclusion avec CTA
Optimise pour SEO (mots-clés secondaires, LSI).
Étape 3 : Rédaction sections
Prompt Claude (par section) :
Rédige la section suivante de l'article en français professionnel :
## Installation de Docker Compose
Consignes :
- 300-400 mots
- Inclure commandes bash avec explications
- Ton : pédagogue mais technique
- Inclure tips et warnings
- Optimisé SEO (mots-clés : docker compose install, installer docker compose)
Public : Administrateurs Linux débutants en Docker
Étape 4 : Optimisation SEO
Prompt ChatGPT :
Optimise ce paragraphe pour le SEO :
[Coller paragraphe]
Mot-clé principal : docker compose tutoriel
Mots-clés secondaires : docker compose install, docker compose file, docker compose up
Consignes :
- Inclure mots-clés naturellement
- Améliorer lisibilité (phrases courtes)
- Ajouter transition entre idées
- Garder ton professionnel
Prompt templates réutilisables
Template article tutoriel :
Rédige un article de blog technique complet en français.
Titre : [TITRE]
Mot-clé principal : [MOT-CLÉ]
Longueur : [NOMBRE] mots
Public : [DESCRIPTION PUBLIC]
Structure :
1. Introduction (150 mots)
- Problème concret
- Impact sur le lecteur
- Promesse de solution
2. Prérequis (50 mots)
- Liste à puces
- Connaissances requises
- Outils nécessaires
3. Corps de l'article (1500 mots)
- 5 sections H2
- Exemples de code commentés
- Captures d'écran décrites
- Tips et warnings
4. FAQ (200 mots)
- 5 questions courantes
- Réponses concises
5. Conclusion (100 mots)
- Résumé bénéfices
- CTA vers article connexe
Ton : Professionnel, pédagogue, accessible
SEO : Densité mot-clé 1-2%, mots-clés secondaires naturels
Format : Markdown avec code blocks
Template meta description :
Crée une meta description SEO pour cet article :
Titre : [TITRE]
Mot-clé : [MOT-CLÉ]
Consignes :
- 150-160 caractères exactement
- Inclure mot-clé principal
- Call-to-action clair
- Bénéfice lecteur explicite
- Ton engageant
Fournis 3 variantes.
Génération code WordPress avec Claude
Prompt exemple :
Crée un shortcode WordPress qui affiche une boîte d'alerte personnalisable.
Fonctionnalités :
- Attributs : type (info, warning, error, success), titre, contenu
- Design : Bootstrap 5 style
- Responsive
- Accessible (ARIA labels)
- Sécurisé (échapper output)
Code :
- Fonction avec prefix yawc_
- Commentaires détaillés
- Bonnes pratiques WordPress
- Exemple d'utilisation
Format : PHP avec syntaxe WordPress
Claude génèrera un code production-ready que vous pouvez ajouter à functions.php.
Génération images avec DALL-E
Prompt exemple (ChatGPT Plus) :
Crée une image featured pour article de blog tech.
Sujet : Docker Compose pour débutants
Style : Flat design, couleurs modernes (bleu, orange)
Éléments : Logo Docker, containers stylisés, flèches workflow
Format : 1200x630px (Open Graph)
Ton : Professionnel mais accessible
Alternatives gratuites :
- Canva (templates personnalisables)
- Unsplash (photos libres)
- Excalidraw (diagrammes techniques)
Automatisation Make.com (optionnel)
Exemple workflow :
- Trigger : Nouveau fichier Markdown dans Google Drive
- Action 1 : Parser contenu Markdown
- Action 2 : Convertir en HTML
- Action 3 : Créer post WordPress via API
- Action 4 : Notification Slack
Nécessite : API WordPress REST activée, Make.com (gratuit limité).
Best practices IA
À FAIRE :
- Relire et éditer le contenu généré (l’IA fait des erreurs)
- Vérifier les faits et chiffres
- Ajouter expérience personnelle
- Adapter ton à votre audience
- Tester le code généré
À NE PAS FAIRE :
- Publier sans relecture
- Copier-coller aveuglément
- Utiliser pour spam de contenu
- Ignorer les hallucinations IA
- Remplacer totalement l’humain
Ressources semaine 8
- Claude.ai (gratuit avec limites)
- ChatGPT (gratuit avec GPT-3.5)
- OpenAI API Docs
- Prompt Engineering Guide
Critères de réussite
- [ ] 3 articles rédigés avec Claude (2000+ mots chacun)
- [ ] Articles optimisés SEO (score Rank Math 85+)
- [ ] Featured images générées ou créées
- [ ] Prompt templates documentés et réutilisables
- [ ] 1 shortcode WordPress fonctionnel créé avec Claude
- [ ] Contenu relu et édité (pas de hallucinations)
- [ ] Articles publiés et performants (vérification Analytics)
Semaine 9-10 : Projet Fil Rouge – Site WordPress Complet
Objectif : Synthétiser toutes les compétences en créant un site WordPress professionnel de A à Z
Spécifications projet
Thématique : Au choix (DevOps, SRE, Tech, ou autre)
Livrables :
- Site WordPress fonctionnel en HTTPS
- Thème custom ou child theme
- 10 articles optimisés SEO (1500+ mots)
- Plugin custom avec 1 fonctionnalité
- Repository GitHub avec documentation
- Performance optimale (PageSpeed 90+)
- Sécurité renforcée (note A SSL Labs)
Phase 1 : Infrastructure (Jour 1-2)
Tâches :
- [ ] Provisionner VPS Debian 12
- [ ] Configurer utilisateur et SSH
- [ ] Installer WordOps 3.22.0
- [ ] Créer site WordPress avec SSL
- [ ] Configurer DNS et Cloudflare
Commandes :
# Connexion et setup initial
ssh root@votre-vps-ip
adduser deployer
usermod -aG sudo deployer
su - deployer
# Installation WordOps
wget -qO wo wops.cc && sudo bash wo
sudo wo stack install --php82
# Création site
sudo wo site create votreprojet.com --wp \
--php82 --mysql8 \
--letsencrypt=wildcard \
--wpfc --wpredis
# Vérification
sudo wo site info votreprojet.com
Phase 2 : Sécurité (Jour 3)
Tâches :
- [ ] Headers sécurité Nginx (HSTS, CSP)
- [ ] Wordfence installé et configuré
- [ ] fail2ban actif
- [ ] Backups UpdraftPlus
- [ ] wp-config.php hardenisé
- [ ] UFW configuré
Tests :
# Test SSL
curl https://www.ssllabs.com/ssltest/analyze.html?d=votreprojet.com
# Test headers
curl -I https://votreprojet.com | grep -i strict-transport
Phase 3 : Thème & Design (Jour 4-5)
Tâches :
- [ ] Installer GeneratePress (ou créer child theme)
- [ ] Personnaliser design (couleurs, typo, logo)
- [ ] Créer pages statiques (Accueil, À propos, Contact)
- [ ] Configurer menu navigation
- [ ] Ajouter footer avec social links
- [ ] Responsive design vérifié
Phase 4 : Plugin Custom (Jour 6-7)
Créer un plugin avec 1 fonctionnalité au choix :
Idées :
- Reading time calculator
- Table of contents automatique
- Related posts avec IA
- Social share buttons
- Custom shortcodes
Structure plugin :
mon-plugin/
├── mon-plugin.php
├── includes/
│ ├── class-core.php
│ └── class-shortcodes.php
├── admin/
│ └── settings-page.php
├── assets/
│ ├── css/
│ └── js/
└── README.md
Versioner sur GitHub.
Phase 5 : Contenu (Jour 8-12)
Tâches :
- [ ] Planifier calendrier éditorial (10 articles)
- [ ] Recherche mots-clés (Ubersuggest)
- [ ] Rédaction 10 articles avec Claude
- [ ] Optimisation SEO (Rank Math 90+)
- [ ] Featured images
- [ ] Liens internes stratégiques
Structure article type :
- Introduction (150 mots)
- 5-7 sections H2 (1500 mots total)
- Code examples (si technique)
- FAQ (3-5 questions)
- Conclusion + CTA
Phase 6 : Performance (Jour 13-14)
Tâches :
- [ ] Cache FastCGI vérifié
- [ ] Opcache optimisé
- [ ] PHP-FPM tunné
- [ ] Images converties WebP
- [ ] Cloudflare CDN actif
- [ ] Tests PageSpeed 90+
Phase 7 : SEO (Jour 15-16)
Tâches :
- [ ] Sitemap XML généré et soumis
- [ ] Google Search Console lié
- [ ] Google Analytics installé
- [ ] Schema.org validé
- [ ] Open Graph configuré
- [ ] Tous articles score 85+
Phase 8 : Git & Documentation (Jour 17-18)
Tâches :
- [ ] Repository GitHub créé
- [ ] Thème versionné
- [ ] Plugin versionné
- [ ] README.md professionnel
- [ ] CHANGELOG.md
- [ ] Documentation technique
Structure README :
# Mon Projet WordPress
## Description
[Description concise]
## Stack Technique
- Debian 12
- Nginx + PHP 8.2 + MariaDB
- WordPress 6.9
- WordOps 3.22.0
## Installation
[Instructions step-by-step]
## Fonctionnalités
- [Liste]
## Performance
- PageSpeed Score : 95/100
- GTmetrix Grade : A
## Sécurité
- SSL Labs : A+
- Headers sécurité : A
## Screenshots
[Captures d'écran]
## Licence
GPL v2
Phase 9 : Tests & Debug (Jour 19)
Checklist finale :
- [ ] Tous liens fonctionnels (no 404)
- [ ] Formulaire contact opérationnel
- [ ] Responsive mobile/tablet vérifié
- [ ] Tests navigateurs (Chrome, Firefox, Safari)
- [ ] Vitesse chargement < 2s
- [ ] Pas d’erreurs JS console
- [ ] Pas d’erreurs PHP logs
Phase 10 : Présentation (Jour 20)
Créer une présentation du projet incluant :
-
Slides (Google Slides ou PowerPoint) :
- Slide 1 : Titre + URL
- Slide 2 : Objectifs projet
- Slide 3 : Stack technique
- Slide 4 : Fonctionnalités clés
- Slide 5 : Screenshots
- Slide 6 : Metrics (PageSpeed, SEO)
- Slide 7 : Défis rencontrés
- Slide 8 : Apprentissages
- Slide 9 : Prochaines étapes
-
Vidéo démo (2-3 minutes) :
- Tour du site
- Fonctionnalité plugin custom
- Backend WordPress
- Performance tests
Évaluation projet
Grille notation (100 points) :
| Critère | Points |
|---|---|
| Infrastructure fonctionnelle | 10 |
| Sécurité (A+ SSL Labs) | 10 |
| Performance (90+ PageSpeed) | 15 |
| SEO (85+ Rank Math) | 15 |
| Design professionnel | 10 |
| 10 articles qualité | 15 |
| Plugin custom fonctionnel | 10 |
| GitHub documentation | 10 |
| Présentation | 5 |
Seuil de réussite : 70/100
Ressources projet
Toutes ressources des semaines 1-8 applicables.
Critères de réussite
- [ ] Site accessible en HTTPS
- [ ] 10 articles publiés et optimisés
- [ ] Score PageSpeed 90+
- [ ] Note SSL Labs A+
- [ ] Plugin custom fonctionnel
- [ ] Repository GitHub documenté
- [ ] Présentation complète
- [ ] Note finale 70+/100
Semaine 11-12 : Maintenance & Évolution
Objectif : Maintenir le site en production et planifier son évolution
Compétences à acquérir
- [ ] Monitoring proactif (Uptime, erreurs)
- [ ] Mises à jour sécurité WordPress/plugins
- [ ] Analyse analytics et ajustements
- [ ] Backups et restauration
- [ ] Scaling (si trafic augmente)
- [ ] Gestion incidents
- [ ] Planification contenu long terme
Projet pratique #9
« Plan de maintenance 6 mois »
Tâches :
- Configurer monitoring Uptime Robot
- Calendrier mises à jour (hebdo/mensuel)
- Automatiser backups (quotidien)
- Tester restauration backup
- Analyser Search Console (erreurs, opportunités)
- Créer calendrier éditorial 6 mois
- Planifier évolutions (features, refonte)
Temps estimé : 6-8h
Monitoring Uptime
Uptime Robot (gratuit, 50 monitors) :
- Créer compte : uptimerobot.com
- Ajouter monitor HTTP(S)
- URL :
https://votredomaine.com - Interval : 5 minutes
- Alert : Email + SMS
- URL :
- Ajouter monitor mots-clés (vérifier contenu présent)
Alternative : UptimeRobot CLI ou Netdata (self-hosted).
Mises à jour automatiques
Configuration wp-config.php :
// Updates automatiques sécurité (recommandé)
define('WP_AUTO_UPDATE_CORE', 'minor');
// OU updates automatiques tout (risqué)
// define('WP_AUTO_UPDATE_CORE', true);
// Updates plugins/thèmes auto (optionnel, peut casser)
add_filter('auto_update_plugin', '__return_true');
add_filter('auto_update_theme', '__return_true');
Processus manuel recommandé :
Hebdomadaire :
# Se connecter au VPS
ssh deployer@votredomaine.com
# Créer backup pré-update
sudo wo site update votredomaine.com --backup
# Mettre à jour WordPress core
sudo -u www-data wp core update \
--path=/var/www/votredomaine.com/htdocs
# Mettre à jour plugins
sudo -u www-data wp plugin update --all \
--path=/var/www/votredomaine.com/htdocs
# Mettre à jour thèmes
sudo -u www-data wp theme update --all \
--path=/var/www/votredomaine.com/htdocs
# Vérifier site fonctionnel
curl -I https://votredomaine.com
# Si problème, restaurer backup
# sudo wo site restore votredomaine.com --backup=20250118
Mensuel :
- Updates système :
sudo apt update && sudo apt upgrade - Updates stack :
sudo wo stack upgrade - Audit sécurité : Wordfence scan
- Vérification backups : Test restauration
- Revue analytics : GSC + GA4
Backups automatiques robustes
UpdraftPlus configuration :
-
Fréquence :
- Fichiers : Hebdomadaire
- Base de données : Quotidien
-
Rétention :
- Garder 7 backups fichiers
- Garder 30 backups DB
-
Stockage :
- Primaire : Google Drive ou Dropbox
- Secondaire : Serveur distant (rsync)
-
Notifications :
- Email après chaque backup
- Alerte si échec
Script backup système (en plus d’UpdraftPlus) :
#!/bin/bash
# Script : backup-wordpress.sh
SITE_ROOT="/var/www/votredomaine.com/htdocs"
BACKUP_DIR="/home/deployer/backups"
DATE=$(date +%Y%m%d_%H%M%S)
DB_NAME="votreprojet"
DB_USER="votreprojet"
DB_PASS="mot_de_passe"
# Créer dossier backup
mkdir -p "$BACKUP_DIR"
# Backup fichiers
tar -czf "$BACKUP_DIR/files_$DATE.tar.gz" "$SITE_ROOT"
# Backup base de données
mysqldump -u "$DB_USER" -p"$DB_PASS" "$DB_NAME" | gzip > "$BACKUP_DIR/db_$DATE.sql.gz"
# Garder seulement 7 derniers backups
find "$BACKUP_DIR" -name "files_*.tar.gz" -mtime +7 -delete
find "$BACKUP_DIR" -name "db_*.sql.gz" -mtime +7 -delete
# Notification
echo "Backup completed: $DATE" | mail -s "WordPress Backup" votre@email.com
Automatiser avec cron :
# Éditer crontab
crontab -e
# Ajouter ligne (backup quotidien 2h du matin)
0 2 * * * /home/deployer/scripts/backup-wordpress.sh
Test restauration backup
Important : Tester restauration tous les mois.
Procédure :
- Créer environnement staging
- Restaurer backup dans staging
- Vérifier site fonctionnel
- Noter durée restauration
- Documenter problèmes
Commandes :
# Créer site staging
sudo wo site create staging.votredomaine.com --wp --php82
# Restaurer backup UpdraftPlus
# Via interface WordPress Admin → UpdraftPlus → Restore
# OU restauration manuelle
cd /var/www/staging.votredomaine.com/htdocs
sudo tar -xzf /chemin/backup/files_20250118.tar.gz
sudo mysql staging_db < /chemin/backup/db_20250118.sql
# Ajuster wp-config.php (DB credentials)
sudo nano wp-config.php
# Search & Replace URLs
sudo -u www-data wp search-replace \
'https://votredomaine.com' \
'https://staging.votredomaine.com' \
--path=/var/www/staging.votredomaine.com/htdocs
Analyse Google Search Console
Vérifications hebdomadaires :
-
Performance :
- Tendance impressions
- Tendance clics
- CTR moyen (> 3% bon)
- Position moyenne (objectif top 10)
-
Couverture :
- Pages indexées (augmentation = bon)
- Erreurs 404 à corriger
- Pages exclues à investiguer
-
Améliorations :
- Core Web Vitals (LCP, FID, CLS)
- Ergonomie mobile (aucune erreur)
- HTTPS (100% des pages)
-
Requêtes :
- Top 10 requêtes
- Opportunités (position 11-20 à booster)
- Cannibalisation (2 pages même keyword)
Actions correctives :
- Erreur 404 : Créer redirection 301
- Baisse CTR : Améliorer meta description
- Position 11-20 : Optimiser contenu, ajouter liens internes
- Core Web Vitals : Optimiser images, cache
Calendrier éditorial long terme
Structure 6 mois (2 articles/semaine = 52 articles) :
Répartition thématiques :
- 40% Tutoriels techniques
- 30% Guides pratiques
- 20% Actualités/tendances
- 10% Opinion/retours d’expérience
Format Markdown :
# Calendrier Éditorial 2025 - S1
## Janvier
### Semaine 1
- [ ] **Article 1** : [Titre] - Mot-clé : [keyword] - Auteur : [nom]
- [ ] **Article 2** : [Titre] - Mot-clé : [keyword] - Auteur : [nom]
### Semaine 2
- [ ] **Article 3** : [Titre]
- [ ] **Article 4** : [Titre]
[...]
Utiliser Notion, Trello ou Google Sheets pour suivi.
Scaling (si forte croissance trafic)
Signaux scaling requis :
- Temps réponse > 2s constant
- CPU > 80% régulier
- RAM saturée
- Erreurs 502/503
Solutions :
-
Vertical scaling (+ de RAM/CPU) :
# Augmenter plan VPS chez hébergeur # Puis ajuster PHP-FPM sudo nano /etc/php/8.2/fpm/pool.d/www.conf # Augmenter pm.max_children -
Horizontal scaling (load balancer) :
- Nginx reverse proxy
- 2+ serveurs WordPress
- DB séparé
- Redis centralisé
-
CDN avancé :
- Cloudflare Pro (20$/mois)
- BunnyCDN
- KeyCDN
-
Managed WordPress :
- Kinsta
- WP Engine
- Cloudways
Plan de gestion incidents
Niveaux incidents :
-
P1 (Critique) : Site down, data loss
- Réponse : < 15 min
- Action : Restauration immédiate
-
P2 (Majeur) : Fonctionnalité cassée, lenteur extrême
- Réponse : < 1h
- Action : Fix + post-mortem
-
P3 (Mineur) : Bug visuel, lien cassé
- Réponse : < 24h
- Action : Fix planifié
Procédure incident P1 :
- Détection : Monitoring alerte
- Évaluation : Vérifier ampleur
- Communication : Twitter/status page
- Résolution :
- Restaurer backup récent
- OU rollback update
- OU hotfix
- Vérification : Site fonctionnel
- Post-mortem : Analyse cause, prévention
Documentation maintenance
Créer MAINTENANCE.md dans repository :
# Plan de Maintenance - votredomaine.com
## Tâches Quotidiennes
- [ ] Vérifier uptime (automatique)
- [ ] Vérifier backup (automatique)
## Tâches Hebdomadaires
- [ ] Updates WordPress/plugins/thèmes
- [ ] Vérifier logs erreurs
- [ ] Répondre commentaires
- [ ] Publier 2 articles
## Tâches Mensuelles
- [ ] Audit sécurité Wordfence
- [ ] Test restauration backup
- [ ] Analyse Google Search Console
- [ ] Revue analytics GA4
- [ ] Updates système Debian
## Tâches Trimestrielles
- [ ] Audit SEO complet
- [ ] Refresh contenu ancien
- [ ] Analyse concurrence
- [ ] Revue stratégie contenu
## Contacts Urgence
- Hébergeur : [contact]
- DNS : [contact]
- Développeur backup : [contact]
## Procédures Incidents
Voir section [Plan gestion incidents](#plan-de-gestion-incidents)
Ressources semaine 11-12
Critères de réussite
- [ ] Monitoring uptime actif (< 5 min check)
- [ ] Backups automatiques quotidiens
- [ ] Test restauration réussi
- [ ] Procédure updates documentée
- [ ] Calendrier éditorial 6 mois créé
- [ ] Plan gestion incidents documenté
- [ ] Analyse GSC hebdomadaire en place
- [ ] Aucun incident P1 non résolu en < 1h
Ressources officielles
Documentation technique
Debian :
Nginx :
PHP :
MariaDB :
WordPress :
WordOps :
Git & GitHub :
Outils SEO & Analytics
Outils Performance
Outils Sécurité
Communautés & Forums
IA & Automatisation
Critères de réussite
Certification finale (100 points)
1. Infrastructure & Sécurité (25 points)
- [ ] VPS Debian 12 opérationnel (5 pts)
- [ ] SSH sécurisé (clés uniquement) (3 pts)
- [ ] WordOps 3.22.0 installé (2 pts)
- [ ] Site WordPress HTTPS fonctionnel (5 pts)
- [ ] Note SSL Labs A+ (5 pts)
- [ ] Headers sécurité (note A Mozilla Observatory) (5 pts)
2. Performance (20 points)
- [ ] PageSpeed Insights 90+ mobile (5 pts)
- [ ] PageSpeed Insights 90+ desktop (5 pts)
- [ ] GTmetrix Grade A (5 pts)
- [ ] Temps chargement < 2s (5 pts)
3. SEO (20 points)
- [ ] Rank Math installé et configuré (3 pts)
- [ ] 10+ articles score Rank Math 85+ (10 pts)
- [ ] Google Search Console lié (2 pts)
- [ ] Sitemap XML soumis (2 pts)
- [ ] Schema.org validé (3 pts)
4. Contenu (15 points)
- [ ] 10+ articles publiés (10 pts)
- [ ] Longueur moyenne 1500+ mots (2 pts)
- [ ] Featured images partout (1 pt)
- [ ] Liens internes stratégiques (2 pts)
5. Développement (15 points)
- [ ] Thème custom ou child (5 pts)
- [ ] Plugin custom fonctionnel (5 pts)
- [ ] Code bien documenté (3 pts)
- [ ] Aucune erreur PHP logs (2 pts)
6. Git & Documentation (10 points)
- [ ] Repository GitHub public (2 pts)
- [ ] README.md professionnel (3 pts)
- [ ] 20+ commits significatifs (3 pts)
- [ ] .gitignore correct (2 pts)
7. Maintenance (5 points)
- [ ] Backups automatiques configurés (2 pts)
- [ ] Monitoring uptime actif (2 pts)
- [ ] Plan maintenance documenté (1 pt)
8. Projet Fil Rouge (10 points)
- [ ] Présentation slides (3 pts)
- [ ] Vidéo démo (3 pts)
- [ ] Respect cahier des charges (4 pts)
Seuils de réussite
- 70-79 points : Acquis (débutant autonome)
- 80-89 points : Bien (développeur junior)
- 90-100 points : Excellent (développeur confirmé)
Certification finale
Format
Présentation orale (20 minutes) :
- 10 min : Démo site + explications techniques
- 5 min : Défis rencontrés et solutions
- 5 min : Questions/réponses
Livrables :
- URL site WordPress fonctionnel
- Repository GitHub avec documentation
- Slides présentation (PDF)
- Vidéo démo (2-3 min)
- Rapport technique (Markdown, 5-10 pages)
Rapport technique structure
# Projet WordPress VPS - Rapport Technique
## 1. Introduction
- Objectifs projet
- Choix technologiques
## 2. Infrastructure
- Architecture système
- Stack LEMP
- Configuration serveur
## 3. Sécurité
- Mesures implémentées
- Tests sécurité
- Résultats audits
## 4. Performance
- Optimisations appliquées
- Benchmarks
- Comparaison avant/après
## 5. SEO & Contenu
- Stratégie SEO
- Recherche mots-clés
- Statistiques articles
## 6. Développement
- Thème (features)
- Plugin (fonctionnalités)
- Code highlights
## 7. Défis & Apprentissages
- Problèmes rencontrés
- Solutions trouvées
- Compétences acquises
## 8. Évolution Future
- Prochaines features
- Scalabilité
- Roadmap 6 mois
## Annexes
- Commandes utiles
- Screenshots
- Metrics complètes
Conseils de réussite
Organisation
- Planifier : Bloquer 10-15h/semaine dans votre agenda
- Documenter : Tenir un journal de bord (problèmes, solutions, apprentissages)
- Pratiquer : Ne pas se contenter de lire, FAIRE les exercices
- Persévérer : Les erreurs sont normales et formatrices
Apprentissage efficace
- Technique Feynman : Expliquer à voix haute ce que vous apprenez
- Pomodoro : 25 min focus + 5 min pause
- Active recall : Tester vos connaissances sans regarder la doc
- Spaced repetition : Revoir les concepts à intervalles croissants
Debugging
- Lire les logs :
/var/log/nginx/,/var/log/php/,wp-content/debug.log - Google est votre ami : Copier l’erreur exacte dans recherche
- Stack Overflow : 90% des erreurs ont déjà été résolues
- Documentation officielle : Toujours la source de vérité
Communauté
- Rejoindre forums : WordPress.org, Reddit r/WordPress
- Suivre experts : Twitter/X, YouTube, blogs
- Participer : Répondre aux questions d’autres débutants
- Partager : Documenter vos solutions (blog, GitHub)
Conclusion
Félicitations d’avoir entrepris ce parcours de 8-12 semaines.
À la fin, vous serez capable de :
- Gérer un serveur VPS Debian en production
- Déployer et maintenir WordPress avec WordOps
- Optimiser performance et sécurité
- Créer du contenu SEO-optimisé
- Développer thèmes et plugins WordPress
- Utiliser Git et GitHub professionnellement
- Automatiser avec l’IA (Claude, ChatGPT)
Prochaines étapes :
- Provisionner votre VPS
- Commencer Semaine 1
- Rejoindre la communauté
- Documenter votre progression
- Profiter de l’aventure
Bon courage et bon apprentissage !
Changelog
Version 1.0.0 – 2025-12-18
- Création parcours initial
- 12 semaines de contenu structuré
- 9 projets pratiques
- Ressources officielles vérifiées
- Critères de réussite définis
Support
Questions ? Besoin d’aide ?
- Email : contact@you.arewel.com
- GitHub Issues : Repository
- Site web : https://you.arewel.com
Made with passion for you.arewel.com DevOps, SRE & Cloud Engineering depuis 2003