Préface

Remarque : Ce document n'est pas encore complet et entièrement testé.

Le Raspberry Pi est un petit ordinateur monocarte qui a été développé à l'origine pour promouvoir l'enseignement de l'informatique de base dans les écoles et les pays en développement. En raison de sa polyvalence, il est devenu très populaire et est utilisé comme lecteur multimédia, petit serveur autonome, etc. Vous pouvez l'utiliser comme serveur web et y installer Joomla!. Cette page vous montre comment faire fonctionner votre site Joomla! sur le Raspberry Pi.

Matériel

  • Raspberry Pi version 3 Model B - Il existe différents modèles de Raspberry Pi. Vous pouvez utiliser la plupart des modèles disposant d'un port Ethernet (les types Model B). Toutefois, pour des raisons de performance, nous utiliserons la dernière version avec le plus de mémoire RAM.
  • carte micro SD - Pour le système d'exploitation + le serveur web + Joomla!. (La RPi version 3 model B utilise la micro SD, d'autres versions pourraient utiliser des cartes SD normales)
  • adaptateur 5 Volts (1 Ampère) - pour alimenter le Raspberry Pi, vous devrez convertir le courant secteur (230V ou 110V) en 5 Volts. Le Raspberry Pi a besoin d'environ 1 Ampère, voire plus si vous y connectez des périphériques USB.
  • un câble Ethernet standard - pour connecter le RPi à votre réseau local / routeur / internet.

Installation du système d'exploitation

Le système d'exploitation Raspbian est une version de Debian Linux spécialement compilée pour le Raspberry Pi. Il existe deux versions de Raspbian disponibles : Raspbian Jessie with Pixel Lite (version avec le bureau PIXEL basée sur Debian Jessie) et Raspbian Jessie Lite (version minimale basée sur Debian Jessie). Comme nous utilisons le Raspberry Pi comme serveur web pour Joomla!, nous n'aurons pas besoin de l'interface graphique.

Téléchargez Raspbian Jessie Lite et décompressez le fichier téléchargé, par exemple 2016-09-23-raspbian-jessie-lite.zip (306 Mo) vers 2016-09-23-raspbian-jessie-lite.img (1,4 Go).

Nous devons maintenant copier le fichier .img sur la carte (micro) SD. Vous pouvez utiliser un outil avec une interface graphique tel que UNetbootin (pour Windows, Mac OS X et Linux) ou le faire en ligne de commande.

Soyez prudent lorsque vous écrivez l'image disque .img sur un autre disque. Si vous indiquez le mauvais disque de destination, vous écraserez ce disque avec le fichier .img, ce qui le rendra inutilisable et entraînera une perte de données.

Windows

Dans un terminal (CMD), vérifiez quel périphérique correspond à la carte SD et faites quelque chose comme :

    dd bs=1M if=c:\temp\2016-09-23-raspbian-jessie-lite.img od=[le périphérique de votre carte SD]

Voir aussi Installation des images du système d'exploitation sous Windows

Apple OSX

Vérifiez quel périphérique est utilisé pour votre carte SD. Dans notre cas, c'est disk1s1 et nous ferons dans le Terminal :

    sudo dd bs=1M if=~/Downloads/2016-09-23-raspbian-jessie-lite.img of=/dev/disk1s1

Voir aussi : Installation des images du système d'exploitation sur MacOS

Linux

Nous connectons un lecteur de carte SD avec la carte (micro) SD à un ordinateur. Avec dmesg nous pouvons trouver le nom du périphérique de la carte SD. Dans notre cas, dmesg affiche quelque chose comme [xxxxxx.xxxxxxx] sdd: sdd1 sdd2 signifiant que nous avons une carte SD avec 2 partitions. N'écrivez pas l'image Raspbian sur une partition mais sur le disque entier sdd.

Nous utiliserons dd ("Disk Dump") pour écrire un fichier d'entrée (if) vers un fichier de sortie (of) en utilisant une taille de bloc spécifiée (bs).

Soyez prudent : dd écrira sur un périphérique sans aucun avertissement. Vérifiez bien que vous écrivez sur le bon périphérique ! Si vous écrivez sur le mauvais disque, vous vous souviendrez toujours de la commande dd comme du "Disk Destroyer".

    sudo dd if=~/Downloads/2016-09-23-raspbian-jessie-lite.img of=/dev/sdd bs=4M

Voir aussi Installing Operating System Images on Linux

ATTENTION pour la version Raspbian Stretch : pour avoir un serveur SSH fonctionnel dès le démarrage, vous devez créer un fichier vide ssh sur la partition racine.

Connecter le Raspberry Pi au LAN

Lorsque nous avons installé le système d'exploitation Raspbian sur la carte SD, nous allons :

  • Insérer la carte micro SD dans l'emplacement pour carte SD du Raspberry Pi.
  • Connecter un câble Ethernet au Raspberry Pi et au réseau local (le connecter à notre routeur).
  • Connecter l'alimentation 5V au Raspberry Pi.

Le démarrage du Raspberry Pi prend environ 30 secondes. Nous devons trouver l'adresse IP pour nous y connecter en utilisant SSH. Nous pouvons utiliser différentes approches pour cela :

  • se connecter à l'interface web de votre routeur et consulter les périphériques connectés ;
  • utiliser un téléphone mobile connecté au routeur wi-fi à l'aide d'une application de scan réseau appelée Fing Overlook ;
  • utiliser une commande comme nmap. En supposant que notre PC a l'adresse IP 192.168.0.25, nous pouvons trouver tous les autres périphériques dans la même plage réseau en faisant ce qui suit :
    sudo nmap -sP 192.168.0/24

Ce qui pourrait afficher les détails suivants :

Starting Nmap 6.47 ( http://nmap.org ) at 2016-10-22 17:42 CEST
Nmap scan report for 192.168.0.35
Host is up (0.00042s latency).
MAC Address: 42:42:42:42:42:42 (Raspberry Pi Foundation)

Pour nous connecter à notre Raspberry Pi, nous utiliserons la commande ssh.

    ssh Cette adresse e-mail est protégée contre les robots spammeurs. Vous devez activer le JavaScript pour la visualiser.

La première fois que vous vous y connecterez, cela affichera quelque chose comme :

The authenticity of host '192.168.0.35 (192.168.0.35)' can't be established.
ECDSA key fingerprint is 42:42:42:42:42:42:42:42:42:42:42:42:42:42:42:42.
Are you sure you want to continue connecting (yes/no)?

Nous choisirons Oui

Warning: Permanently added 192.168.0.35 (ECDSA) to the list of known hosts.
Cette adresse e-mail est protégée contre les robots spammeurs. Vous devez activer le JavaScript pour la visualiser.'s password:

et nous utiliserons le mot de passe par défaut : raspberry qui, en cas de connexion réussie, affichera :

The programs included with the Debian GNU/Linux system are free software;
the exact distribution terms for each program are described in the
individual files in /usr/share/doc/*/copyright.

Debian GNU/Linux comes with ABSOLUTELY NO WARRANTY, to the extent
permitted by applicable law.
pi@raspberrypi:~ $

Nous pouvons configurer le Raspberry Pi en utilisant une interface texte via :

sudo raspi-config

Outil de Configuration Logicielle du Raspberry Pi (raspi-config)

Avec cet outil de configuration, nous allons uniquement modifier les paramètres suivants.

1 Étendre le système de fichiers

Par défaut, l'espace disque sur la carte SD est de la même taille que le fichier .img de 1,4 Go que vous avez utilisé pour créer la carte SD de votre Raspberry Pi. Vous pouvez utiliser cette option pour récupérer le reste de l'espace disque.

2 Changer le mot de passe utilisateur

Pour des raisons de sécurité, il est préférable de changer le mot de passe par défaut "raspberry" le plus rapidement possible.

3 Paramètres de démarrage

Nous souhaitons que le Raspberry Pi démarre sur la console texte

B2 Console Autologin Console texte, connexion automatique en tant qu'utilisateur 'pi'

9 Paramètres avancés

A3 Memory Split

Comme nous allons utiliser le Raspberry Pi comme serveur sans tête, sans le connecter à un moniteur, nous pouvons réduire la mémoire utilisée pour le GPU de 64 à 16

5 Paramètres d'internationalisation

I2 Change Timezone

Nous allons changer le fuseau horaire pour notre propre fuseau horaire (par exemple Europe/Amsterdam)

Après tous ces changements, nous allons redémarrer le Raspberry Pi, et nous reconnecter avec notre nouveau mot de passe.

ssh Cette adresse e-mail est protégée contre les robots spammeurs. Vous devez activer le JavaScript pour la visualiser.

Il est maintenant temps d'installer tout le reste.

Mise à jour des logiciels

Avant d'installer quoi que ce soit d'autre, nous allons :

  • mettre à jour la liste des versions logicielles de tous les dépôts externes sudo apt-get update

  • mettre à niveau tous les logiciels installés sudo apt-get upgrade

Mettre à jour la liste des versions et mettre à niveau tous les logiciels est quelque chose qui doit être fait régulièrement.

Serveur Web Nginx

Une alternative rapide et légère au serveur web Apache est le serveur web Nginx, de plus en plus populaire.

Installation de Nginx

Nous allons installer nginx et toutes ses dépendances (c'est-à-dire les logiciels dont nginx a besoin pour fonctionner) avec

sudo apt-get install nginx

Nous obtiendrons un message du type :

Reading package lists... Done
Building dependency tree
Reading state information... Done
The following extra packages will be installed:
 fontconfig-config fonts-dejavu-core libfontconfig1 libgd3 libjbig0 libtiff5 libvpx1 libxpm4 libxslt1.1 nginx-common nginx-full
Suggested packages:
 libgd-tools fcgiwrap nginx-doc ssl-cert
The following NEW packages will be installed:
 fontconfig-config fonts-dejavu-core libfontconfig1 libgd3 libjbig0 libtiff5 libvpx1 libxpm4 libxslt1.1 nginx nginx-common nginx-full
0 upgraded, 12 newly installed, 0 to remove and 0 not upgraded.
Need to get 3,550 kB of archives.
After this operation, 8,666 kB of additional disk space will be used.
Do you want to continue? [Y/n] y

En choisissant "y", nginx et tous les paquets nécessaires seront installés.

Vous pouvez vérifier l'installation avec un navigateur. Allez à l'adresse IP de votre Raspberry pi, dans notre cas http://192.168.0.35/ Nous devrions voir un message du type :

Welcome to nginx on Debian!
If you see this page, the nginx web server is successfully installed and working on Debian. Further configuration is required.
For online documentation and support please refer to nginx.org
Please use the reportbug tool to report bugs in the nginx package with Debian.
However, check existing bug reports before reporting a  new bug.
Thank you for using debian and nginx.

Démarrage et arrêt de Nginx

Après l'installation, Nginx sera automatiquement démarré. Vous pouvez :

  • Arrêter Nginx : sudo service nginx stop
  • Démarrer Nginx : sudo service nginx start
  • Redémarrer Nginx : sudo service nginx restart

Configurer Nginx

Configuration globale de Nginx

Dans la configuration globale de Nginx, nous pouvons configurer la mise en cache par défaut, etc. Le Raspberry Pi 3 utilise un processeur ARM Cortex-A53 quad-core 64 bits à 1,2 GHz. Si vous avez une version antérieure avec moins de cœurs de processeur, vous devriez utiliser

sudo nano /etc/nginx/nginx.conf

pour changer le « worker_processes » afin de l'adapter au nombre de processeurs de votre appareil. Par défaut, il est configuré comme ceci

worker_processes 4;

donc pour le Raspberry Pi 3 vous n'avez pas besoin de le changer.

Après avoir modifié la configuration de Nginx ou d'un domaine virtuel, vous devez effectuer un

sudo nginx reload

pour que les modifications prennent effet.

Domaines virtuels

Il est possible d'exécuter plusieurs sites Joomla! sur le même serveur en utilisant des domaines virtuels.

Placez chaque site web dans un dossier séparé dans la racine web par défaut /var/www/, par exemple :

  • /var/www/example.com/
  • /var/www/voorbeeld.nl/ sudo mkdir /var/www/example.com sudo mkdir /var/www/voorbeeld.nl

Pour chaque site, nous allons créer un domaine virtuel qui est essentiellement un fichier texte contenant des informations spécifiques au domaine :

  • /etc/nginx/sites-available/example.com server { listen 80; server_name example.com www.example.com; root /var/www/example.com;

    access_log /var/log/nginx/example.com.access_log; error_log /var/log/nginx/example.com.error_log info;

    location / { index index.php index.html index.htm; } }

  • /etc/nginx/sites-available/voorbeeld.nl server { listen 80; server_name voorbeeld.nl www.voorbeeld.nl; root /var/www/voorbeeld.nl;

    access_log /var/log/nginx/voorbeeld.nl.access_log; error_log /var/log/nginx/voorbeeld.nl.error_log info;

    location / { index index.php index.html index.htm; } }

Nous devons activer chaque site en créant un lien depuis /etc/nginx/sites-enabled/ vers le domaine virtuel dans « sites-available ». Nous créons un lien symbolique pour chaque domaine virtuel :

sudo ln -s /etc/nginx/sites-available/example.com /etc/nginx/sites-enabled/example.com
sudo ln -s /etc/nginx/sites-available/voorbeeld.nl /etc/nginx/sites-enabled/voorbeeld.nl

Pour que cette configuration de domaine virtuel prenne effet, nous exécutons

sudo nginx reload

et lorsque tout a été configuré correctement, il répondra :

Reloading nginx configuration: nginx.

Base de données

Nous pouvons installer MariaDB ou MySQL ; Joomla! fonctionnera avec les deux. Installons MariaDB avec :

sudo apt-get install mariadb-server

Pendant l'installation, vous devrez ajouter un mot de passe pour l'utilisateur root. Créons un Mot de passe de base de données, par exemple correcthorsebatterystaple.

Enfin, améliorons la sécurité de notre installation MariaDB en supprimant les comptes root accessibles depuis l'extérieur de l'hôte local, les comptes utilisateurs anonymes et la base de données de test. Nous pouvons le faire avec

mysql_secure_installation

PHP

Pour PHP, nous installerons php-fpm (FastCGI Process Manager) qui s'exécute en tant que démon et reçoit les requêtes Fast/CGI. Nous installerons également php5-mysql qui est un module permettant les connexions à la base de données MySQL directement depuis les scripts PHP.

La version plus récente php7 doit être installée avec

sudo apt-get install php-fpm php-mysql

Nous devons maintenant indiquer à Nginx qu'il doit utiliser php-fpm pour les fichiers .php. Nous ajoutons quelques lignes à nos domaines virtuels :

sudo nano /etc/nginx/sites-available/example.com

ajouter :

location ~ \.php$ {
fastcgi_pass unix:/var/run/php/php7.0-fpm.sock;
fastcgi_index index.php;
include fastcgi_params;
}

Testez-le en créant le fichier PHP suivant

sudo nano /var/www/example.com/test.php

Nous utilisons un navigateur pour vérifier si nous voyons la page de configuration PHP à l'adresse http://192.168.0.35/example.com/test.php

Joomla!

  • à faire
    sudo wget https://github.com/joomla/joomla-cms/releases/download/3.6.3/Joomla_3.6.3-Stable-Full_Package.zip
    sudo unzip -x Joomla_3.6.3-Stable-Full_Package.zip

Connecter le Raspberry Pi à Internet

Nous voulons que les internautes puissent visiter notre site Joomla! hébergé sur notre Raspberry Pi. Pour cela, nous devons configurer notre routeur Internet afin qu'il redirige tout le trafic entrant sur le port 80 vers notre Raspberry Pi.

Utilisez votre navigateur web pour vous connecter à l'interface web de votre routeur. Un routeur est généralement situé sur le premier numéro de votre plage d'adresses IP, dans notre cas sur 192.168.0.1. Dans notre routeur, nous configurons la redirection de port :

  • Adresse IP externe : 0.0.0.0
  • Port de début externe : 80
  • Port de fin externe : 80
  • Adresse IP interne : 192.168.0.35 ( = notre Raspberry Pi)
  • Port de début interne : 80
  • Port de fin interne : 80
  • Protocole : TCP

Assurez-vous qu'elle est activée.

Si tout fonctionne correctement, vous devriez voir votre propre site Joomla! sur le Raspberry Pi en visitant votre adresse IP externe (trouvez votre adresse IP externe avec un outil comme whatsmyip.org).

Utilisation d'un nom de domaine

Supposons que notre adresse IP externe soit 42.42.42.42. Supposons également que nous ayons enregistré un nom de domaine appelé example.com. Nous aimerions que notre site Joomla! sur notre Raspberry Pi soit servi aux visiteurs visitant example.com. Si votre bureau d'enregistrement de nom de domaine vous donne la possibilité de configurer le serveur Domain Name System (DNS), nous devrons alors créer un enregistrement MX dans le DNS qui fait pointer notre nom de domaine vers notre adresse IP 42.42.42.42. Notez que cela peut prendre jusqu'à 24 heures avant que tous les fournisseurs d'accès à internet ne redirigent le trafic de leurs clients vers l'enregistrement MX configuré.

Adresse IP statique

La plupart des routeurs continueront d'attribuer la même adresse IP interne à votre Raspberry Pi. Il est parfois préférable de configurer votre Raspberry Pi pour utiliser une adresse IP statique :

sudo nano /etc/network/interfaces

remplacer

iface eth0 inet static

par

iface eth0 inet static
address 192.168.0.35
netmask 255.255.255.0
gateway 192.168.0.1

La passerelle est l'adresse IP de votre routeur. Vous pouvez également la trouver en utilisant

route

Liens externes