Resultat D1 D2 - Creusot Cyclisme

Download Report

Transcript Resultat D1 D2 - Creusot Cyclisme

Introduction a` la plateforme Raspberry Pi
— Partie I —
B. Q UOITIN, D. H AUWEELE et G. H UYSMANS
Facult´e des Sciences, Universit´e de Mons
26 novembre 2014
1
Objectifs de la s´eance
L’objectif de cette s´eance est la d´ecouverte du syst`eme d’exploitation Linux sur la plateforme Raspberry
Pi. La plateforme sera utilis´ee sans e´ cran ( headless ).
La s´eance couvrira des e´ l´ements tels que la gestion des utilisateurs, la gestion des fichiers, l’installation
de nouveaux paquets logiciels ainsi que quelques e´ l´ements d’administration r´eseau. A la fin de la s´eance,
les e´ tudiants devraient eˆ tre capables d’installer un serveur web qui servira a` ex´ecuter des commandes shell
a` distance.
2
Console s´erie
La premi`ere e´ tape de cette s´eance consiste a` obtenir une console s´erie sur la platine Raspberry Pi au
travers d’un adaptateur USB/s´erie. Cette console permettra d’effectuer la configuration initiale du syst`eme.
+
Attention ! une connexion incorrecte peut endommager la platine. Les manipulations qui suivent
doivent eˆ tre r´ealis´ees lorsque la platine est hors tension. Nous consulter en cas de doute.
L’adaptateur USB/s´erie doit eˆ tre reli´e d’une part a` la platine Raspberry Pi (connecteur P1) et d’autre
part (cˆot´e USB) a` l’ordinateur hˆote. La Table 1 indique comment les connexions doivent eˆ tre effectu´ees. La
connexion d’un adaptateur est illustr´ee a` la Figure 1. Afin de faire fonctionner l’adaptateur sur l’ordinateur
hˆote, il peut eˆ tre n´ecessaire d’installer un gestionnaire de p´eriph´erique sous Windows ou sous Mac OS X.
F IGURE 1 – Raccordement d’une platine Raspberry Pi (mod`ele A ou B) et d’un adaptateur USB/s´erie.
Afin d’envoyer des commandes a` la platine Raspberry Pi au travers de l’adaptateur USB/s´erie, on utilise
un logiciel appel´e e´ mulateur de terminal. Sous Linux et Mac OS X, il est recommand´e d’utiliser screen.
1
Adapteur USB/s´erie
GND
RXD
TXD
Raspberry Pi
GND, pin 6
RXD, pin 10
TXD, pin 8
TABLE 1 – Connexions entre adaptateur USB/s´erie et carte Raspberry Pi.
Sous Windows, il est recommand´e d’utiliser TeraTerm. Il est n´ecessaire de sp´ecifier certains param`etres de
la liaison s´erie a` l’´emulateur de terminal. Ces param`etres sont donn´es a` la Table 2.
Param`etre
D´ebit (baudrate)
Bits de donn´ees
Bit(s) de stop
Bit de parit´e
Contrˆole de flux
Valeur
115200 bauds
8
1
aucun
aucun
TABLE 2 – Param`etres de la liaison s´erie.
Sous Linux et Mac OS X, screen est invoqu´e dans un terminal comme illustr´e ci-dessous. Les seuls
param`etres n´ecessaires sont le nom du p´eriph´erique et le d´ebit. L’adaptateur sera d´esign´e par /dev/ttyUSBn
sous Linux et par /dev/tty.SLAB USBtoUARTn sous Mac OS X. Pour quitter screen, entrez la
s´equence Ctrl-a k .
bob@hostpc:˜$ screen /dev/ttyUSB0 115200
3
Mise sous tension et ligne de commande
Afin de d´emarrer la platine Raspberry Pi, brancher une alimentation USB au connecteur USB micro
B nomm´e S1 (”Power”). La LED rouge PWR s’allume de fac¸on continue. La LED verte ACT s’allume de
fac¸on intermittente, au rythme des acc`es a` la carte SD. Le syst`eme d´emarre d`es la mise sous tension et les
messages de d´emarrage de Linux s’affichent dans l’´emulateur de terminal.
+
Attention ! Avant de mettre la platine hors tension, il est n´ecessaire d’arrˆeter le syst`eme d’exploitation en utilisant la commande sudo poweroff ! ! !
Lorsque le d´emarrage du syst`eme est termin´e, l’utilisateur est invit´e a` s’authentifier. Un utilisateur
nomm´e pi a e´ t´e pr´ed´efini. Son mot de passe est raspberry. Attention, le login et le mot de passe sont
sensibles a` la casse !
Une fois authentifi´e, une session utilisateur est cr´ee´ e et une invite de commande similaire a` celle
illustr´ee ci-dessous) est affich´ee . Il est alors possible d’adresser des commandes au syst`eme afin de lancer
des programmes, changer la configuration, etc. Les commandes sont interpret´ees par un programme sp´ecial
appel´e shell. Il existe plusieurs shells diff´erents, mais celui configur´e ici est appel´e bash (Bourne again
shell).
pi@raspberrypi:˜$
+
La plupart des commandes de Linux sont document´ees via des pages de manuel (man pages).
Pour consulter la page de manuel d’une commande, utilisez man nom commande.
Il est possible de consulter la liste des messages de d´emarrage ainsi que ceux qui s’y seraient e´ ventuellement ajout´es avec la commande dmesg.
2
pi@raspberrypi:˜$ dmesg
Afin d’afficher les messages page par page, il est possible de rediriger la sortie de dmesg dans un
programme pager tel que more ou less. Dans l’exemple ci-dessous, le caract`ere | indique au shell qu’il
faut rediriger la sortie de dmesg vers le programme more. Il suffit alors de presser la touche espace
ou la touche entr´ee pour avancer d’une page ou d’une ligne dans les messages. La touche q termine le
pager. Avec less, il est aussi possible de remonter dans les messages (flˆeche haut ou page up) ainsi que
d’effectuer des recherches (en pressant / suivie de la recherche).
pi@raspberrypi:˜$ dmesg | more
A ce stade, il est possible d’utiliser les commandes reprises a` la Table 3 pour d´ecouvrir certaines caract´eristiques du syst`eme.
Commande
cat
hexdump
more, less
grep
nano, vi/vim, emacs
uname
uptime
free
lsusb
date
Description
Affiche le contenu d’un fichier texte.
Affiche le contenu d’un fichier binaire.
Pagers : affichent un fichier ou la sortie d’une commande page
par page.
Extrait les lignes d’un fichier ou de la sortie d’une commande
qui correspondent a` un pattern.
Editeurs de texte.
Donne le nom du syst`eme d’exploitation. L’option -a fournit
des d´etails pr´ecieux tels que la version du noyau.
D´etermine le temps e´ coul´e depuis le dernier d´emarrage ainsi que
la charge moyenne.
D´etermine la m´emoire disponible. L’option -h permet d’afficher
les volumes de m´emoire de fac¸on plus lisible.
Liste les p´eriph´eriques USB.
Fournit le jour et la date du syst`eme 1 .
TABLE 3 – Commandes donnant des informations sur le syst`eme.
4
Configuration initiale
Avant de continuer la s´eance, un certain nombre de param`etres du syst`eme peuvent eˆ tre chang´es. Ces
changements sont facilit´es par l’utilitaire raspi-config mais ils peuvent e´ galement eˆ tre r´ealis´es par
d’autres outils 2 . La liste des param`etres a` configurer pour cette initiation est limit´ee au mot de passe de
l’utilisateur et a` l’activation du serveur SSH.
Pour lancer l’utilitaire raspi-config, utiliser la commande suivante. La commande raspi-config
n´ecessite des privil`eges d’administrateur du syst`eme. La commande sudo permet a` certains utilisateurs
d’ex´ecuter des commandes privil´egi´ees.
pi@raspberrypi:˜$ sudo raspi-config
Password:
Pour changer le mot de passe de l’utilisateur pi, aller dans Change User Passwd. Pour autoriser le
serveur SSH (Secure SHell), aller dans Advanced Options, puis SSH et s´electionner Enable.
1. Le Raspberry Pi n’a pas d’horloge temps r´eel (RTC) mais peut synchroniser son horloge via le r´eseau avec le protocole NTP.
Il est n´ecessaire de configurer la timezone du syst`eme.
2. Le mot de passe d’un utilisateur peut eˆ tre chang´e par la suite via l’utilitaire passwd. Le serveur ssh peut eˆ tre activ´e/d´esactiv´e
via la commande update-rc.d ssh defaults ou update-rc.d ssh disable.
3
5
Gestion des utilisateurs
Chaque utilisateur porte un nom mais e´ galement un num´ero d’utilisateur (uid), un num´ero de groupe
(gid), un r´epertoire personnel (home) et un shell par d´efaut. Les utilisateurs sont d´efinis dans le fichier
/etc/passwd. Ce fichier contient une ligne par utilisateur 3 . L’utilisateur nomm´e root en particulier a
tous les droits. Il est possible de consulter le contenu 4 de ce fichier avec un programme pager tel que more
ou less.
pi@raspberrypi:˜$ more /etc/passwd
En utilisant l’utilitaire grep, il est possible d’extraire les lignes du fichier /etc/passwd qui concernent
l’utilisateur pi. Le param`etre ˆpi de grep est une expression r´eguli`ere qui demande d’extraire exclusivement les lignes qui commencent par pi. La seule ligne qui est fournie correspond a` l’utilisateur pi.
Y figurent les num´eros d’utilisateur (1000) et de groupe (1000), le r´epertoire personnel (/home/pi) et le
shell (/bin/bash).
pi@raspberrypi:˜$ grep ˆpi /etc/passwd
pi:x:1000:1000:,,,:/home/pi:/bin/bash
Chaque utilisateur peut e´ galement faire partie d’autres groupes d’utilisateurs. Chaque groupe d’utilisateurs est e´ galement identifi´e par un num´ero de groupe (gid). Les groupes sont d´efinis dans /etc/group.
Il est possible de d´eterminer les utilisateurs d’un groupe en lisant ce fichier. Pour d´eterminer les groupes
auxquels un utilisateur appartient, il existe un utilitaire sp´ecifique : groups. Le r´esultat de la commande
groups ci-dessous indique notamment que pi appartient au groupe sudo. Ce sont les membres de ce
groupe qui peuvent lancer des commandes privil´egi´ees via l’utilitaire sudo.
pi@raspberrypi:˜$ groups
pi adm dialout cdrom sudo audio video plugdev games users netdev input
spi gpio
La Table 4 liste des commandes utiles pour la gestion des utilisateurs. Pour chaque commande un court
descriptif est fourni. Il est n´ecessaire de consulter la man page des commandes pour obtenir plus de d´etails.
La plupart de ces commandes n´ecessitent des droits d’administrateur et peuvent eˆ tre invoqu´ees avec la
commande sudo. La commande passwd peut eˆ tre utilis´ee par un utilisateur non privil´egi´e pour changer
son propre mot de passe.
Commande
passwd
adduser
deluser
usermod
addgroup
delgroup
id
groups
last
lastb
who
Description
Change le mot de passe d’un utilisateur.
Ajoute un utilisateur ou ajouter un utilisateur a` un groupe.
Supprime un utilisateur.
Modifie un utilisateur.
Ajoute un groupe.
Supprime un groupe.
Affiche l’uid et le gid d’un utilisateur.
Affiche les groupes auxquels appartient un utilisateur.
Affiche la liste des derniers utilisateurs qui se sont connect´es.
Affiche la liste des derniers utilisateurs qui ont e´ chou´e a` se
connecter.
Affiche la liste des utilisateurs actuellement connect´es.
TABLE 4 – Commandes utiles pour la gestion des utilisateurs.
3. Dans les versions ant´erieures d’UNIX, les mots de passe des utilisateurs e´ taient stock´es dans le fichier /etc/passwd. Aujourd’hui, ceux-ci sont stock´es dans le fichier /etc/shadow qui n’est lisible que par l’administrateur du syst`eme.
4. Un grand nombre d’utilisateurs sont d´ecrits dans /etc/passwd, cependant tous ne concernent pas des utilisateurs r´eels, mais
des utilisateurs d´edi´es a` l’ex´ecution de certains programmes.
4
6
Fichiers, r´epertoires et permissions
Il est possible de lister les fichiers du r´epertoire courant en utilisant la commande ls. Lorsqu’un utilisateur ouvre une nouvelle session, il est automatiquement plac´e dans son r´epertoire personnel. Dans le cas
de l’utilisateur pi, ce r´epertoire est /home/pi. La commande ls liste les fichiers de ce r´epertoire. La
commande ls peut prendre un grand nombre de param`etres qu’il est utile de connaˆıtre.
pi@raspberrypi:˜$ ls
pistore.desktop
L’option -a demande d’afficher tous les fichiers, y compris ceux qui sont cach´es. La commande r´ev`ele
deux fichiers cach´es dont le nom commence par un point (en rouge) ainsi que deux r´epertoires (en bleu) :
le r´epertoire . (point) d´esigne le r´epertoire courant tandis que le r´epertoire .. (deux points) d´esigne le
r´epertoire parent.
pi@raspberrypi:˜$ ls -a
. .. .bash_logout .bashrc
pistore.desktop
.profile
Il est possible de faire r´ef´erence aux fichiers d’un autre r´epertoire, en sp´ecifiant le chemin de ce
r´epertoire. Un chemin est une suite de noms de r´epertoires s´epar´es par le caract`ere / . On distingue
les chemins absolus qui commencent a` la racine (p.ex. /home/pi) des chemins relatifs qui commencent
au r´epertoire courant (p.ex. pi).
Une autre option utile de ls est l’option -l qui permet d’obtenir plus d’information sur les fichiers
list´es. Par d´efaut, les informations list´ees sont le type du fichier, les droits d’acc`es, le nombre de hard links,
le propri´etaire (en rouge ci-dessous), le groupe (en bleu), la taille en octets (en vert), les date et heure de
derni`ere modification et le nom. L’exemple suivant montre comment ls permet d’obtenir cette information
pour des fichiers particuliers, en fournissant leur chemin complet 5 .
pi@raspberrypi:˜$ ls -l /etc/passwd
-rw-r--r-- 1 root root 1275 Nov 19 16:02 /etc/passwd
pi@raspberrypi:˜$ ls -ld /etc
drwxr-xr-x 98 root root 4096 Nov 19 16:02 /etc
Le premier caract`ere indique le type du fichier : - indique un fichier normal, d un r´epertoire et l un lien.
D’autres types de fichiers sont possibles. Les 9 caract`eres suivants d´esignent les droits d’acc`es. La Table 5
montre sur des exemples comment ces droits d’acc`es sont interpr´et´es. Dans le cas d’un fichier, la lettre
r indique le droit de lecture, w le droit d’´ecriture et x le droit d’ex´ecution. Dans le cas d’un r´epertoire,
r indique le droit d’´enum´erer le contenu, w le droit de renommer ou supprimer le contenu et x le droit
d’entrer dans le r´epertoire.
Fichier
/etc/passwd
/etc
Type
d
Propri´etaire
(owner)
rwrwx
Groupe
(group)
r-r-x
Autres
(others)
r-r-x
TABLE 5 – Type et droits d’acc`es de fichiers.
Ainsi, le fichier /etc/passwd peut eˆ tre lu par tout le monde, mais seul le propri´etaire (root) peut
le modifier. De mˆeme, il est possible a` tous les utilisateurs de lire et entrer dans le r´epertoire /etc mais
seul son propri´etaire (root) peut le modifier.
La Table 6 liste des commandes utiles pour la gestion des fichiers et des r´epertoires.
L’exemple suivant illustre la manipulation de r´epertoires. L’utilisateur se trouve initialement dans le
r´epertoire /home/pi, ce qu’il v´erifie avec la commande pwd. Il cr´ee un r´epertoire work avec la commande mkdir, se d´eplace dans ce r´epertoire avec cd et y e´ dite un fichier. L’utilisateur retourne au
5. L’option -d permet d’obtenir le listing d’un r´epertoire et non celui de son contenu.
5
Commande
mv
cp
rm
chown
chmod
umask
cd
mkdir
rmdir
pwd
ln -s
find
Description
D´eplace des fichiers et/ou un r´epertoires.
Copie des fichiers et/ou r´epertoires.
Supprime des fichiers et/ou r´epertoires.
Change le propri´etaire et/ou le groupe d’un fichier ou d’un
r´epertoire.
Change les droits d’acc`es d’un fichier ou d’un r´epertoire.
Change les droits assign´es aux nouveaux fichiers et r´epertoires.
Change le r´epertoire courant. En particulier, cd - permet de
revenir au r´epertoire pr´ec´edent et cd ˜ permet d’aller vers le
r´epertoire personnel.
Cr´ee un r´epertoire.
Supprime un r´epertoire.
D´etermine le r´epertoire courant.
Cr´ee un lien symbolique vers un fichier ou un r´epertoire.
Recherche des fichiers.
TABLE 6 – Commandes utiles pour la gestion des fichiers et r´epertoires.
r´epertoire pr´ec´edent avec cd - puis tente de supprimer le r´epertoire work. Le syst`eme refuse car le
r´epertoire est non vide. L’utilisateur supprime le r´epertoire et tout son contenu avec la commande rm munie des options -R (r´ecursif) et -f (force).
pi@raspberrypi:˜$ pwd
/home/pi
pi@raspberrypi:˜$ mkdir work
pi@raspberrypi:˜$ cd work
pi@raspberrypi:˜$ pwd
/home/pi/work
pi@raspberrypi:˜$ nano memoire.tex
pi@raspberrypi:˜$ cd /home/pi
pi@raspberrypi:˜$ rmdir work
rmdir: failed to remove ’work’: Directory not empty
pi@raspberrypi:˜$ rm -Rf work
pi@raspberrypi:˜$
+
7
Attention ! En ligne de commande, aucune confirmation n’est demand´ee avant de modifier,
e´ craser ou supprimer un fichier. R´efl´echissez a` 2 fois avant de presser Enter .
Configuration r´eseau
+
Attention ! Le r´eseau informatique est une ressource partag´ee. Une mauvaise manipulation
locale peut causer des dommages tels qu’une interruption de connectivit´e pour d’autres utilisateurs. En particulier, ne configurez pas d’adresse statique sur le r´eseau de l’universit´e.
Le syst`eme est configur´e pour obtenir une adresse IP automatiquement via le protocole DHCP (Dynamic Host Control Protocol). Connecter le cˆable Ethernet a` la platine Raspberry Pi. Apr`es quelques secondes, le syst`eme devrait avoir rec¸u une adresse IP. Ceci peut eˆ tre v´erifi´e avec l’utilitaire ifconfig.
L’´etat de l’interface Ethernet est affich´e, comme illustr´e ci-dessous.
6
pi@raspberrypi:˜$ ifconfig eth0
eth0
Link encap:Ethernet HWaddr b8:27:eb:81:6b:a3
inet addr:192.168.1.137 Mask:255.255.255.0
UP BROADCAST MULTICAST MTU:1500 Metric:1
RX packets:0 errors:0 dropped:0 overruns:0 frame:0
TX packets:0 errors:0 dropped:0 overruns:0 carrier:0
collisions:0 txqueuelen:1000
RX bytes:0 (0.0 B) TX bytes:0 (0.0 B)
Il est d´esormais possible de tester a` partir de l’ordinateur hˆote si la carte Raspberry Pi est accessible.
Pour cela, utiliser l’utilitaire ping. L’adresse IP donn´ee dans l’exemple doit eˆ tre remplac´ee par celle
obtenue via ifconfig ci-dessus. Appuyer sur Ctrl-C pour arrˆeter ping.
pi@raspberrypi:˜$ ping 192.168.1.137
PING 192.168.1.137: 56 data bytes
64 bytes from 192.168.1.137: icmp\_seq=0 ttl=64 time=11.910 ms
64 bytes from 192.168.1.137: icmp\_seq=1 ttl=64 time=9.120 ms
(Ctrl-C)
La configuration des interfaces r´eseau est sp´ecifi´ee dans le fichier /etc/network/interfaces.
La Table 7 liste un ensemble de commandes utiles pour la configuration et le diagnostic r´eseau.
Commande
ifconfig
route
ip
netstat
dig
arp
iwconfig
iptables
ip6tables
ufw
tcpdump, tshark
ping
traceroute
iftop
nmap
Description
Affiche ou modifie la configuration des interfaces r´eseau.
Affiche ou modifie la table de routage.
Outil versatile de configuration IP.
Affiche des informations sur les connexions r´eseaux, les tables
de routage, etc.
Interroge le syst`eme DNS.
Affiche la table ARP.
Affiche ou modifie la configuration des interfaces r´eseau sans fil.
Affiche ou modifie les r`egles de firewall.
Equivalent de iptables pour IPv6.
Uncomplicated FireWall : facilite la configuration du firewall.
Capture les paquets r´eseau.
Teste la joignabilit´e d’un hˆote.
Trace le chemin jusqu’`a un hˆote.
Affiche l’utilisation de la bande-passante d’une interface.
Scanneur de ports.
TABLE 7 – Commandes utiles pour la configuration et le diagnostic r´eseau.
8
D´emarrer une session SSH
A partir de l’ordinateur hˆote, ouvrez une connexion SSH vers l’adresse IP qui vous a e´ t´e rapport´ee
par ifconfig. Pour ouvrir une connexion SSH sous Linux et Mac OS X, ouvrez un terminal et tapez
la commande suivante en prenant bien soin de remplacer l’adresse de l’exemple par l’adresse obtenue par
votre propre platine Raspberry Pi en Section 7. Sous Windows, il est recommand´e d’utiliser l’utilitaire
putty.
bob@hostpc:˜$ ssh [email protected]
7
+
9
La plateforme Raspberry Pi est destin´ee a` eˆ tre connect´ee a` un r´eseau. Il est primordial de
veiller a` sa s´ecurit´e en (1) remplac¸ant les mots de passe par d´efaut des utilisateurs par des
mots de passe forts (utiliser p.ex. makepasswd) et (2) prˆeter attention aux services r´eseau
actifs et configurer un firewall (utiliser p.ex. ufw).
Gestion de packages
L’installation de logiciels sous Linux passe g´en´eralement par un syst`eme de gestion de packages. Celuici maintient la liste des packages disponibles et leurs d´ependances. Ainsi, si un package A d´epend d’un
autre package B, l’installation de A ne sera possible que si B est install´e pr´ealablement. De mˆeme, il ne
sera pas possible de d´esinstaller un package dont d’autres packages d´ependent.
La distribution Linux Raspbian install´ee sur la carte Raspberry Pi est d´eriv´ee d’une distribution appel´ee
Debian. Cette derni`ere utilise un gestionnaire de packages nomm´e APT (Advanced Package Tool).
La Table 8 liste les commandes utiles pour la gestion de packages. Les commandes utilis´ees le plus
fr´equemment sont apt-get install pour installer un nouveau package, apt-cache search pour
rechercher un package, ainsi que apt-get update pour maintenir la liste des packages a` jour. La plupart des commandes apt- supportent l’option --dry-run qui permet de v´erifier ce que la commande
fait sans apporter aucune modification au syst`eme.
Commande
apt-cache search P AT T ERN
apt-cache show P KG N AM E
apt-cache depends P KG N AM E
apt-cache rdepends P KG N AM E
apt-get install
apt-get remove
apt-get purge
apt-get clean
apt-get autoclean
apt-get autoremove
apt-get update
apt-get upgrade
dpkg -L P KG N AM E
dpkg --search P AT T ERN
dpkg-query -l P AT T ERN
aptitude
Description
Liste les packages qui contiennent le pattern dans leur nom ou
leur description. Utiliser l’option --names-only pour restreindre la recherche aux noms de packages.
Affiche des d´etails concernant un package.
Liste les packages dont d´epend le package fourni.
Liste les packages qui d´ependent du package fourni.
Installe un package et ses d´ependances.
Supprime un package.
Supprime un package (y compris ses fichiers de configuration).
Nettoie le syst`eme des fichiers t´el´echarg´es par apt. Utile pour
lib´erer de l’espace.
Variante de apt-get clean.
Variante de apt-get clean.
Met a` jour la liste des packages disponibles a` partir des sources
(/etc/apt/sources.list).
Met a` jour les packages install´es.
Liste les fichiers install´es par un package.
Recherche un fichier parmi les packages install´es.
Liste les packages qui correspondent au pattern fourni.
Interface de haut-niveau au gestionnaire de package APT.
TABLE 8 – Commandes utiles pour la gestion de packages.
10
Installation d’un serveur web
L’objectif de cette section est d’installer un serveur web (Apache) sur la carte Raspberry Pi. Il suffit
pour cela d’installer le package apache2.
Une fois le package apache2 install´e, le serveur doit eˆ tre imm´ediatement op´erationnel. La configuration d’apache est effectu´ee au travers de plusieurs fichiers situ´es dans le r´epertoire /etc/apache2. Le
fichier apache2.conf est le fichier de configuration principal. Il fait r´ef´erence a` d’autres fichiers situ´es
8
dans les sous-r´epertoires conf.d, mods-enabled (options suppl´ementaires) et sites-enabled
(liste des sites configur´es).
Afin de tester le serveur, ouvrir un navigateur sur l’ordinateur hˆote et pointer vers l’adresse de la carte
Raspberry Pi (voir Section 7). Une page web avec le message It works ! devrait s’afficher. La configuration de ce site est situ´ee dans /etc/apache2/sites-enabled/000-default. L’emplacement
des fichiers qui constituent ce site est sp´ecifi´e par les e´ l´ements DocumentRoot et Directory. Par d´efaut,
cet emplacement est dans /var/www. Il est possible d’y ajouter des fichiers et/ou remplacer les fichiers
existants afin de modifier le contenu du site web.
La documentation du serveur Apache 2 peut eˆ tre trouv´ee en ligne a` l’adresse http://httpd.
apache.org/docs/2.2/. Le serveur Apache g´en`ere des logs qui peuvent eˆ tre tr`es utiles pour d´eterminer
l’origine d’un probl`eme de configuration. Le fichier /var/log/apache2/access.log liste les tentatives d’acc`es a` des fichiers inconnus ou interdits. Le fichier /var/log/apache2/error.log liste
les erreurs qui se produisent lors de l’acc`es aux pages.
10.1
Pages dynamiques avec PHP
Cette sous-section propose d’installer, configurer et tester PHP, un langage de programmation simple
tr`es fr´equemment utilis´e pour g´en´erer dynamiquement le contenu de pages web. Le serveur Apache est
pr´evu pour fonctionner en tandem avec PHP.
La premi`ere e´ tape consiste a` installer le package php5. Le package libapache2-mod-php5 qui
permet l’int´egration a` Apache est e´ galement install´e automatiquement. Le serveur Apache est red´emarr´e
automatiquement par APT afin de rendre le module PHP op´erationnel.
Pour tester PHP, il suffit de cr´eer un fichier PHP qui sera plac´e dans l’arborescence de fichiers utilis´ee
par Apache, par exemple sous /var/www ou dans un r´epertoire utilsateur sous ˜/public html. Le
fichier doit avoir l’extension .php afin qu’Apache le donne a` PHP pour g´en´erer la page web demand´ee.
Le fichier index.php donn´e en exemple ci-dessous g´en`ere une page HTML qui contient l’heure sur le
serveur. Les tags <?php et ?> d´elimitent la partie du fichier qui est interpret´ee par PHP. Il peut y avoir
plusieurs de ces sections.
<html>
<head>
<title>Raspberry Pi PHP test page</title>
</head>
<body>
Heure serveur :
<?php
printf date("H:i");
?>
</body>
</html>
Attention, la configuration par d´efaut d’Apache d´esactive l’ex´ecution de scripts PHP pour les r´epertoires
utilisateurs (i.e. dans ˜/public html. Il est n´ecessaire de changer le ficher php5.conf dans le r´epertoire
/etc/apache2/mods-enabled : mettre en commentaire la fin du fichier qui se trouve entre les tags
<IfModule> et </IfModule>.
Une fonction tr`es utile d’Apache pour une application avec le Raspberry Pi est shell exec. Cette
fonction permet d’ex´ecuter une commande sur le Raspberry Pi, a` distance, via une page web. Le r´esultat de
la commande peut eˆ tre r´ecup´er´e, e´ ventuellement trait´e, puis retourn´e dans la page web g´en´er´ee. En guise
d’exercice, e´ crire une page PHP qui retourne le r´esultat de la commande free -k. L’extrait ci-dessous
montre comment utiliser la fonction shell exec.
<?php
$result= shell_exec("ls -lR /home/pi");
$array= explode("\n", $result);
for ($i= 0; $i < count($array); $i++) {
9
print htmlentities($array[$i]);
print "<br>";
}
?>
La documentation du langage PHP peut eˆ tre trouv´ee en ligne a` l’adresse http://php.net/docs.
php. En cas d’erreur de programmation en PHP, il est utile de consulter le fichier de log d’Apache
/var/log/apache2/error.log. Par exemple, la commande suivante affiche en permanence la fin
du fichier de log et se met a` jour lorsque de nouveaux messages de log sont ajout´es. Il peut eˆ tre utile
d’ouvrir une seconde session SSH dans laquelle s’ex´ecute cette commande.
pi@raspberry:˜$ tail -f /var/log/apache2/error.log
[Tue Nov 25 13:25:19 2014] [error] [client 192.168.1.137]
PHP Fatal error: Call to undefined function shall_exec()
in /home/pi/public_html/index.php on line 11
11
11.1
Pour ceux qui veulent aller plus loin...
Multicast DNS
La configuration r´eseau actuelle n’est pas pratique car elle n´ecessite une connexion pr´ealable a` la plateforme Raspberry Pi via la console s´erie afin d’en d´eterminer l’adresse IP. Cette section s’int´eresse a` la
configuration de mDNS (multicast DNS) afin que la correspondance nom de la machine (hostname) et
adresse IP soit transmise automatiquement aux ordinateurs pr´esents sur le mˆeme r´eseau local.
L’utilisation de mDNS n´ecessite d’avoir pr´ealablement chang´e le nom d’hˆote de la platine Raspberry Pi. Cette section fait l’hypoth`ese que le nom d’hˆote utilis´e est lonely looking pi. Le changement du nom d’hˆote peut eˆ tre effectu´e avec raspi-config (voir Section 4) ou en modifiant le fichier
/etc/hostname.
Sous Linux, le protocole mDNS est impl´ement´e par le service avahi-daemon. Il est n´ecessaire de
l’installer et le configurer.
pi@raspberrypi:˜$ sudo apt-get install avahi-daemon
pi@raspberrypi:˜$ sudo service avahi-daemon restart
Restarting Avahi mDNS/DNS-SD Daemon: avahi-daemon.
pi@raspberrypi:˜$
Il est ensuite possible de joindre la platine Raspberry Pi en sp´ecifiant son nom, comme illustr´e cidessous avec ping. Cela devrait e´ galement fonctionner avec ssh et/ou HTTP (web).
bob@hostpc:˜$ ping lonely looking pi.local
Note : sous Windows, il est possible que la r´esolution de noms avec mDNS ne fonctionne pas imm´ediatement. Il est n´ecessaire d’installer Bonjour Print Services for Windows (http://support.apple.
com/kb/dl999) et d’autoriser le firewall a` laisser entrer le trafic UDP sur le port 5353 (mDNS). Sous
Linux, il faut que la librairie libnss-mdns soit install´ee.
10