Héberger un Wordpress Gratuitement sur un Raspberry Pi

WordPress est un système de gestion de contenu (SGC ou content management system (CMS) en anglais) gratuit, libre et open-source.

Wordpress est le CMS le plus utilisé au monde. De part sa simplicité d’utilisation et sa liberté de design, sa popularité s’explique d’elle même.

Malheureusement, utiliser Wordpress pour laisser libre cours à son imagination revient souvent à passer par son porte monnaie.

Pour un site personnel, 4€ par mois reste raisonnable, mais pour un site d’e-Commerce, 45€ semble moins attrayant….

Tarifs avril 2020

Il serait donc intéressent de pouvoir profiter de WordPress gratuitement, et ce sans être limité par les blocages du modèle “gratuit”.

Héberger soit même, son site WordPress semble donc être la bonne chose à faire.

Le nécessaire:

  • Un ordinateur sous Linux (dans mon cas, j’utiliserais un raspberry Pi 3b sous raspbian). Il faut prendre en compte que cet ordinateur devra rester allumé en permanence…
  • Une connexion rapide est préférée (pas nécessaire).
  • Un nom de domaine (potentiellement payant).
  • Une bonne heure :).

Installer un Serveur HTTP

Avant tout, vérifiez que votre ordinateur est bien à jour:

sudo apt update
sudo apt upgrade

Pour pouvoir envoyer des pages web aux utilisateurs, nous avons besoin pour cela d’un serveur HTTP. Il existe Nginx, mais pour ma part, je vais utiliser Apache2.

sudo apt install apache2
sudo service apache2 start

Maintenant, vous devriez pouvoir accéder à l’adresse http://localhost sur votre ordinateur et voir ce magnifique message:

Apache2 Debian Default Page

Bien sûr, vous pouvez paramétrer votre serveur à distance via SSH. Dans ce cas, veuillez taper son IP local à la place de localhost…

Petite info

Installer PHP/MySQL

Wordpress est un programme développé en PHP, il est donc nécessaire d’installer PHP7. Wordpress utilise une base de données MySQL, nous devons donc l’installer également.

sudo apt install php mysql
wget https://dev.mysql.com/get/mysql-apt-config_0.8.13-1_all.deb
sudo dpkg -i mysql-apt-config_0.8.13-1_all.deb

Configure Mysql-apt-config

Appuyez sur “Ok”

    
        sudo apt update
sudo apt install mysql-server
    

Si vous souhaitez avoir la dernière version de PHP, je vous conseille de suivre le tutoriel ci-dessous:

Installer PHP7.3 pour Wordpress

Configurer Mysql

Il faut maintenant configurer Mysql pour ajouter une base de données vide et un utilisateur avec mot de passe.

Pour cela, tapez:

sudo mysql -u root -p

Vous devriez maintenant voir ceci :

Ensuite, créez une nouvelle base de donnée :

CREATE DATABASE exempleDB;

Créez un nouvel utilisateur :

CREATE USER 'exempleUtilisateur' IDENTIFIED BY 'exempleMDP';

Et maintenant, donnez la permission à votre utilisateur de modifier à volonté exempleDB :

GRANT USAGE ON 'exempleDB'.* TO 'exempleUtilisateur'@localhost IDENTIFIED BY 'exempleMDP';

Et enfin, afin de rendre ces nouveaux privilèges effectifs :

FLUSH PRIVILEGES;

Fini le SQL pour ce tuto :). (exit pour quitter).

Ouvrir le port HTTP et HTTPS du Router Internet

Pour rendre accessible votre serveur WEB sur internet, vous devez autoriser les connexions entrantes et sortantes sur le port HTTPS, par défaut le port 443.

Ce paramètrage est accessible sous l’onglet “Gestion des ports” sur les Freeboxs, ou sur un onglet “Virtual server” sur un Router Tp-link. Il existe un nombre important d’interfaces différentes. C’est pourquoi je ne peux vous montrer le moyen d’ouvrir les ports sur tous les router internet.

L’idée générale consiste à trouver ce menu, rajouter une redirection, et de la remplir ainsi :

Redirection de port: Freebox

Faites de même avec le HTTP (port 80) si vous le souhaitez.

Configurer un nom de Domaine

Votre site web est maintenant accessible sur internet, mais uniquement depuis une adresse IP. Si vous voulez donner accès à votre site aux utilisateurs grâce à une adresse du type www.votre-site.com, vous devez posséder un nom de domaine. Pour cela, vous pouvez acheter un nom de domaine. Par exemple sur le site Google Domain. (il existe aussi des sous-domaines gratuit, comme ceux que propose Azote: https://www.azote.org/).

https://domains.google.com/

Une fois votre domaine acheté, vous devrez configurer vos règles de type A.

Dans l’onglet DNS, vous pouvez rajouter cette règle, c’est ici que vous configurer les sous-domaines éventuels de votre site.

Installer un Certificat SSL gratuit pour HTTPS

Optionnel: Si vous souhaitez avoir plusieurs sous-domaines, il est préférable de configurer proprement Apache2.

La façon d’avoir un certificat gratuit le plus facilement est d’utiliser l’outil Certbot, il vous délivrera et configurera seul le certificat SSL. Pour cela, ajoutez le PPA de certbot :

sudo apt-get update
sudo apt-get install software-properties-common
sudo add-apt-repository universe
sudo add-apt-repository ppa:certbot/certbot
sudo apt-get update

Et installez-le :

sudo apt-get install certbot python-certbot-apache

Une fois installé, vous pouvez maintenant l’exécuter :

sudo certbot

Vous devriez maintenant recevoir la question suivante :

Ensuite, acceptez la redirection. Apache doit maintenant redémarrer et vous pourrez (normalement) voir la page Apache s’afficher à l’adresse : https://votre-site.com

Télécharger et Installer Wordpress

Veuillez prendre en compte qu’il aurait été préférable de pré-paramétrer son Wordpress en local, mais pour simplifier ce tutoriel, je vais vous montrer comment directement avoir un Wordpress accessible depuis le nom de domaine.

Positionnez-vous dans le dossier /var/www/

cd /var/www

Téléchargez l’archive avec la commande :

wget https://wordpress.org/latest.zip

Ensuite, extrayez l’archive :

unzip latest.zip

Un nouveau dossier nommé “Wordpress” est apparu dans le dossier courant. Vous devez maintenant indiquer à Apache2 de regarder dans ce dossier :

sudo nano /etc/apache2/sites-available/000-default-le-ssl.conf

Ensuite, indiquez la localisation du dossier comme ceci :

<IfModule mod_ssl.c>
<VirtualHost *:443>
        ServerName NOMDUSITE.COM
        ServerAdmin NOMADMIN
        Documentroot /var/www/wordpress
        RewriteEngine on
        <Directory "/var/www/wordpress">
                AllowOverride All
                Allow from All
        </Directory>
Include /etc/letsencrypt/options-ssl-apache.conf
SSLCertificateFile /etc/letsencrypt/live/NOMDUSITE.COM/fullchain.pem
SSLCertificateKeyFile /etc/letsencrypt/live/NOMDUSITE.COM/privkey.pem
</VirtualHost>

Configuration de Apache2 basique, suffisante pour que le site fonctionne mais des modifications seront peut-être nécessaires en fonction de ce que vous ferez du site.

Redémarrez Apache2 :

sudo service apache2 restart

Configuration basique de Wordpress

Rendez-vous sur votre site : https://NOMDUSITE.COM

Appuyez sur “C’est parti !”

Et pour finir, rentrez toutes les informations comme ceci :

  • Nom de la base de données : exempleDB
  • Identifiant: exempleUtilisateur
  • Mot de passe: exempleMotdepasse
  • Adresse de la base de données: localhost
  • Préfixe des tables: wp_

Et voilà, tout doit maintenant marcher pour le mieux :). Amusez-vous bien avec votre nouveau site Wordpress.

Sources: