Helios 64 / Part 5 : WordPress

Ou comment on déploie WordPress sur Caddy ?

Résumé des épisodes précédents

 

Disclaimer

  • Je ne suis pas un expert
  • Il peut y avoir des erreurs et des inexactitudes dans ce qui va suivre
  • C’est à vos risques et périls.
  • Néanmoins, n’hésitez pas à faire avancer le schmilblick et à me faire remarquer les points noirs.

 

WordPress

 

C’est quoi ?

Question qui peut sembler bête, mais pas tant que ça. WordPress est un CMS : Content Management Systems . Dans la langue de Jamy Gourmaud on dit  SGC : Système de Gestion de Contenu.

Ca permet (entre autre) de créer des sites web en intégrant tout un tas d’outil pour publier du contenu sans (trop) se prendre la tête. Concrètement, sur notre page d’accueil que l’on a créé lors de la partie 2, on a tout codé en HTML. L’idée , c’est de se passer de ça, et d’avoir une web interface pour que ce soit plus sympa. Pour information, le présent site / blog que vous lisez est réalisé sur wordpress. (C’est d’ailleurs un peu pour ça que ca se finit par .wordpress.com )

 

Pourquoi pas créer un site gratuitement ?

On peut créer des blog via ce CMS, gratuitement sur wordpress.com (comme celui ci) , néanmoins vous dépendez de wordpress.com , et toutes les options ne sont pas présente. On peut en débloquer moyennant quelques sesterces. Dans ma démarche d’indépendance et d’auto hébergement, je préfére héberger le wordpress moi même. C’est un peu plus compliqué certes mais c’est rigolo, on apprend des choses, et on a le contrôle total de ce qu’on fait.

 

Pourquoi pas WordPress et pas un autre ?

Il existe tout un tas de CMS, certains spécialisés pour un usage particulier (un blog, un site professionnel, une plateforme de vente en ligne, etc…) d’autres plus générique. Alors pourquoi choisir WordPress ?

  1. C’est celui que je « connais le mieux »
  2. Enormément de site utilise WordPress (~30% des sites web utilisent ça)
  3. Du coup, grosse communauté d’utilisateurs, de tuto, de trucs, d’astuces, etc…
  4. Ce blog est actuellement sur WordPress, l’import des anciens articles sur le nouveau blog sera facilité
  5. Sous licence : GNU GPL version 2

 

Installer WordPress pas à pas

 

Les prérequis

D’après la documentation officielle de WordPress, voici les prérequis :

Pour faire tourner WordPress, votre hébergeur devrait supporter :
  • PHP version 7.4 ou supérieure.
  • MySQL version 5.6 ou supérieure OU MariaDB version 10.1 ou supérieure.
  • Prise en charge du HTTPS

Pour ce qui est du HTTPS; c’est Caddy qui s’en occupe. Il nous reste donc plus que PHP et MySQL a installer.

 

PHP

Nous allons installer PHP 7.4 . Sur mon OS (Armbian 20.11.6 Buster), la version de PHP qui est dans le dépot officiel est PHP 7.3; si bien qu’avec apt-install php , on aurait la version 7.3. On fait donc une recherche sur les internets avec les mots clefs comme « Install PHP 7.4 debian buster » pour trouver notre bonheur. A adapter selon votre configuration bien entendu.

Ajout de la clef pour le dépot SURY

apt install gnupg2 -y
wget -qO - https://packages.sury.org/php/apt.gpg | sudo apt-key add -

Ajout du dépot SURY

echo "deb https://packages.sury.org/php/ $(lsb_release -sc) main" | sudo tee /etc/apt/sources.list.d/php7.x.list

Update et upgrade

apt update
apt upgrade

Installation de PHP7.4

apt install php7.4

Vérification

php -v
PHP 7.4.0beta4 (cli) (built: Aug 27 2019 13:24:38) ( NTS )
Copyright (c) The PHP Group
Zend Engine v3.4.0-dev, Copyright (c) Zend Technologies
    with Zend OPcache v7.4.0beta4, Copyright (c), by Zend Technologies

Ajout des extensions

PHP-FPM

apt install php7.4-fpm

PHP-MySQL

apt install php7.4-mysql

Configurer PHP-FPM

Ce qui suit est inspiré de ce site.

Il faut maintenant faire une petite configuration pour PHP-FPM (pour information, PHP-FPM permet la communication entre un serveur web et PHP).

nano /etc/php/7.4/fpm/pool.d/www.conf

Dans ce fichier, il faut repérer cette ligne là elle nous servira plus tard. Il ne faut pas la modifier :

listen = /run/php/php7.4-fpm.sock

En revanche, il faut aller simplement éditer trois lignes :

listen.owner = www-data
listen.group = www-data
listen.mode = 0660

Prenez garde à bien retirer le point-virgule (;) au début de la ligne !

Ajout de Caddy au groupe www-data

Maintenant, on va rajouter Caddy au groupe www-data (ce qu’on a précisé précedemment adns le fichier conf) avec :

usermod -a -G www-data caddy

Lancer PHP-FPM

systemctl start php7.4-fpm
systemctl enable php7.4-fpm

MySQL

Maintenant, on va installer une base de donnée MySQL. On a le choix entre MySQL et MariaDB. Je vais prendre la seconde option parceque « pourquoi pas ? ». Aprés une recherche sur les internets, on trouve vite de la documentation à ce sujet.

Installer MariaDB

sudo apt update

sudo apt install mariadb-server

sudo systemctl status mariadbstemctl start

Avec cette derniere commande, vous obtiendrez quelquechose de semblable à ceci :

Ca veut dire que tout marche bien 🙂

● mariadb.service - MariaDB 10.3.22 database server
Loaded: loaded (/lib/systemd/system/mariadb.service; enabled; vendor preset: enabled)
Active: active (running) since Tue 2020-05-12 13:38:18 UTC; 3min 55s ago
Docs: man:mysqld(8)
https://mariadb.com/kb/en/library/systemd/
Main PID: 25914 (mysqld)
Status: "Taking your SQL requests now..."
Tasks: 31 (limit: 2345)
Memory: 65.6M
CGroup: /system.slice/mariadb.service
└─25914 /usr/sbin/mysqld
. . .

Si MariaDB ne fonctionne pas, vous pouvez le démarrer avec la commande sudo systemctl start mariadb.

Configurer MariaDB

Une fois téléchargé, on lance le script de sécurité qui va s’occuper de la post installation.

sudo mysql_secure_installation

Vous aurez alors un message :

In order to log into MariaDB to secure it, we’ll need the current
password for the root user. If you’ve just installed MariaDB, and
you haven’t set the root password yet, the password will be blank,
so you should just press enter here.

Enter current password for root (enter for none):

Vu que nous n’avons pas encore créer d’utilisateur root, nous allons juster appuyer sur « Entrée » pour passer à l’étape suivante.

Ensuite, on nous proposera de créer un mot de passe root. Pour des questions de sécurité (et parceque j’ai suivi le tuto que j’avais trouvé), je n’en ai pas mis. J’ai répondu No !

Set root password? [Y/n] N

Enfin, pour toutes les autres questions, répondez Y. Le script s’occupera d’appliquer des valeurs par défaut comme la suppression des utilisateurs par défaut, la base de donnée test par défaut, désactivera l’accès root etc…

Créer un utilisateur et une base de donnée pour MariaDB

Il faut d’abord lancer le logiciel, et pour ça on tape la commande suivante (je sais, c’est contre intuitif…)

mysql

Et c’est dans ce logiciel que nous allons taper les commandes suivantes :

create database wordpress;

On oublie pas le point-virgule (;) à la fin ! Sinon, ca marche pas.

Ensuite, on vient accorder les accés à un utilisateur (ici appelé wpuser) associé à un mot de passe (évidemment, vous choisirez un mot de passe robuste !) On oublie pas le ; à la fin !

grant all privileges on wordpress.* to wpuser@localhost identified by 'mypassword' ;

Vous pouvez ensuite quitter mysql avec la commande :

quit

 

WordPress

Bien, maintenant que PHP et MySQL/MariaDB sont là, on va pouvoir télécharger WordPress. Personnellement, mon blog sera installé sur un sous domaine. On en a déjà parlé dans les épisodes précédents; donc n’oubliez pas de faire les enregistrements DNS nécessaires. (Je ne reviens pas sur ce point).

 

Télécharger WordPress

On se met à l’emplacement « qui va bien » pour télécharger WordPress. Chez moi c’est :

cd /var/www/html/

Note : oui j’ai créé un dossier HTML et j’ai mis tous mes domaines et sous domaine dans ce dossier, c’est un peu idiot, j’aurai pu totu mettre dans www. Enfin bon, j’ai fait comme ça, je garde comme ça.

Puis on télécharger WordPress avec :

wget https://fr.wordpress.org/latest-fr_FR.tar.gz

C’est un fichier .tar.gz, il faut donc le décompresser :

tar -xf latest-fr_FR.tar.gz

Facultatif : j’ai personnellement renommé le dossier wordpress (c’est le dossier que vous obtenez aprés décompression) en blog :

mv wordpress/ blog

 

Configurer WordPress

Documentation officielle.

WordPress possède un fichier config que l’on va éditer. Pour cela, on va rentrer dans le dossier wordpress (ou blog si vous l’avez renommé comme moi). Dans ce dossier nous allons trouver un fichier se nommant « wp-config-sample.php » . Le fichier « sample » nous servira de backup, nous allons le copier :

cp wp-config-sample.php wp-config.php

Puis éditons le fichier wp-config.php

nano wp-config.php

Dans ce fichier, cherchez les lignes suivantes, et remplacez les informations en gras par votre configuration. L’adresse d’hébergement et le jeu de caractére doit normalement rester par défaut.

// ** Réglages MySQL - Votre hébergeur doit vous fournir ces informations. ** //
/** Nom de la base de données de WordPress. */
define( 'DB_NAME', 'wordpress' );

/** Utilisateur de la base de données MySQL. */
define( 'DB_USER', 'wpuser' );

/** Mot de passe de la base de données MySQL. */
define( 'DB_PASSWORD', 'le super mot de passe super robuste que vous avez indiqué lors de la création de la base de donnée' );

/** Adresse de l’hébergement MySQL. */
define( 'DB_HOST', 'localhost' );

/** Jeu de caractères à utiliser par la base de données lors de la création des tables. */
define( 'DB_CHARSET', 'utf8' );

Donner les droits

Enfin, y’a plus qu’a donner les droits, (à adapter selon votre configuration)

sudo chown -R www-data:www-data /var/www/html/blog

 

Caddy

Il ne nous reste plus qu’a éditer notre bon vieux Caddyfile !

cd /etc/caddy

nano Caddyfile

Et on rajoute le bloc qui va bien.

blog.monsupersite.truc {
root * /var/www/html/blog
php_fastcgi unix//run/php/php7.4-fpm.sock
encode gzip
file_server
}

Explication :

  • blog.monsupersite.truc : pour rappel, je met ça dans un sous domaine (on en a déja parlé, je reviens pas dessus)
  • root * /var/www/html/blog : le chemin jusque le fichier index.php (initialement c’était le dossier wordpress que j’ai renommé en blog)
  • php_fastcgi unix//run/php/php7.4-fpm.sock : permet de faire communiquer le serveur web et php. Vous vous souvenez quand je vous ai dit :Dans ce fichier, il faut repérer cette ligne là elle nous servira plus tard. Il ne faut pas la modifier :listen = /run/php/php7.4-fpm.sockEt ben c’est maintenant qu’il faut l’utiliser et remplacer ce qui se trouve aprés unix/ par votre configuration.
  • encode gzip : un petit réglage qui permet de compresser les pages

Un petit coup de caddy reload plus tard…

 

On se connecte à WordPress ?

Le plus dur est fait ! Normalement, vous pouvez vous connecter à http://blog.monsupersite.truc  et obtenir ceci :

Il ne reste plus qu’à remplir tout ça… A cliquer sur « Installer WordPress » et le tour est joué ! Si vous taper l’adresse de votre blog vous aurez ceci :

Et pour rappel, pour accéder à l’espace admin c’est blog.monsupersite.truc/admin

 

 

Conclusion

J’espére que cela vous a été utile. Si vous voyez des grosses bêtises n’hésitez pas à me le dire. Je suis un néophyte en la matière 😀

 

 

 

 

 

Votre commentaire

Entrez vos coordonnées ci-dessous ou cliquez sur une icône pour vous connecter:

Logo WordPress.com

Vous commentez à l’aide de votre compte WordPress.com. Déconnexion /  Changer )

Photo Google

Vous commentez à l’aide de votre compte Google. Déconnexion /  Changer )

Image Twitter

Vous commentez à l’aide de votre compte Twitter. Déconnexion /  Changer )

Photo Facebook

Vous commentez à l’aide de votre compte Facebook. Déconnexion /  Changer )

Connexion à %s