🗓️ Note : Cet article est une archive importée de mon ancien blog. Certaines informations peuvent ne plus être à jour.
Ou comment on déploie WordPress sur Caddy ?
Résumé des épisodes précédents
- Helios 64 – Part 1 – Présentation
- Helios 64 – Part 2 – Caddy
- Helios 64 – Part 3 – Transmission et Fail2ban
- Helios 64 – Part 4 – Caddy au démarrage et protection du systeme
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 ?
- C’est celui que je « connais le mieux »
- Enormément de site utilise WordPress (~30% des sites web utilisent ça)
- Du coup, grosse communauté d’utilisateurs, de tuto, de trucs, d’astuces, etc…
- Ce blog est actuellement sur WordPress, l’import des anciens articles sur le nouveau blog sera facilité
- 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 :
● 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
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.sock
Et 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 😀