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
- 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
- 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
- [ ] 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
- Ordinateur avec terminal SSH (Windows : WSL2, PuTTY / Mac, Linux : terminal natif)
- Éditeur de code (VS Code recommandé)
- Navigateur moderne (Chrome, Firefox)
- [ ] 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)
- 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
Vue d’ensemble
Ce parcours d’apprentissage vous guidera de débutant à développeur WordPress autonome capable de :
Stack technologique :
Prérequis
Avant de commencer
Matériel requis
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
Projet pratique #1
« Sécuriser mon VPS »
Tâches :
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/sshdconfig
sudo systemctl restart ssh
Ressources semaine 1
/usr/share/doc/fail2ban/Critères de réussite
/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
apt update, apt upgrade)Projet pratique #2
« Installer LEMP manuellement »
Tâches :
mysqlsecureinstallationinfo.phpTemps 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 mysqlsecureinstallation
# Gestion base de données
sudo mysql
CREATE DATABASE testdb;
CREATE USER 'testuser'@'localhost' IDENTIFIED BY 'motdepassefort';
GRANT ALL PRIVILEGES ON testdb. TO 'testuser'@'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;
servername test.votredomaine.com;
root /var/www/test;
index index.php index.html;
location ~ .php$ {
include snippets/fastcgi-php.conf;
fastcgipass 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
Semaine 3 : WordOps & Premier Site WordPress
Objectif : Installer WordOps et déployer votre premier site WordPress automatisé
Compétences à acquérir
Projet pratique #3
« Déployer WordPress avec WordOps »
Tâches :
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
https://votredomaine.com/wp-adminAjouter dans wp-config.php :
// Désactiver éditeur de fichiers
define('DISALLOWFILEEDIT', true);
// Forcer HTTPS
define('FORCESSLADMIN', true);
// Augmenter memory limit
define('WPMEMORYLIMIT', '256M');
// Activer debug (développement seulement)
define('WPDEBUG', false);
define('WPDEBUGLOG', false);
Ressources semaine 3
Critères de réussite
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
Projet pratique #4
« Forteresse WordPress »
Tâches :
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
addheader Strict-Transport-Security "max-age=31536000; includeSubDomains; preload" always;
addheader X-Frame-Options "SAMEORIGIN" always;
addheader X-Content-Type-Options "nosniff" always;
addheader X-XSS-Protection "1; mode=block" always;
addheader Referrer-Policy "strict-origin-when-cross-origin" always;
addheader Permissions-Policy "geolocation=(), microphone=(), camera=()" always;
addheader 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
KEY', 'votre-clé-unique-ici');
define('SECUREAUTHKEY', 'votre-clé-unique-ici');
define('LOGGEDINKEY', 'votre-clé-unique-ici');
define('NONCEKEY', 'votre-clé-unique-ici');
define('AUTHSALT', 'votre-clé-unique-ici');
define('SECUREAUTHSALT', 'votre-clé-unique-ici');
define('LOGGEDINSALT', 'votre-clé-unique-ici');
define('NONCESALT', 'votre-clé-unique-ici');
// === Sécurité ===
define('DISALLOWFILEEDIT', true);
define('DISALLOWFILEMODS', false); // true = bloquer installation plugins/thèmes
define('FORCESSLADMIN', true);
define('WPAUTOUPDATECORE', 'minor'); // Updates sécurité auto
// === Performance ===
define('WPMEMORYLIMIT', '256M');
define('WPMAXMEMORYLIMIT', '512M');
define('WPPOSTREVISIONS', 5);
define('AUTOSAVEINTERVAL', 300);
define('EMPTYTRASHDAYS', 7);
// === Cache ===
define('WPCACHE', true);
// === Debugging (DÉSACTIVER EN PRODUCTION) ===
define('WPDEBUG', false);
define('WPDEBUGLOG', false);
define('WPDEBUGDISPLAY', false);
define('SCRIPTDEBUG', 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
– Firewall applicatif
– Scan malware
– Protection brute-force
– 2FA (authentification à deux facteurs)
– Backups automatiques
– Stockage cloud (Google Drive, Dropbox, S3)
– Restauration en un clic
– Protection brute-force additionnelle
– Logs tentatives de connexion
Désactiver XML-RPC
Ajouter dans wp-config.php :
// Désactiver XML-RPC
addfilter('xmlrpcenabled', 'returnfalse');
Ou bloquer dans Nginx (déjà inclus dans WordOps) :
location = /xmlrpc.php {
deny all;
accesslog off;
lognotfound 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
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
.DSStore
Thumbs.db
.swp
.bak
~
# Environnements
.env
.env.local
# IDE
.vscode/
.idea/
.sublime-project
.sublime-workspace
# Dépendances
nodemodules/
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
!Version
!WordPress
!PHP
## 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
Télécharger le thème
Uploader via WordPress Admin → Apparence → Thèmes
Activer le thème
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
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
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 :
Plugin optionnel : Lazy Load by WP Rocket pour iframes et vidéos.
Configuration Cloudflare CDN
– SSL/TLS: Full (Strict)
– Auto Minify: JS, CSS, HTML
– Brotli: ON
– HTTP/2: ON
– HTTP/3 (QUIC): ON
Configuration Cloudflare optimale :
Speed → Optimization :
Caching :
Rules → Page Rules (gratuit : 3 règles) :
Règle 1 : Cache everything
votredomaine.com/Règle 2 : Bypass wp-admin
votredomaine.com/wp-admin/Règle 3 : Bypass wp-login
votredomaine.com/wp-login.phpTests 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: %{timetotal}sn" 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
Semaine 7 : SEO & Rank Math
Objectif : Optimiser le référencement naturel avec Rank Math SEO
Compétences à acquérir
Projet pratique #7
"SEO WordPress parfait"
Tâches :
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 :
Configuration Rank Math avancée
Rank Math → General Settings → Breadcrumbs :
/ ou →Ajouter au thème (avant le titre) :
exists('rankmaththebreadcrumbs') ) {
rankmaththebreadcrumbs();
}
?>
Rank Math → Titles & Meta :
Configuration par type :
%title% %sep% %sitename%%title% %sep% %sitename%%term% Archives %sep% %sitename%Rank Math → Sitemap Settings :
Sitemap URL : https://votredomaine.com/sitemapindex.xml
Optimisation article (on-page SEO)
Checklist par article :
Objectif : Score Rank Math 90+/100
Schema.org markup
Rank Math ajoute automatiquement Schema.org.
Vérifier types activés :
Tester Schema : Google Rich Results Test
Open Graph et Twitter Cards
Rank Math → Titles & Meta → Social Meta :
Par article, Rank Math génère automatiquement :
og:titleog:descriptionog:imageog:urltwitter:cardVérifier : Facebook Sharing Debugger
Google Search Console
https://votredomaine.com/sitemapindex.xmlMétriques à suivre :
Google Analytics 4
Installation via plugin Site Kit by Google ou code manuel.
Code tracking (dans ) :
Recherche de mots-clés
Outils gratuits :
Critères mot-clé :
Ressources semaine 7
Critères de réussite
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
Projet pratique #8
"Blog WordPress alimenté par IA"
Tâches :
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 et la France.
Public : Administrateurs systèmes, DevOps, SRE, développeurs backend.
Propose-moi 5 idées d'articles sur le thème "Docker" qui sont :
Recherchés (mots-clés volume > 500/mois)
Peu concurrentiels (difficulty < 40)
Pratiques (tutoriels ou guides)
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 :
Introduction accrocheuse (problème + solution)
5-7 sections H2 logiques
Sous-sections H3 si nécessaire
Exemples de code concrets
Section FAQ (3-5 questions)
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 :
Introduction (150 mots)
- Problème concret
- Impact sur le lecteur
- Promesse de solution
Prérequis (50 mots)
- Liste à puces
- Connaissances requises
- Outils nécessaires
Corps de l'article (1500 mots)
- 5 sections H2
- Exemples de code commentés
- Captures d'écran décrites
- Tips et warnings
FAQ (200 mots)
- 5 questions courantes
- Réponses concises
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 :
Automatisation Make.com (optionnel)
Exemple workflow :
Nécessite : API WordPress REST activée, Make.com (gratuit limité).
Best practices IA
À FAIRE :
À NE PAS FAIRE :
Ressources semaine 8
Critères de réussite
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 :
Phase 1 : Infrastructure (Jour 1-2)
Tâches :
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 :
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 :
Phase 4 : Plugin Custom (Jour 6-7)
Créer un plugin avec 1 fonctionnalité au choix :
Idées :
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 :
Structure article type :
Phase 6 : Performance (Jour 13-14)
Tâches :
Phase 7 : SEO (Jour 15-16)
Tâches :
Phase 8 : Git & Documentation (Jour 17-18)
Tâches :
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 :
Phase 10 : Présentation (Jour 20)
Créer une présentation du projet incluant :
- 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
- 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
Semaine 11-12 : Maintenance & Évolution
Objectif : Maintenir le site en production et planifier son évolution
Compétences à acquérir
Projet pratique #9
"Plan de maintenance 6 mois"
Tâches :
Temps estimé : 6-8h
Monitoring Uptime
Uptime Robot (gratuit, 50 monitors) :
- URL : https://votredomaine.com
- Interval : 5 minutes
- Alert : Email + SMS
Alternative : UptimeRobot CLI ou Netdata (self-hosted).
Mises à jour automatiques
Configuration wp-config.php :
// Updates automatiques sécurité (recommandé)
define('WPAUTOUPDATECORE', 'minor');
// OU updates automatiques tout (risqué)
// define('WPAUTOUPDATECORE', true);
// Updates plugins/thèmes auto (optionnel, peut casser)
addfilter('autoupdateplugin', 'returntrue');
addfilter('autoupdatetheme', '_returntrue');
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 :
sudo apt update && sudo apt upgradesudo wo stack upgradeBackups automatiques robustes
UpdraftPlus configuration :
- Fichiers : Hebdomadaire
- Base de données : Quotidien
- Garder 7 backups fichiers
- Garder 30 backups DB
- Primaire : Google Drive ou Dropbox
- Secondaire : Serveur distant (rsync)
- Email après chaque backup
- Alerte si échec
Script backup système (en plus d'UpdraftPlus) :
#!/bin/bash
# Script : backup-wordpress.sh
SITEROOT="/var/www/votredomaine.com/htdocs"
BACKUPDIR="/home/deployer/backups"
DATE=$(date +%Y%m%d%H%M%S)
DBNAME="votreprojet"
DBUSER="votreprojet"
DBPASS="motdepasse"
# Créer dossier backup
mkdir -p "$BACKUPDIR"
# Backup fichiers
tar -czf "$BACKUPDIR/files$DATE.tar.gz" "$SITEROOT"
# Backup base de données
mysqldump -u "$DBUSER" -p"$DBPASS" "$DBNAME" | gzip > "$BACKUPDIR/db$DATE.sql.gz"
# Garder seulement 7 derniers backups
find "$BACKUPDIR" -name "files.tar.gz" -mtime +7 -delete
find "$BACKUPDIR" -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 :
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/files20250118.tar.gz
sudo mysql stagingdb < /chemin/backup/db20250118.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 :
- Tendance impressions
- Tendance clics
- CTR moyen (> 3% bon)
- Position moyenne (objectif top 10)
- Pages indexées (augmentation = bon)
- Erreurs 404 à corriger
- Pages exclues à investiguer
- Core Web Vitals (LCP, FID, CLS)
- Ergonomie mobile (aucune erreur)
- HTTPS (100% des pages)
- Top 10 requêtes
- Opportunités (position 11-20 à booster)
- Cannibalisation (2 pages même keyword)
Actions correctives :
Calendrier éditorial long terme
Structure 6 mois (2 articles/semaine = 52 articles) :
Répartition thématiques :
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 :
Solutions :
# Augmenter plan VPS chez hébergeur
# Puis ajuster PHP-FPM
sudo nano /etc/php/8.2/fpm/pool.d/www.conf
# Augmenter pm.maxchildren
- Nginx reverse proxy
- 2+ serveurs WordPress
- DB séparé
- Redis centralisé
- Cloudflare Pro (20$/mois)
- BunnyCDN
- KeyCDN
- Kinsta
- WP Engine
- Cloudways
Plan de gestion incidents
Niveaux incidents :
- Réponse : < 15 min - Action : Restauration immédiate
- Réponse : < 1h - Action : Fix + post-mortem
- Réponse : < 24h - Action : Fix planifié Procédure incident P1 :
- Restaurer backup récent
- OU rollback update
- OU hotfix
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
Ressources semaine 11-12
Critères de réussite
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)
2. Performance (20 points)
3. SEO (20 points)
4. Contenu (15 points)
5. Développement (15 points)
6. Git & Documentation (10 points)
7. Maintenance (5 points)
8. Projet Fil Rouge (10 points)
Seuils de réussite
Certification finale
Format
Présentation orale (20 minutes) :
Livrables :
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
Apprentissage efficace
Debugging
/var/log/nginx/, /var/log/php/, wp-content/debug.logCommunauté
Conclusion
Félicitations d'avoir entrepris ce parcours de 8-12 semaines.
À la fin, vous serez capable de :
Prochaines étapes :
Bon courage et bon apprentissage !
Changelog
Version 1.0.0 - 2025-12-18
Support
Questions ? Besoin d'aide ?
Made with passion for you.arewel.com
DevOps, SRE & Cloud Engineering depuis 2003