La plupart des gens installent WordPress le facile chemin. Nous allons l'installer le droite chemin. sécurisé, répétable et pour ce que ça vaut, c'est toujours facile.
WordPress n'est pas piraté parce qu'il est mauvais, mais parce que des gens négligent leurs obligations.
WordPress propulse plus d'un tiers du web. Bien qu'il soit réputé pour son installation en cinq minutes, la plupart des utilisateurs le configurent de manière à laisser des failles aux pirates et des soucis à long terme. Bien l'installer ne vise pas à compliquer les choses, mais à établir des bases solides pour la performance, la sécurité et la stabilité. Une configuration bâclée ou copiée-collée cache souvent des failles dangereuses que les robots et les scanners savent exploiter. En consacrant quelques minutes supplémentaires à configurer correctement la base de données, à verrouiller PHP et à utiliser une configuration Nginx renforcée, vous vous protégez des problèmes qui peuvent mettre des sites entiers hors ligne. Imaginez la construction d'une maison : n'importe qui peut y mettre quatre murs, mais seule une construction soignée résistera à une tempête. Ce guide vous guide pas à pas dans le processus complet pour vous permettre de profiter pleinement de WordPress sans commettre les erreurs courantes.
Très bien, laissons tomber les bavardages
Qu'allons-nous utiliser ?
- Système:Ubuntu 22.04 ou 24.04 est recommandé
- Base de données: MariaDB pour les performances et la stabilité
- Serveur Web: NGINX pour les performances et la stabilité
- Mise en cache: Redis - magasin de données en mémoire hautes performances
- SSL: CertBot
- Suppléments: Rechargement automatique Nginx, compression Brotli, journalisation sécurisée, obfuscation des e-mails
Ubuntu est devenu mon système d'exploitation serveur de référence depuis que Red Hat a « supprimé » CentOS. Sa simplicité d'utilisation, sa documentation complète, son solide soutien communautaire et la large disponibilité de logiciels à jour en font un choix naturel pour les débutants comme pour les professionnels. Il offre un équilibre parfait entre stabilité et fonctionnalités modernes, ce qui est exactement ce qu'il faut pour un système aussi largement ciblé que WordPress.
Préparez votre serveur
Préparons la pile. Nous commencerons par ajouter le PPA de confiance d'Ondrej, qui maintient les versions PHP et Nginx à jour pour Ubuntu. Ensuite, nous installerons Nginx, MariaDB, Redis, ACL et tous les packages PHP 8.4 nécessaires aux applications WordPress.
sudo apt install python-software-properties
sudo add-apt-repository ppa:ondrej/nginx
sudo add-apt-repository ppa:ondrej/php
sudo apt update && sudo apt upgrade -y
sudo apt install -y nginx nginx-extras mariadb-server unzip curl redis-server imagemagick acl less file
sudo apt install -y php8.4-fpm php8.4-mysql \
php8.4-curl php8.4-xml php8.4-zip php8.4-gd php8.4-mbstring php8.4-bcmath \
php8.4-intl php8.4-soap php8.4-imagick php8.4-cli# Allow NGINX in the Firewall (For this instance UFW)
sudo ufw allow OpenSSH
sudo ufw allow 'Nginx Full'
sudo ufw enableComme toujours, je recommande de désactiver la connexion root SSH via ssh_config et de désactiver l'authentification par mot de passe et de recourir aux clés SSH pour des raisons de sécurité.
Configurer la base de données
Lorsque vous installez MariaDB pour la première fois, c'est comme emménager dans un nouvel appartement avec les portes déverrouillées, un double des clés sur la table et un paillasson « Bienvenue Hacker » à l'entrée. mysql_secure_installation le script existe pour fermer ces portes avant que quiconque n'entre.
sudo mysql_secure_installationSwitch to unix_socket authentication [Y/n] N
Change the root password? [Y/n] As you wish
Remove anonymous users? [Y/n] Y
Disallow root login remotely? [Y/n] Y
Remove test database and access to it? [Y/n] Y
Reload privilege tables now? [Y/n] YCréez une base de données et un utilisateur dédiés à WordPress. C'est là que seront stockées la plupart, voire la totalité, de vos données WordPress. Veillez donc à choisir un mot de passe fort.
# Change the DB/User Names, Password as you wish
CREATE DATABASE wp CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci;
CREATE USER 'wpuser'@'localhost' IDENTIFIED BY 'VERY_STRONGPASS!';
GRANT ALL PRIVILEGES ON wp.* TO 'wpuser'@'localhost';
FLUSH PRIVILEGES;Réglage recommandé pour améliorer les performances et la sécurité de la base de données, Modifier /etc/mysql/mariadb.conf.d/50-server.cnf
[mysqld]
bind-address = 127.0.0.1
# Adjust as you like.
# ~50-70% of RAM on DB-only servers
innodb_buffer_pool_size = 1G
innodb_log_file_size = 256M
innodb_flush_method = O_DIRECT
max_connections = 200
query_cache_size = 0
query_cache_type = 0sudo systemctl restart mariadbOptimiser PHP pour WordPress
Nous allons ensuite modifier quelques paramètres PHP clés. Ces petits changements ont un impact considérable sur la stabilité et la sécurité, notamment pour les sites WordPress à fort trafic.
Ouvrir /etc/php/8.4/fpm/php.ini ou 8.4 et décommentez/ajoutez ce qui suit
memory_limit = 256M
; These values are kinda low. So adjust as you like
upload_max_filesize = 64M
; Post_Max_size always needs to be the same as file max upload or higher. Never lower
post_max_size = 64M
max_execution_time = 120
; Security: prevent path-info exploits
cgi.fix_pathinfo = 0
expose_php = Off
; Enable OPcache, dramatically improves performance
zend_extension=opcache
opcache.enable=1
opcache.memory_consumption=128
opcache.max_accelerated_files=10000
opcache.validate_timestamps=1# Reload PHP-fpm
sudo systemctl reload php8.4-fpm # or 8.4Télécharger WordPress via WP-CLI
Au lieu de gérer WordPress via le navigateur à chaque fois, vous pouvez utiliser WP-CLI, un shell qui vous permet d'installer, de mettre à jour et de gérer WordPress avec de simples commandes de terminal. Indispensable pour les développeurs, les scripts d'automatisation ou toute personne gérant plusieurs sites. Installons WP-CLI.
# Login as a user other than the root, for better security
sudo -u ubuntu -i
curl -sS -o /usr/local/bin/wp https://raw.githubusercontent.com/wp-cli/builds/gh-pages/phar/wp-cli.phar
chmod +x /usr/local/bin/wp
# You shoulod see WP-Cli Version now
wp --infoSi vous obtenez une erreur d'autorisation ou si la version ne s'affiche pas, utilisez la commande suivante. Sinon, ignorez-la.
curl -fsSL https://raw.githubusercontent.com/wp-cli/builds/gh-pages/phar/wp-cli.phar \
| sudo tee /usr/local/bin/wp >/dev/null
sudo chmod +x /usr/local/bin/wpEnsuite, créez le répertoire qui contiendra vos fichiers WordPress. C'est votre racine Web, l'emplacement depuis lequel Nginx diffusera le contenu. Vous pouvez lui donner un nom ou le placer n'importe où sur votre système, mais assurez-vous qu'il est accessible en écriture par le serveur web. www-data.
mkdir -p /var/www/blog
sudo chown -R www-data:www-data /var/www/blog
cd /var/www/blogUne fois l'installation terminée et la base de données créée, il est temps de donner vie à WordPress. Au lieu de le télécharger manuellement, nous utiliserons WP-CLI, plus rapide, plus propre et parfait pour les configurations automatisées.
Télécharger et configurer : Vous pouvez continuer l'installation en utilisant votre navigateur après wp core download --locale=en_US ou CLI (ci-dessous).
sudo -u www-data wp core download --locale=en_US
# The DB/User/Password you created earlier
sudo -u www-data wp config create --dbname=wp --dbuser=wpuser --dbpass=VERY_STRONGPASS! --dbhost=localhost --dbprefix=wp_
# Do not use default username: admin, Choose something more secure
sudo -u www-data wp core install --url="https://example.com" --title="My Site" --admin_user="myusername" --admin_password="ANOTHERSTRONGPASS" --admin_email="me@example.com"Une fois WordPress installé, il est temps de verrouiller ses fichiers. L'objectif est simple : le serveur web (www-data) devrait être capable de lire et écrire uniquement ce dont il a absolument besoin, et rien de plus. Cela réduit considérablement les risques qu'un attaquant implante ou modifie des fichiers via un exploit de plugin ou un téléchargement mal configuré.
find /var/www/blog -type d -exec chmod 755 {} \;
find /var/www/blog -type f -exec chmod 644 {} \;
rm /var/www/blog/wp-config-sample.php
rm /var/www/blog/readme.htmlPassons maintenant au dossier le plus sensible de tous, wp-config.php. Il contient vos informations d'identification et vos clés de base de données, alors traitez-le comme un mot de passe root. puis effacez l'historique de session car nous avons utilisé un mot de passe en texte brut dans le shell.
nous faisons wp-config.php lisible uniquement par www-data, et en vérifiant avec getfacl La liste de contrôle d'accès (ACL) est correcte. Cela garantit que le serveur web peut lire le fichier pour charger WordPress, mais ne peut ni le modifier ni l'écraser.
chown ubuntu:www-data /var/www/blog/wp-config.php
chown ubuntu:www-data /var/www/blog/wp-admin
chown ubuntu:www-data /var/www/blog/wp-includes
# WP-CONFIG should always have 600 (-rw-------) or 440 (-r--r-----+) permission
chmod 440 /var/www/blog/wp-config.php
sudo setfacl -m u:www-data:r /var/www/blog/wp-config.php
# ensure mask allows read
sudo setfacl -m m::r /var/www/blog/wp-config.php
getfacl /var/www/blog/wp-config.php
# https://developer.wordpress.org/advanced-administration/security/hardening/#file-permissions
# Clear Session Command History
history -cSécuriser et optimiser WordPress
WordPress utilise un ensemble de clés cryptographiques et de sels pour sécuriser les sessions utilisateur et les cookies. Ils rendent quasiment impossible le piratage d'une connexion ou la réutilisation des jetons d'authentification.
# Set unique salts & keys
sudo -u ubuntu wp config shuffle-saltsAvant de conclure, ajoutons quelques lignes supplémentaires à wp-config.php pour que WordPress se comporte de manière plus prévisible et plus sécurisée.
Modifierwp-config.php et ajoutez ce qui suit juste au-dessus « C'est tout, arrêtez de modifier ! »
# Disable file editing inside WP-Admin
define('DISALLOW_FILE_EDIT', true);
# Limit Revisions to 5
define('WP_POST_REVISIONS', 5);
# Disable WP cron (use system cron)
define('DISABLE_WP_CRON', true);
# Save/Exit the filePuisque nous avons désactivé le cron interne de WordPress, nous allons maintenant le remplacer par une tâche cron système appropriée. Cela garantit que les tâches planifiées, comme la publication d'articles, l'envoi d'e-mails ou les mises à jour, se déclenchent à temps, même si votre site a peu de trafic.
sudo -u www-data crontab -e
# Append the following at the end of the file
* * * * * /usr/local/bin/wp --path=/var/www/blog cron event run --due-now --quiet# To list upcoming scheduled events
sudo -u www-data wp cron event list
# To run all pending (due) cron events immediately
sudo -u www-data -H wp cron event run --due-nowConfigurer le serveur Web NGINX
Maintenant que WordPress est installé et sécurisé, installons-le sur un serveur web approprié. Nous utiliserons Nginx, une alternative légère et performante à Apache pour gérer le trafic de votre site, gérer SSL et même agir comme un équilibreur de charge si vous prévoyez une évolution ultérieure.
Tout d’abord, configurons Certbot pour émettre un certificat SSL gratuit | Clé API CloudflareSi vous n'utilisez pas Cloudflare, trouvez votre fournisseur ici ou utilisez la méthode HTTP.
Gardez à l'esprit que "blog.confVous pouvez renommer « comme vous le souhaitez ». Au cas où ce ne serait pas clair.
sudo apt install -y certbot python3-certbot-dns-cloudflare
sudo mkdir -p /etc/letsencrypt
echo "dns_cloudflare_api_token = YOUR_API_TOKEN_HERE" > /etc/.cloudflare.ini
sudo chmod 600 /root/.cloudflare.ini# Issue a Certificate
sudo certbot certonly -d example.com -d "*.example.com" \
--dns-cloudflare \
--dns-cloudflare-credentials /etc/.cloudflare.ini \
--key-type rsa \
--rsa-key-size 2048 \
--agree-tos \
--force-renewal\
--no-eff-email\
--email YOUR@EMAIL.COM
# The cert output should be in /etc/letsencrypt/live/example.com/Maintenant, configurons NGINX. Fichiers de configuration : Dans mon Github. N'oubliez pas pour remplacer « example.com » dans les fichiers par votre domaine et le chemin du certificat SSL.
nano /etc/nginx/nginx.conf
# Apend/Modify the following inside http{} block
http2 on;
ssl_protocols TLSv1.2 TLSv1.3; # Drop v1, v1.1 - Keep only 1.2 & 1.3cd /etc/nginx/sites-available/
wget -O /etc/nginx/sites-available/blog.conf https://raw.githubusercontent.com/abdessalllam/cloud-setup/refs/heads/main/wordpress/blog.conf
# Disable directory browsing
echo "autoindex off;" > /etc/nginx/snippets/no-autoindex.conf
# Enable the Website and Reload NGINX
sudo ln -s /etc/nginx/sites-available/blog.conf /etc/nginx/sites-enabled/
sudo nginx -t && sudo systemctl reload nginxActiver la prise en charge de Cloudflare
Si vous utilisez Cloudflare avec Reverse Proxy, nous devons ajouter Gammes CF pour garantir que notre serveur obtienne l'adresse IP réelle du visiteur. Dernières mises à jour de Cloudflare IPv4 – IPv6 Gammes
La même chose peut s’appliquer à d’autres équilibreurs de charge. Il vous suffit de modifier le fichier ci-dessous pour inclure « uniquement » leurs plages IP.
wget -O /etc/nginx/conf.d/realip.conf https://raw.githubusercontent.com/abdessalllam/cloud-setup/refs/heads/main/wordpress/realip.conf
sudo nginx -t && sudo systemctl reload nginxCeci est important, surtout si vous utilisez des analyses et/ou un plugin WAF pour votre WordPress.
Tous les fichiers .conf sous conf.d seront inclus automatiquement par défaut
(Facultatif) Créez le fichier ip.php dans le dossier /var/www/blog et testez si Nginx obtient la véritable adresse IP. (Supprimez-le une fois terminé.)
<?php
header('Content-Type: text/plain');
foreach (['REMOTE_ADDR','HTTP_CF_CONNECTING_IP','HTTP_X_FORWARDED_FOR'] as $h) {
echo "$h: " . ($_SERVER[$h] ?? '') . "\n";
}Maintenant, installez le plugin Cloudflare et appliquez les paramètres recommandés.
Configurer la mise en cache Redis
Redis est l'un des meilleurs moyens d'accélérer WordPress (mise en cache d'objets, parfois mise en cache de pages)
sudo systemctl enable redis-server
sudo systemctl start redis-serverSécurisez Redis en éditant /etc/redis/redis.conf
# Append/Uncomment/Modify the following
supervised systemd
maxmemory 256mb # adjust for your RAM
maxmemory-policy allkeys-lru # evict least-used keysInstaller les plugins essentiels
sudo -u www-data wp plugin install redis-cache --activate
sudo -u www-data wp redis enable
sudo -u www-data wp plugin install nginx-helper --activateInstaller et configurer Brotli
Brotli accélère le chargement de votre site web en envoyant moins d'octets sur Internet, comme si vous compressiez les fichiers avant de les envoyer par e-mail, mais automatiquement et de manière invisible pour l'utilisateur. C'est mieux que Gzip.
# Only with ppa:ondrej/nginx Repo
sudo apt install libnginx-mod-http-brotli-filter libnginx-mod-http-brotli-staticnano /etc/nginx/nginx.conf# Append the following to inside http{} block, above "gzip on"
brotli on;
brotli_comp_level 5;
brotli_static on; # serve precompressed .br if present (harmless if not)
brotli_types
text/plain text/css text/javascript application/javascript
application/json application/xml application/rss+xml
application/vnd.ms-fontobject application/font-sfnt
application/x-font-ttf font/ttf font/otf image/svg+xml;
# Append/Uncomment the following
gzip on;
gzip_comp_level 6;
gzip_types text/plain text/css application/javascript application/json application/xml image/svg+xml;Rechargez NGINX et testez si Brotli fonctionne
sudo nginx -t && sudo systemctl reload nginx
# Brotli client
curl -sI -H 'Accept-Encoding: br' https://yourdomain | grep -i content-encoding
# Response → Content-Encoding: br
# Gzip client
curl -sI -H 'Accept-Encoding: gzip' https://yourdomain | grep -i content-encoding
# Response → Content-Encoding: gzip (or nothing if already tiny)Rechargement automatique NGINX
Si vous commencez à utiliser des plugins comme Smush, Yoast SEO Redirects, etc., tout plugin nécessitant des fichiers d'inclusion dans « blog.conf » ou « nginx.conf » doit être activé. Chaque fois que le plugin modifie ce fichier, nous devons recharger NGINX. Créons donc un service qui effectue cette opération automatiquement.
# Create a /etc/systemd/system/nginx-auto-reload.service
[Unit]
Description=Validate and reload Nginx when watched files change
[Service]
Type=oneshot
# Validate config & Stop if there are errors
ExecStart=/usr/sbin/nginx -t
# Reload ONLY if ExecStart succeeded
ExecStartPost=/bin/systemctl reload nginx# Create /etc/systemd/system/nginx-auto-reload.path
[Unit]
Description=Watch specific Nginx-related files
[Path]
# Add one line per file you want to monitor for changes
# Add/Remove Lines as needed
PathChanged=/var/www/blog/file1.conf
PathChanged=/var/www/blog/file2.conf
PathChanged=/var/www/blog/file3.conf
[Install]
WantedBy=multi-user.targetActiver et démarrer
sudo systemctl daemon-reload
sudo systemctl enable --now nginx-auto-reload.path
# (optional first run)
sudo systemctl start nginx-auto-reload.serviceTest: Modifiez l’un des fichiers surveillés, puis
journalctl -u nginx-auto-reload.service -n 20 --no-pager
# You should see nginx: configuration file /etc/nginx/nginx.conf test is successful followed by a reload. If the config is broken, nginx -t will fail and no reload happens.Sécuriser et optimiser PHP
Optimisons maintenant PHP pour améliorer ses performances et sa sécurité. La valeur par défaut php.ini Ces valeurs sont destinées au développement, et non à la production. Elles sont sûres, mais loin d'être optimales. Ces ajustements rendront votre serveur plus rapide, plus sûr et mieux adapté à WordPress à grande échelle.
Modifiez/ajoutez les éléments suivants aux fichiers appropriés.
; Core
expose_php = 0
cgi.fix_pathinfo = 0 ; never guess script names
default_charset = UTF-8
max_execution_time = 120
memory_limit = 512M ; raise if you run heavy builders
post_max_size = 64M
upload_max_filesize = 64M
max_input_vars = 5000
realpath_cache_size = 4096k
realpath_cache_ttl = 600
; Errors (log, don't leak)
display_errors = Off
log_errors = On
error_reporting = E_ALL & ~E_DEPRECATED & ~E_STRICT
zend.exception_ignore_args = On
; Sessions (secure cookies)
session.use_strict_mode = 1
session.cookie_httponly = 1
session.cookie_secure = 1 ; keep https-only
session.cookie_samesite = Lax
session.sid_length = 48
session.sid_bits_per_character = 6
; per-pool session.save_path is set in pool conf for isolation
; Opcache (prod profile)
opcache.enable = 1
opcache.enable_cli = 1 ; faster WP-CLI
opcache.jit = off ; JIT is useless for WP
opcache.memory_consumption = 256
opcache.interned_strings_buffer = 64
opcache.max_accelerated_files = 130987 ; ~128k hash slots
opcache.max_wasted_percentage = 5
opcache.validate_timestamps = 0 ; immutable code in prod
opcache.revalidate_freq = 0 ; reload FPM on deploy
opcache.fast_shutdown = 1
opcache.save_comments = 1 ; plugins use reflection
; If you deploy often and don't reload, use:
; opcache.validate_timestamps=1
; opcache.revalidate_freq=60
; Optional: APCu (micro-cache inside each FPM worker)
; install: apt-get install php8.4-apcu
apc.enabled = 1
apc.enable_cli = 0
apc.shm_size = 64M
apc.entries_hint = 4096
apc.ttl = 120
apc.gc_ttl = 240Ajustons maintenant PHP-FPM, le gestionnaire de processus FastCGI qui exécute votre code PHP. C'est là que se cachent la plupart des goulots d'étranglement des performances, notamment sur les sites WordPress à fort trafic.
; PROCESS MODEL
pm = dynamic
; I use: max_children ≈ (MemAvailable - reserve_for_DB_OS) / avg_child_MB
pm.max_children = 20
pm.start_servers = 4
pm.min_spare_servers = 4
pm.max_spare_servers = 20
pm.max_requests = 800 ; recycle to kill leaks
; LISTENING
listen = /run/php/php8.4-fpm.sock
listen.mode = 0660
listen.owner = www-data
listen.group = www-data
; SECURITY GUARD RAILS
clear_env = yes
security.limit_extensions = .php
; Harden only FPM SAPI; leave CLI free for wp-cli
php_admin_value[disable_functions] = exec,passthru,shell_exec,system,proc_open,proc_terminate,proc_get_status,proc_nice,pcntl_alarm,pcntl_fork,pcntl_waitpid,pcntl_wait,pcntl_wexitstatus,pcntl_wifexited,pcntl_wifsignaled,pcntl_wifstopped,pcntl_signal,pcntl_signal_dispatch,pcntl_get_last_error,pcntl_strerror,pcntl_async_signals,popen
; If a plugin genuinely needs one of these, remove it here, not globally.
; OBSERVABILITY
pm.status_path = /fpm-status
ping.path = /fpm-ping
ping.response = pong
request_terminate_timeout = 120
request_slowlog_timeout = 3s
; Make sure the slowlog path exists and is writable by the FPM user
; e.g. sudo mkdir -p /var/log/php8.4-fpm && sudo chown www-data:www-data /var/log/php8.4-fpm
; Otherwise, PHP Reload would fail
slowlog = /var/log/php8.4-fpm/slow.log
catch_workers_output = yes
decorate_workers_output = no# Reload PHP
sudo systemctl reload php8.4-fpm
sudo systemctl status php8.4-fpm --no-pagerSûr Enregistrement
Les journaux sont votre boîte noire : ils vous indiquent ce qui s'est passé, quand et pourquoi. Ils sont essentiels au débogage et à la détection des problèmes de performance ou de sécurité. Mais sans rotation, les journaux s'accumulent sans fin et peuvent saturer votre disque. Soyez vigilant : activez uniquement ce dont vous avez besoin, stockez-les en toute sécurité et effectuez une rotation/compression planifiée.
mkdir -p /var/log/blog
sudo chown www-data:www-data /var/log/blog
sudo chmod 750 /var/log/blog
sudo tee /etc/logrotate.d/wordpress >/dev/null <<'EOF'
/var/log/blog/debug.log {
weekly
rotate 12
compress
missingok
notifempty
create 640 www-data www-data
}
EOF# Enable file logging only in wp-config.php
if ( ! defined( 'WP_DEBUG' ) ) {
define( 'WP_DEBUG', true );
}
// Set display to false, We don't want errors displayed on our frontend
define( 'WP_DEBUG_DISPLAY', false );
@ini_set( 'display_errors', 0 );
// Log to a file (outside web root is best)
define('WP_DEBUG_LOG', '/var/log/blog/debug.log');Suppléments
Si vous n'utilisez pas « Email Obfuscation » de Cloudflare, je vous recommande ceci plugin Pour protéger votre adresse e-mail des robots et des scrapers. Votre adresse e-mail n'est affichée que lorsque JavaScript est activé, ce qui la rend invisible à la source de la page et plus difficile à récupérer pour les robots spammeurs.
# Let's create a Must-Use folder
mkdir -p /var/www/blog/wp-content/mu-plugins
chown ubuntu:www-data //var/www/blog/wp-content/mu-plugins
wget -O /var/www/blog/wp-content/mu-plugins/protect-my-email.php https://raw.githubusercontent.com/abdessalllam/cloud-setup/refs/heads/main/wordpress/protect-my-email.phpUsage:
Full Shortcode: [js_email label="Reach out to me via Email:" user="info" domain="example.com" display="inline" subject="Hello" msg="Please enable JS for the Email" class="optional-extra-class"]
Minimal Use: [js_email user="info" domain="example.com"]
Output: info@example.comQuelle est la prochaine étape ?
Les journaux Nginx sont situés à /var/log/nginx/
Voilà, vous avez terminé. Félicitations 🎉🎉 Je vous recommande d'installer un plugin de cache et un plugin de sécurité pour accélérer et sécuriser davantage votre configuration.
Ce n'est pas le le plus rapide façon d'installer WordPress, mais c'est le le bon chemin.
Vous avez des suggestions ou repéré des points à améliorer ? Partagez vos idées dans les commentaires ; nous serions ravis de les connaître.
