Installer Wordpress sur la Raspberry Pi

Installer WordPress sur une Raspberry Pi (avec Nginx).

Mis à jour le 16 avril 2019 - 76 Commentaires - , , , , ,

Aujourd’hui, nous allons vous parler de wordpress, le CMS le plus populaire du monde (sans parler du fait qu’il fait tourner Raspbian France) et voir comment l’installer sur la Raspberry Pi.
La compatibilité Raspberry / WordPress existe depuis le début, néanmoins, les performances sur les premières Raspberry Pi n’étaient pas incroyables !
Aujourd’hui, avec la Raspberry pi 3 et la Raspberry Pi 2, c’est de l’histoire ancienne ! Leurs processeurs et la RAM montée à 1Go nous offre la possibilité de faire tourner de manière plus que correcte un site wordpress sous Raspbian !

Installer le serveur sur votre Raspberry Pi

Outre les classiques commandes de mises à jour qui devraient être exécutées avant toute installation, nous allons devoir installer un serveur web ainsi que PHP et MySQL sur la Raspberry Pi.
Ici nous choisissons d’installer Nginx. En effet, si il est un peu plus compliqué à configurer qu’Apache, il est également nettement plus rapide, ce qui sera un réel avantage sur une Raspberry Pi.

sudo apt-get update upgrade
sudo apt-get install -y nginx php php-fpm mysql-server php-mysql

Avec cette commande, tous les dépôts nécessaires vont s’installer, à savoir Ngnix, PHP et enfin MySQL qui est la base de données utilisée par WordPress.
Lors de l’installation, il va vous être demandé quelques informations, notamment le nom et le mot de passe du compte MySQL, mémorisez bien les informations données, elles seront utiles par la suite !
Une fois l’installation terminée, vous allez devoir configurer Nginx. Pour cela, reportez-vous à la partie « Configurer Nginx » de notre tutoriel Installer Nginx Raspbian, et accélérez votre serveur web Raspberry.

Création d’une base de données pour WordPress sur la Raspberry Pi

Suite à cette installation nous allons devoir créer une base de données pour le futur site WordPress hébergé sur la Raspberry Pi. Nous allons être un poil barbu (poil, barbu ! Non ? Bon tant pis…) l’espace d’un instant.

sudo mysql --user=root

Expliquons rapidement la ligne de commande. « sudo » permet de demander l’exécution de la commande en tant qu’administrateur. « mysql » demande une connexion au serveur de base de données, « -u » permet de signaler le nom du compte MySQL à utiliser (ici le compte root).

Nous allons maintenant définir le mot de passe de MySQL. Pour cela, une fois connecté à MySQL, tapez la commande suivante :

DROP USER 'root'@'localhost';
CREATE USER 'root'@'localhost' IDENTIFIED BY 'password';
GRANT ALL PRIVILEGES ON *.* TO 'root'@'localhost' WITH GRANT OPTION;

Ces lignes vont en fait supprimer l’utilisateur MySQL de base (qui ne possède pas de mot de passe), pour en créer un nouveau avec le mot de passe de notre choix. Remplacez password par le mot de passe que vous souhaitez utiliser pour l’administrateur MySQL.

Création de la base pour WordPress

Une fois ceci fait, re-connectez vous à MySQL (vous devriez voir apparaître en début de ligne « mysql> ») avec la commande suivante :

sudo mysql -u root -ppassword

Nous allons maintenant créer une base pour WordPress. Pour cela, utilisez la commande suivante :

create database wordpress;

Ici, « wordpress » est le nom de la base de données qui sera utilisée, vous pouvez mettre un autre nom si vous le désirez, mais vous devrez alors prendre en compte cette différence dans la suite du tutoriel.

Création d’un utilisateur dédié à cette base

Une bonne habitude à prendre quand vous utilisez une base de données est de bien séparer les différentes bases de données entre plusieurs utilisateurs dédiés.
Cela permet d’augmenter la sécurité ! En effet, si une personne réussi à prendre le contrôle de votre site à cause d’une faille de sécurité (ça peut toujours arriver), deux situations sont possibles.

  1. Vous utilisez un seul utilisateur MySQL, root, avec tous les droits sur toutes les tables. L’attaquant pourra donc récupérer non seulement les données du site attaqué, mais également les données de tous les autre sites.
  2. Vous utilisez un utilisateur MySQL par site qui ne posséde de droits que sur la base de ce site. L’attaquant ne pourra récupérer que les données de ce site !

Ici, nous allons donc créer un utilisateur dédié à votre site WordPress.
Pour cela, il vous suffit d’exécuter la commande suivante :

GRANT ALL PRIVILEGES ON wordpress.* TO "nom_utilisateur"@"localhost" IDENTIFIED BY 'mot_de_passe' WITH GRANT OPTION;

Dans cette commande, « wordpress » est le nom de la base, « nom_utilisateur » le nom de l’utilisateur que vous voulez créer et « mot_de_passe » le mot de passe de l’utilisateur ! À vous donc d’adapter selon vos préférences !
Vous pouvez maintenant quitter MySQL en faisant Ctrl+d.

Télécharger WordPress sur Raspberry Pi

Maintenant que notre base de données est prête et que notre serveur Nginx est installé, nous allons pouvoir télécharger WordPress !
Tout d’abord, nous allons nous rendre à la racine du serveur, qui est, si vous avez suivi notre tutoriel sur Ngnix, situé dans /var/www/html, puis nous allons télécharger la dernière version de WordPress. Pour cela, lancez les lignes de commandes suivantes :

cd /var/www/html
sudo wget http://wordpress.org/latest.tar.gz

Ensuite, nous allons extraire le contenu via la commande « tar ».

sudo tar xzf latest.tar.gz
sudo rm -rf latest.tar.gz

Un nouveau dossier va être créé lors de l’extraction, le dossier « wordpress ». Nous avons au passage supprimé l’archive, celle-ci nous étant maintenant inutile.

Nous allons nous assurer que Nginx ai les droits d’accès au dossier. Pour cela, lancez la commande suivante :

sudo chown -R www-data /var/www/html/wordpress

Configurer Nginx pour rediriger les requêtes vers WordPress

Pour que votre site soit accessible depuis internet avec l’adresse URL de votre choix, et pour que les requêtes soient toutes traitées par WordPress, vous allez devoir modifier un peu la configuration de Nginx.

Pour cela, nous allons commencer par écrire le fichier « /etc/nginx/sites-available/wordpress ». Ce fichier devra contenir le code suivant :

server {
 listen 80;
 root /var/www/html/wordpress;
 index index.php;
 server_name <nom_de_votre_site> www.<nom_de_votre_site>;
 access_log /var/log/nginx/<nom_de_votre_site>.access_log;
 error_log /var/log/nginx/<nom_de_votre_site>.error_log
 notice;
 location / {
  try_files $uri $uri/ /index.php?$args;
 }
 location ~ \.php$
 {
  include snippets/fastcgi-php.conf;
  fastcgi_pass unix:/var/run/php5-fpm.sock;
 }
}

Bien entendu, remplacez <nom_de_votre_site> et par les valeurs adaptées. Si vous ne possédez pas de nom de domaine, vous pouvez le remplacer par l’adresse IP de votre Raspberry Pi pour le champ « server_name ».

Une fois le fichier enregistré, vous allez faire un lien symbolique pour activer le réglage. Pour cela, il vous suffit d’utiliser la ligne de commande suivante :

ln -s /etc/nginx/sites-available/<nom_de_votre_site> /etc/nginx/sites-enabled/<nom_de_votre_site>

Vous n’avez plus qu’à redémarrer le serveur Nginx avec la commande suivante :

/etc/init.d/nginx restart

Première connexion au WordPress sur votre Raspberry Pi

Nous allons maintenant nous connecter pour la première fois au WordPress pour finaliser l’installation.
Dans le navigateur, nous allons taper l’ip de la Raspberry Pi (vous pouvez trouvez l’IP dans la configuration de votre box).
Dans notre cas par exemple, cela donne « http://192.168.1.24 »
Vous devriez alors arriver sur la page suivante.

Page de démarrage de wordpress

Au premier démarrage de WordPress vous vous retrouvez sur la page d’installation

Vous n’avez plus qu’à suivre les étapes les unes après les autres afin de terminer l’installation de WordPress sur la Raspberry Pi.


Vous ne savez pas trop comment prendre WordPress en main ? Découvrez le cours de notre partenaire Éléphorm pour apprendre à créer votre site avec WordPress !


Conclusion

Vous avez maintenant un super site WordPress sur votre Raspberry Pi qui est accessible en local !
Il ne vous reste plus qu’à faire un tour sur notre tutoriel sur le port fowarding et le dydns, pour voir comment le rendre accessible depuis internet !
Les performances de la Raspberry Pi 3 devraient grandement améliorer celles du site comparé aux versions précédentes, et pour une Raspberry Pi en bonne santé, allez donc faire un tour sur nos choix d’accessoires !

Partager
Newsletter
Auteur :
Raspbian France
Rejoignez la communauté Raspberry Pi
Un ordinateur à 35€ déjà vendu à 10 millions d'exemplaires
ACHETEZ LA NOUVELLE RASPBERRY PI 3
Tutoriels en rapport
Installer un media-center avec OSMC sur votre Raspberry Pi ! RaspiSMS 2.0, envoyer des SMS par internet avec la Raspberry Pi Bien choisir vos accessoires pour les Raspberry Pi 3 et 2 Envoyer, gérer et recevoir des SMS avec la Raspberry Pi Installer un serveur web sur votre Raspberry (Apache + PHP + MySQL)
76 commentaires
Besoin d'aide ? Vous la trouverez plus vite sur notre forum.

  1. Antoine dit :

    Lors de la création de la base pour WordPress, quand j’entre la commande « create database wordpress; » ça me met : -bash: create : commande introuvable …….

    1. Antoine dit :

      pi@raspberrypi_antoine:~ $ sudo /etc/init.d/nginx restart
      [….] Restarting nginx (via systemctl): nginx.serviceJob for nginx.service failed. See ‘systemctl status nginx.service’ and ‘journalctl -xn’ for details.

      pi@raspberrypi_antoine:~ $ systemctl status nginx.service
      ● nginx.service – A high performance web server and a reverse proxy server
      Loaded: loaded (/lib/systemd/system/nginx.service; enabled)
      Active: failed (Result: exit-code) since jeu. 2017-08-03 00:17:02 CEST; 27s ago
      Process: 1287 ExecStartPre=/usr/sbin/nginx -t -q -g daemon on; master_process on; (code=exited, status=1/FAILURE)

    2. Salut, cette commande est à effectuer depuis une console MySQL, pas directement dans le terminal Linux.

  2. Gérard dit :

    Attention toutefois au thème utilisé. Les performances peuvent sérieusement se dégrader selon le thème et cela même avec un système de cache (j’utilise W3 Total Cache).
    J’en ai fait l’expérience en voulant passer de weblizar (4sec pour charger une page avec un débit de 1Mo/s en sortie) à Cardinal (10 sec pour charger la même page avec le même débit!)

  3. diouf dit :

    Merci pour ce tuto!
    Lorsque j’envoie la commande
    sudo apt-get install -y nginx php5 php5-fpm mysql-server php5-mysql
    j’obtiens cette réponse :

    Les paquets suivants contiennent des dépendances non satisfaites :
    php5-mysql : Dépend: libmysqlclient18 mais il n’est pas installable
    E: Impossible de corriger les problèmes, des paquets défectueux sont en mode « garder en l’état ».

    Comment « déverrouiller » les paquets concernés et les supprimer?

    je précise que je suis sur une installation toute neuve… c’est le premier truc que je fais après apt-get update upgrade

    Merci de votre aide

    1. Salut, essaye peut-être avec php7 plutôt que 5.

  4. noel claustre dit :

    bonjour, je n’arrive pas a voir mon site depuis internet. j’ai bien suivis les deux tuto , recommencé plusieurs fois les commande et pourtant j’ai toujours l’erreur 404
    merci de votre aide

    1. Salut, as-tu bien fais la mise en ligne avec DynDNS ?

  5. Rougerie Leo dit :

    Bonjour, en effectuant la commande GRANT ALL PRIVILEGES ON wordpress.* TO « nom_utilisateur »@ »localhost » IDENTIFIED BY ‘mot_de_passe’; (en remplaçant bien évidement nom_utilisateur et mot_de_passe), on m’indique une erreur; la voici:
    ERROR 1044 (42000): Access denied for user ‘leo’@’localhost’ to database ‘wordpress’

    1. Salut, il faut que tu fasses cette commande depuis le compte root de mysql.

  6. Raphael dit :

    Dans le 3e encadré, à la 3e ligne, il faut plutôt ceci :

    « GRANT ALL PRIVILEGES ON *.* TO ‘root’@’localhost’ WITH GRANT OPTION; »

    Vous avez oublié le « GRANT OPTION »

  7. Jean-Marc dit :

    Excellent tuto !

    Il y a une petite coquille cependant :
    « Une bonne habitude à prendre quand vous utilisez une base de données est de bien séparer les différentes tables entre plusieurs utilisateurs dédiés. »
    Je pense qu’il s’agit de « bases de données » et non de « tables ».

    1. Merci de le faire remonter, effectivement je corrige ça.

Partager
Inscription à la Newsletter
Inscrivez-vous à la Newsletter.
Vous avez aimé cet article ?
Inscrivez-vous et restez informé !