Construction du système de la MoodleBox

En grande partie inspiré de :

https://frillip.com/using-your-raspberry-pi-3-as-a-wifi-access-point-with-hostapd/

http://hardware-libre.fr/2014/02/raspberry-pi-creer-un-point-dacces-wifi/

Note à l'attention des linuxiens grand débutants : cette page n'est pas très détaillée et contient de nombreux implicites. Il est nécessaire d'avoir au moins une petite idée de ce que font les commandes indiquées et je ne peux que vous encourager à vous jeter à l'eau mais en essayant de comprendre (google est votre ami) ce qui se passe à chacune des étapes. Pas de panique néanmoins : je n'ai pas tout compris non plus

Première étape : Installation du système de base

Installation d'une image raspian minimale « minibian »

L'image est à télécharger à l'adresse http://jaist.dl.sourceforge.net/project/minibian/ Le fichier image est zippé en fichier .tar.gz.

La carte est crée par la commande :

# dd bs=4M if=repertoire/2016-03-12-jessie-minibian.img of=/dev/mmcblk0

Les noms des fichiers et répertoires sont à adapter à votre situation, notamment pour le nom de la carte. Puis après les quelques minutes d'écriture :

# sync

puis récupérer la carte, l'insérer dans le raspberry pi.

Vérification : alimenter le raspberry. La diode rouge s'illumine, la verte clignote irrégulièrement après 1 à 2 secondes.

Brancher le raspberry sur un réseau ethernet avec un serveur dhcp. Le serveur DHCP (la box par exemple) devrait vous indiquer l'adresse IP du raspberry. Le reste se fera par ssh (putty pour windows, terminal et commande ssh root@IP du raspberry pour linux). Sur l'image minibian, le compte root est actif et son mot de passe est raspberry.

Remarque : cette image est vraiment minimale… il lui manque plein de paquets assez basiques qui seront ajoutés à la demande.

Mise à jour système et installation de l'utilitaire raspi-config

# apt-get update
# apt-get upgrade
# apt-get install raspi-config

Raspi-config est un utilitaire en mode texte dont le fonctionnement est assez simple. Il se lance avec la commande :

# raspi-config

Avec l'utilitaire raspi-config effectuer les tâches suivantes :

  • agrandir le file system à la taille maximale de la SDCard
  • régler les locales à fr_FR.UTF-8
  • régler le fuseau horaire, pays wifi
  • changer le hostname du raspberry pi en moodlebox (ou autre)
  • mettre à jour la distribution jessie
  • modifier le mot de passe de l'utilisateur root (mot de passe sérieux)

Rebooter le raspberry pi par la commande

# reboot

Installation de l'access point

Installation des paquets

Installer le driver wifi absent de la minibian (ce qui est quand même ballot)

# apt-get install firmware-brcm80211 pi-bluetooth wpasupplicant

(pas sûr que le paquet bluetooth soit nécessaire ni wpasupplicant si on ne souhaite qu'un access point complètement ouvert)

Installer les paquets nécessaires à l'access point

# apt-get install hostapd iptables dnsmasq

Installer nano pour l'édition des fichiers de configuration (ou autre éditeur, au choix mais nano a l'avantage d'être tous publics : les commandes au clavier sont rappelés en bas d'écran ce qui est pratique pour un débutant)

# apt-get install nano

Configuration de l'access point : fichier /etc/hostapd/hostapd.conf

# nano /etc/hostapd/hostapd.conf

Le contenu de ce fichier est le suivant :

ctrl_interface=/var/run/hostapd
driver=nl80211
ieee80211n=1
ctrl_interface_group=0
beacon_int=100
interface=wlan0
ssid=MOODLEBOX  # à personnaliser
hw_mode=g
ignore_broadcast_ssid=0
channel=2 # à modifier en fonction des autres réseaux environnants
auth_algs=1

# pour un access point ouvert, les lignes suivantes
# sont à commenter par un # en début de ligne
wmm_enabled=1
eap_reauth_period=360000000
macaddr_acl=0
wpa=2
wpa_passphrase=passmoodlebox
wpa_key_mgmt=WPA-PSK
wpa_pairwise=TKIP
rsn_pairwise=CCMP

Configuration du serveur DHCP : fichier /etc/dnsmasq.conf

# nano /etc/dnsmasq.conf

Le contenu est le suivant :

interface=wlan0
dhcp-range=10.132.1.100,10.132.1.200,255.255.255.0,12h
expand-hosts
domain=localhost

Adaptez la ligne dhcp-range à la plage d'adresses IP souhaitée.

Configuration du réseau : fichier /etc/network/interfaces

# nano /etc/network/interfaces

Le contenu est le suivant :

auto lo
iface lo inet loopback
allow-hotplug eth0
auto eth0
iface eth0 inet dhcp
allow-hotplug wlan0
iface wlan0 inet static
address 10.132.1.1
netmask 255.255.255.0
network 10.132.1.0
broadcast 10.132.1.255

On reboote le raspberry Pi

Vérification : on démarre hostapd pour vérifier que tout est OK :

# /usr/sbin/hostapd /etc/hostapd/hostapd.conf

Une erreur indicant Failed to create interface mon.wlan0: -95 (Operation not supported) n'est pas problématique, mais il faut que l'affichage termine par wlan0: AP-ENABLED

Un client wifi (portable, tablette ou smartphone convenablement configuré) doit pouvoir obtenir une adresse IP en se connectant au réseau dénommé MOODLEBOX (défini dans le fichier /etc/hostapd/hostapd.conf )

Pour que hostapd soit actif au boot : modifier le fichier /etc/default/hostapd

# nano /etc/default/hostapd

Y décommenter (supprimer le #) et compléter la ligne :

DAEMON_CONF="/etc/hostapd/hostapd.conf"

reboot et vérification : un client doit obtenir une adresse IP sans aucune intervention sur le raspberry.

Configuration du routage

Modifier le fichier /etc/sysctl.conf

# nano /etc/sysctl.conf

y décommenter la ligne

net.ipv4.ip_forward=1

puis tapez successivement les trois commandes :

# iptables -t nat -A POSTROUTING -o eth0 -j MASQUERADE
# iptables -A FORWARD -i eth0 -o wlan0 -m state --state RELATED,ESTABLISHED -j ACCEPT
# iptables -A FORWARD -i wlan0 -o eth0 -j ACCEPT

Sauvegarde des règles pour les activer au démarrage :

# sh -c "iptables-save> /etc/iptables.ipv4.nat"

Pour activer les règles de routage :

# echo 1> /proc/sys/net/ipv4/ip_forward

Et pour que l'activation soit automatique au reboot du raspberry :

# nano /etc/network/interfaces

ajoutez à la fin du fichier la ligne :

up iptables-restore </etc/iptables.ipv4.nat

Vérification : après reboot, un client doit pouvoir surfer sur le net en utilisant l'access point du raspberry…

Configuration DNS

La moodlebox doit être accessible par les deux interfaces (wifi et ethernet avec la même adresse : http://moodlebox (ou autre, ce nom n'ayant pas nécessairement à voir avec le hostname défini plus haut) et non pas par les adresses IP. Pour cela le fichier /etc/hosts ve être modifié

# nano /etc/hosts

remplacer 127.0.0.1 par l'IP de la carte eth0 définie dans /etc/network/interfaces

Le fichier /etc/hosts devient donc :

127.0.0.1      localhost
10.132.1.1     moodlebox

reboot et vérification : depuis un client la commande ping moodlebox doit donner lieu à une réponse du raspberry

Installation du serveur web

Installation des paquets

# apt-get install nginx php5-fpm php5-cli php5-pgsql php5-memcached php5-xmlrpc php5-curl php5-gd php5-intl memcached postgresql

et oui… rien que ça (et toutes les dépendances, évidement)

Paramétrage de nginx

Modification du fichier /etc/nginx/sites-available/default

# nano /etc/nginx/sites-available/default

Modifiez les lignes root, index et server_name comme suit :

root /var/www;
index index.php index.html index.htm index.nginx-debian.html;
server_name moodlebox;

Ajoutez avant la dernière accolade } non commentée par # les lignes suivantes :

location ~ [^/]\.php(/|$) {
    include                 fastcgi_params;
    fastcgi_split_path_info ^(.+\.php)(/.+)$;
    fastcgi_pass            unix:/var/run/php5-fpm.sock;
    fastcgi_index           index.php;
    fastcgi_param PATH_INFO       $fastcgi_path_info;
    fastcgi_param SCRIPT_FILENAME $document_root$fastcgi_script_name;
}

Redémarrez nginx

# service nginx restart

Vérification : ouvrez un navigateur à l'adresse http://moodlebox/ Il doit afficher une page commençant par Welcome to nginx on Debian!

Pour vérifier que php fonctionne correctement, créez un fichier /var/www/index.php

# nano /var/www/infos.php

Contenant :

<?php
          phpinfo();
?>

modifiez le propriétaire des fichiers de /var/www :

# chown -R www-data:www-data /var/www/

Vérification : un navigateur à l'adresse http://moodlebox/infos.php doit afficher une page commençant par PHP Version x.y.z

Paramétrage de postgresql et de la base de données

# nano /etc/postgresql/9.4/main/postgresql.conf

modifiez la ligne ssl = true en ssl= false

et redémarrer postgresql :

# service postgresql restart

Créer un utilisateur de BdD et la base :

# su postgres

Il est normal que dans les commandes suivantes, l'invite de commande devienne $ à la place de #

$ createuser -P moodlepg

ne pas tenir compte du message « could not change directory to “/root”l Permission non accordée » puis tapez deux fois le mot de passe de l'utilisateur moodlepg .Cet identifiant et ce mot de passe seront nécessaire pour l'installation de moodle, notez-les…

Créez la base de données :

$ createdb moodledb -O moodlepg -E utf8

Terminez en appuyant sur ctrl + D

Installation de moodle

Téléchargement de l'archive dans le répetoire temporaire

# cd /tmp
# wget https://download.moodle.org/stable31/moodle-3.1.tgz

Décompression et déplacement dans le répetoire du serveur web

# tar xzfv moodle-3.1.tgz
# cd moodle
# mv * /var/www/
# chown -R www-data:www-data /var/www/

Creer le répertoire moodledata

# mkdir /var/moodledata
# chown www-data:www-data /var/moodledata/

La configuration de moodle peut alors commencer à l'adresse http://moodlebox/install.php mais ceci est une autre histoire

Cette page n'existe pas encore

Vous avez suivi un lien vers une page qui n'existe pas encore. Si vos permissions sont suffisantes, vous pouvez la créer en cliquant sur « Créer cette page ».

Discussion

Entrer votre commentaire:
11 +4 = ?