Parcours d’Apprentissage : Développeur WordPress sur VPS (Débutant)
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
Générer clé SSH pour GitHub (si pas déjà fait)
ssh-keygen -t ed25519 -C "votre@email.com" cat ~/.ssh/ided25519.pubCopier 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 .htaccessContenu 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.localIDE
.vscode/ .idea/ .sublime-project .sublime-workspaceDépendances
nodemodules/ vendor/ composer.phar package-lock.jsonBranches 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
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
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