Logo WordPress

Il n'y avait en réalité aucune raison directe de franchir ce pas. Cependant, pour échapper au chaos politique qu'a engendré l'investiture du nouveau président américain, c'était une distraction bienvenue.

Mon objectif premier était d'externaliser mes livres et d'en améliorer la lisibilité grâce à un script PDF WordPress. Il m'était également intéressant de constater quels avantages et inconvénients présentent les différents systèmes de gestion de contenu (CMS).

Comparaison entre Joomla et WordPress

Pour le résumer brièvement : Joomla et WordPress ont chacun leurs avantages et inconvénients qu'il convient de peser lors de la recherche du bon CMS. Ainsi, WordPress bénéficie d'avantages indéniables en termes de design. L'intégration de fichiers médias est également plus facile, clé en main. Le choix de thèmes et de plugins est par ailleurs bien plus vaste que chez Joomla. En revanche, Joomla se distingue par sa gestion des droits d'accès et par la facilité de créer une nouvelle page et de l'intégrer, ce qui permet — ou plutôt simplifie — la gestion de sites plus importants avec plusieurs auteurs sans connaissances préalables. Pour un petit site qui n'est pas destiné à être modifié fréquemment, ou si l'on souhaite simplement tenir un blog, WordPress est probablement le meilleur choix. Les deux systèmes méritent qu'on s'y intéresse.

Guide d'installation

Lors de l'installation, j'ai rencontré un obstacle de taille qui m'a contraint à réinstaller WordPress à plusieurs reprises. Pourtant, l'erreur est assez simple et rapide à corriger, une fois que l'on sait comment procéder.

Si vous souhaitez également installer WordPress, que vous utilisez Proxmox comme moi et que vous avez NGINX configuré comme reverse proxy, vous pouvez utiliser les procédures d'installation suivantes. (Ubuntu 24.04)

1. Mettre à jour les archives de paquets et le système

Avant d'installer WordPress sur un système fraîchement configuré, vous devez impérativement mettre à jour votre système Ubuntu afin de vous assurer que vous disposez des derniers paquets et correctifs de sécurité sur le serveur. Ouvrez un terminal et exécutez les commandes suivantes :

sudo apt update
sudo apt upgrade

2. Installation de la pile LAMP

WordPress nécessite un serveur web, une base de données et PHP pour fonctionner. Nous allons utiliser la pile LAMP, acronyme de Linux, Apache, MySQL et PHP. Installons maintenant les différents composants :

Le serveur web :

sudo apt install apache2

Après l'installation, nous démarrons le serveur web et nous nous assurons qu'il se lance automatiquement au démarrage du système :

sudo systemctl start apache2
sudo systemctl enable apache2

La base de données :

sudo apt install mysql-server

Avant de configurer la base de données, nous effectuons quelques réglages de sécurité :

sudo mysql_secure_installation

Ici, un nouveau mot de passe root est défini, l'accès distant à la base de données doit être désactivé et la base de données d'exemple supprimée :

Disallow root login remotely? (Press y|Y for Yes, any other key for No) : Y
Remove test database and access to it? (Press y|Y for Yes, any other key for No) : Y
Reload privilege tables now? (Press y|Y for Yes, any other key for No) : Y

Extensions PHP :

sudo apt install php libapache2-mod-php php-mysql php-curl php-gd php-mbstring php-xml php-xmlrpc php-soap php-intl php-zip -y

Pour tester votre installation PHP, vous pouvez créer le fichier phpinfo.php :

echo "<?php phpinfo(); ?>" | sudo tee /var/www/html/phpinfo.php

En appelant le fichier avec votre IP locale et son nom (http://xxx.xxx.x.x/phpinfo.php), une fenêtre apparaît dans votre navigateur avec les informations sur votre installation PHP actuelle. Le fichier se trouve dans /var/www/html, s'appelle phpinfo.php et doit être supprimé rapidement pour des raisons de sécurité :

rm /var/www/html/phpinfo.php

3. Création d'une base de données

Nous nous connectons maintenant à la base de données en tant qu'utilisateur root :

sudo mysql -u root -p

La base de données est configurée ici :

CREATE DATABASE wordpressdatabase;
CREATE USER 'wordpressutilisateur'@'localhost' IDENTIFIED BY 'un_mot_de_passe_fort';
GRANT ALL PRIVILEGES ON wordpressdatabase.* TO 'wordpressutilisateur'@'localhost';
FLUSH PRIVILEGES;
EXIT;

Veuillez remplacer le nom d'utilisateur (wordpressutilisateur), le nom de la base de données (wordpressdatabase) et le mot de passe (un_mot_de_passe_fort) par vos propres valeurs.

4. Téléchargement et configuration de WordPress

Avec les commandes suivantes, nous allons d'abord dans le répertoire d'installation de WordPress, téléchargeons le fichier compressé, l'extrayons et attribuons les droits nécessaires aux dossiers :

cd /var/www/html
wget https://wordpress.org/latest.tar.gz
tar xzvf latest.tar.gz
sudo chown -R www-data:www-data /var/www/html/wordpress
sudo chmod -R 755 /var/www/html/wordpress

Avec la commande suivante, nous supprimons l'archive, qui n'est plus nécessaire :

rm latest.tar.gz

Nous créons maintenant un fichier de configuration WordPress en renommant le fichier wp-config-sample.php en wp-config.php :

sudo cp /var/www/html/wordpress/wp-config-sample.php /var/www/html/wordpress/wp-config.php

Nous saisissons maintenant les identifiants de la base de données dans le fichier wp-config.php en l'ouvrant avec la commande suivante :

sudo nano /var/www/html/wordpress/wp-config.php
define('DB_NAME', 'wordpressdatabase');
define('DB_USER', 'wordpressutilisateur');
define('DB_PASSWORD', 'un_mot_de_passe_fort');
define('DB_HOST', 'localhost');

Voici maintenant le point pour lequel j'ai créé ce tutoriel et à cause duquel j'ai installé WordPress plusieurs fois lors de mes recherches d'erreurs.

Faites défiler le fichier wp-config.php vers le bas et insérez entre

/* Add any custom values between this line and the "stop editing" line. */

et

/* That's all, stop editing! Happy publishing. */

le code suivant :

/*
Handle SSL reverse proxy
*/
if ($_SERVER['HTTP_X_FORWARDED_PROTO'] == 'https')
    $_SERVER['HTTPS']='on';
if (isset($_SERVER['HTTP_X_FORWARDED_HOST'])) {
    $_SERVER['HTTP_HOST'] = $_SERVER['HTTP_X_FORWARDED_HOST'];
}

Voici à quoi cela devrait ressembler :

/* Add any custom values between this line and the "stop editing" line. */
/*
Handle SSL reverse proxy
*/
if ($_SERVER['HTTP_X_FORWARDED_PROTO'] == 'https')
    $_SERVER['HTTPS']='on';
if (isset($_SERVER['HTTP_X_FORWARDED_HOST'])) {
    $_SERVER['HTTP_HOST'] = $_SERVER['HTTP_X_FORWARDED_HOST'];
}
/* That's all, stop editing! Happy publishing. */

Configuration NGINX

Nous sauvegardons maintenant le fichier wp-config.php avec Ctrl+O et le fermons avec Ctrl+X.

Grâce à cette dernière configuration, WordPress peut désormais traduire les requêtes internes de NGINX de http vers https et le site s'affiche correctement, car le fichier .htaccess fourni par WordPress ne le fait pas.

5. Configuration du serveur Apache

Nous configurons maintenant le serveur Apache afin que le visiteur soit redirigé vers le bon dossier :

sudo nano /etc/apache2/sites-available/wordpress.conf

Nous y collons le code suivant et l'adaptons :

<VirtualHost *:80>
    ServerAdmin Cette adresse e-mail est protégée contre les robots spammeurs. Vous devez activer le JavaScript pour la visualiser.
    ServerName votredomaine.fr
    ServerAlias www.votredomaine.fr
    DocumentRoot /var/www/html/wordpress
    ErrorLog ${APACHE_LOG_DIR}/error.log
    CustomLog ${APACHE_LOG_DIR}/access.log combined
    <Directory /var/www/html/wordpress/>
        AllowOverride All
    </Directory>
</VirtualHost>

À nouveau, sauvegardez avec Ctrl+O et quittez avec Ctrl+X.

Nous activons maintenant le fichier wordpress.conf et désactivons le fichier 000-default.conf :

sudo a2ensite wordpress.conf
sudo a2dissite 000-default.conf

Nous activons maintenant le module modifié et redémarrons le serveur Apache :

sudo a2enmod rewrite
sudo systemctl restart apache2

Il est préférable d'accéder à votre site via votre domaine. Celui-ci devrait déjà être configuré et disposer d'un certificat Let's Encrypt. Suivez maintenant la procédure d'installation.

Ajuster les paramètres PHP

PHP est configuré par défaut pour permettre le téléchargement de fichiers d'une taille maximale de 2 mégaoctets via le navigateur. 2 Mo suffisent pour des images, mais si vous souhaitez mettre à disposition des fichiers audio, des vidéos ou des PDF, cela s'avère rapidement insuffisant.

Pour modifier cela, ouvrez le fichier php.ini :

nano /etc/php/8.3/apache2/php.ini

Votre version de PHP peut différer de la mienne. Au lieu de 8.3 comme chez moi, il peut s'agir d'une version plus récente. Vous pouvez consulter la version dans le fichier phpinfo.php que nous avons créé au début. Ou vous accédez au dossier correspondant via cd /etc/php. En tapant ls, la version de votre installation PHP s'affiche.

Modifiez post_max_size de :

post_max_size = 2M

à, par exemple :

post_max_size = 128M

Malheureusement, trouver la ligne correspondante est un peu fastidieux et elle se trouve assez loin vers le bas. Dans le shell du navigateur, la fonction de recherche est inutilisable. Mais comme il ne serait pas judicieux de configurer SSH et de paramétrer le pare-feu en conséquence pour une seule modification, il est conseillé de prendre ces deux minutes de recherche.

Ressources utiles

Tout nouvel arrivant sur WordPress est d'abord submergé par le menu, comme avec n'importe quel autre CMS. Le site webseitenmachen.de m'a été très utile. Les tutoriels sont excellents et vraiment bien expliqués. Une demi-heure bien investie pour obtenir rapidement des résultats exploitables avec Joomla.