Et déboguer sur Raspberry Pi depuis sa machine de bureau ?

Il est tout à fait possible d’installer Xdebug un Raspberry et de le configurer en serveur NFS afin qu’il partage son répertoire Jeedom avec sa machine de bureau et utiliser l’environnement de développement Eclipse précédemment mis en place.

Installation du serveur NFS sur le Rapberry

Se connecter à son Pi et exécuter les commandes suivantes:

sudo apt update
sudo apt install nfs-kernel-server

Editer le fichier /etc/exports et ajouter la ligne suivante:

/var/www/html 192.168.0.0/255.255.0.0(rw,all_squash,anonuid=33,anongid=33,sync,no_subtree_check)

ce qui va permettre de monter le répertoire Jeedom du Raspberry depuis l’ordinateur de bureau en se faisant passer pour l’utilisateur www-data, grâce à la combinaison d’options all_squash,anonuid=33,anongid=33, et ainsi ne pas avoir de problèmes de droits.

Relancer le service nfs-server:

sudo systemctl restart nfs-server

Pour vérifier que le répertoire est bien exporté, taper:

showmount -e

La commande suivante permet de vérifier l’état du service:

sudo systemctl status nfs-server

Elle retourne que ce dernier est active (exited) alors qu’il fonctionne parfaitement.

Installation de xdebug sur le Raspberry

Nous devons installer et configurer xdebug sur le Raspberry.

Ouvrir un terminal sur ce dernier et taper:

sudo apt install php-xdebug

Éditer le fichier /etc/hosts:

sudo nano /etc/hosts

Et ajouter l’adresse IP de votre machine de bureau (il faut bien sûr avoir fait le nécessaire sur son routeur pour que celle ci soit fixe). La nommer comme souhaité, ossau ici:

192.168.x.xxx    ossau

Éditer le fichier de configuration xdebug.ini d’Apache:

sudo nano /etc/php/7.0/apache2/conf.d/20-xdebug.ini

Et le modifier comme suit (remplacer ossau par le nom de votre machine de bureau configuré précédemment):

zend_extension=xdebug.so
xdebug.remote_enable=On
xdebug.remote_host=ossau
xdebug.remote_port=9000
xdebug.remote_handler="dbgp"

Redémarrer le serveur Apache:

service apache2 restart

Et vérifier que la commande suivante liste bien Xdebug.

php -m

Préparation de la machine de bureau

Commencer par vérifier que le client NFS est bien installé:

sudo apt install nfs-common

Déclarer l’adresse IP du Rapsberry (il faut bien sûr avoir fait le nécessaire sur son routeur pour que celle ci soit fixe): éditer le fichier /etc/hosts:

sudo nano /etc/hosts

Et ajouter:

192.168.x.xxx    pi3

Montage du répertoire Jeedom via fstab

Si le Raspberry Pi est tout le temps opérationnel, ou si cela ne dérange pas de monter le répertoire à la main lorsque nécessaire, il est possible de passer par /etc/fstab en ajoutant la ligne:

pi3:/var/www/html /mnt/pi3-jeedom nfs defaults,user,auto,noatime,intr   0   0

En ayant préalablement créer le point de montage:

sudo mkdir /mnt/pi3-jeedom

Montage du répertoire Jeedom via AutoFS

Il est bien souvent plus pratique d’utiliser AutoFS pour les raisons indiquées dans l’introduction de l’aide Ubuntu sur le sujet.

Installer AutoFS:

sudo apt install autofs

Commenter le point de montage du répertoire Jeedom dans le fichier /etc/fstab si vous l’aviez précédemment ajouté.

Éditer le fichier /etc/auto.master et ajouter la ligne:

/net    /etc/auto.nfs --ghost,--timeout=60

Puis éditer le fichier /etc/auto.nfs (le créer si nécessaire) et ajouter la ligne:

pi3-jeedom  -fstype=nfs,rw,rsize=8192,wsize=8192    pi3:/var/www/html

Redémarrer le service pour que la nouvelle configuration soit prise en compte:

Le point de montage est \net\pi3-jeedom. Vous devriez y voir le contenu du répertoire Jeedom du Raspberry.

Configurer l’environnement sous Eclipse

Suivre la procédure dans la section Configurer Eclipse pour Jeedom avec les adaptations suivantes:

  • Création du projet:
    • Project name: Jeedom Pi3
    • Directory: \net\pi3-jeedom
  • Configuration du débogage
    • PHP Server:
      • Server Name: Jeedom Pi3
      • Base URL: http://pi3
      • Document Root: /net/pi3-jeedom
    • Path Mapping:
      • Path on Server: /var/www/html
      • Path in Workspace: /Jeedom Pi3
    • PHP Debug:
      • PHP Server: Jeedom Pi3
      • Base Path: /
      • AUto-generated Base URL: http://pi3/

Lancement des sessions de débogage

Le lancement des sessions de débogage s’effectue exactement de la même manière que vu précédemment pour les containers docker, se référer au chapitre Démarrer une session de débogage Jeedom.

Sources