Outils

De Documentation LCS
Aller à : Navigation, rechercher

Sommaire

Mise place d'un environnement de développement/débuggage PHP/MySQL associé à un LCS (VM ou LCS de test)

Introduction

L'utilisation d'un IDE facilite le développement d'applications (coloration syntaxique, auto-complétion de code, etc .. ) et dans le cas de Netbeans/xdebug (d'autres aussi certainement) cela permet de faire du débuggage ( mise en place de points d'arrêts, visualisation de la valeur des variables, exécution du script " pas à pas",etc ... ) ainsi que du profiling (mesure de performance des scripts ).

Davantage d'informations sur Netbeans PHP : http://www.netbeans.org/features/php/index.html

Comme on utilisera un LCS distant, il n'est donc pas utile d'avoir un serveur web installé sur votre machine (machine hôte)

Ce document présente :

  • la mise en oeuvre de l'IDE Netbeans sur une Debian ou un Mac OS
  • l'installation et la configuration de xdebug sur un LCS "distant"


Installation de Netbeans PHP

Téléchargement ici : http://www.netbeans.org/downloads/index.html L'installation est classique et ne pose pas de problème.


Configuration de la machine hôte

Pour exécuter les scripts sur le LCS (ici 192.168.53.5), il est nécessaire de "monter" sur la machine hôte (celle où il y a Netbeans d'installé), le répertoire du LCS hébergeant les scripts. On utilise pour ça sshfs.

Sur un hôte Debian

(pour Ubuntu, ça ne doit pas être très différent)

En root :

  • Installer sshfs. Cela installera en dépendance le module fuse
debian:~#apt-get update
debian:~#apt-get install sshfs
  • Ajouter fuse dans les modules à charger au démarrage
debian:~#echo fuse >> /etc/modules
  • Pour le charger pour la session en cours
debian:~#modprobe fuse
  • Ajoutez vous au groupe fuse
debian:/# adduser misterphi fuse

En utilisateur non root :

  • Créer un répertoire local dans lequel on montera le répertoire "distant"
misterphi@debian:~$ mkdir dir_lcs
  • Monter le répertoire distant (192.168.53.5 = IP du Lcs)
misterphi@debian:~$ sshfs root@192.168.53.5:/usr/share/lcs/Plugins/ dir_lcs/
root@192.168.53.5's password:
  • Vérifier le "montage"
misterphi@debian:~$ ls dir_lcs 
Claroline  Logs         plugins_commun.php           plugins_dispo.php         plugins_install.php    plugins_refecran.php
Images     phpinfo.php  plugins_desinstallation.php  plugins_installation.php  plugins_maj.php        Uploadtmp
  • Pour info, on démonte le répertoire par :
misterphi@debian:~$fusermount -u dir_lcs
Sur un hôte Mac OS (Leopard ou Snow-leopard)

Dans un terminal :

  • Créer un répertoire local
macbook-de-philippe-leclerc:~ misterphi$ mkdir dir_lcs
  • Monter le répertoire "distant"(192.168.53.5 = IP du Lcs)
macbook-de-philippe-leclerc:~ misterphi$ ./mount_sshfs root@192.168.53.5:/usr/share/lcs/Plugins dir_lcs/
  • Vérifier le "montage"
macbook-de-philippe-leclerc:~ misterphi$ ls dir_lcs/
Agendas			Uploadtmp			plugins_commun.php		plugins_install.php		 
Claroline			index.php			plugins_desinstall.php		plugins_installation.php	
Images				phpinfo.php			plugins_desinstallation.php	plugins_installes.php
Logs				plugins_activation.php		plugins_dispo.php		plugins_maj.php
  • Pour info, on démonte avec umount
macbook-de-philippe-leclerc:~ misterphi$ umount dir_lcs
Sur un hôte Mac OS (Lion)
  • MacFuse ne fonctionne plus sous Lion, pire même, il ne se désinstalle pas ! Si vous envisagez de passer de Snow-léopard à Lion, désinstallez le donc avant.
  • Pour le désinstaller sous Snow-léopard ->Préférences système -> MacFuse -> remove
  • Pour le désinstaller sous Lion, il faut préalablement, dans le fichier /Library/Filesystems/fusefs.fs/Support/uninstall-macfuse-core.sh, remplacer OS_RELEASE=`/usr/bin/uname -r` par OS_RELEASE="10.0.0" puis ->Préférences système -> MacFuse -> remove
  • Installer Fuse4x. On trouve un dmg ici
  • Installer Fuse4X_SSHFS. On trouve un sshfs-****.zip ici. Le dézipper à la racine, donc il faut être root (sudo su)
  • Pour monter, par exemple, le partage Plugins du LCS distant dans le repertoire dir_lcs du mac
sshfs root@IP_LCS:/usr/share/lcs/Plugins dir_lcs -odefer_permissions
  • Pour démonter le partage
umount dir_lcs

Installation de xdebug sur le LCS

  • Méthode 1 :
  • Méthode PEAR et PECL :
sudo apt-get -y install php-pear php5-dev build-essential
sudo pecl install xdebug
  • Créer le fichier de configuration apache : /etc/php5/apache2/conf.d/xdebug.ini


Collez y le contenu ci-dessous (après avoir supprimé une des 2 premières lignes, et modifié la valeur de xdebug.remote_host)

zend_extension=/usr/lib/php5/20060613+lfs/xdebug.so (pour un Lenny)
zend_extension=/usr/lib/php5/20090626+lfs/xdebug.so (pour un Squeeze)

[debug]
; Remote settings
xdebug.remote_autostart=off
xdebug.remote_enable=on
xdebug.remote_handler=dbgp
xdebug.remote_mode=req
xdebug.remote_host=############### PENSEZ A METTRE L'IP DE LA MACHINE HOTE (même LAN que le LCS)#####
xdebug.remote_port=9000

; General
xdebug.auto_trace=off
xdebug.collect_includes=on
xdebug.collect_params=on
xdebug.collect_return=on
xdebug.default_enable=on
xdebug.extended_info=1
xdebug.manual_url=http://www.php.net
xdebug.show_local_vars=1
xdebug.show_mem_delta=1
xdebug.max_nesting_level=100
;xdebug.idekey=

; Trace options
xdebug.trace_format=1
xdebug.trace_output_dir=/usr/share/lcs/Plugins/debug
xdebug.trace_options=1
xdebug.trace_output_name=trace 

; Profiling
xdebug.profiler_append=1
xdebug.profiler_enable=0
xdebug.profiler_enable_trigger=1
xdebug.profiler_output_dir=/usr/share/lcs/Plugins/debug
xdebug.profiler_output_name=cachegrind.out


Paramètres importants :

xdebug.remote_enable : marche/arrêt du debugger
xdebug.remote_host : ip de votre machine (debian ou MacBook) sur le LAN du LCS (192.168.53.1 pour cet exemple)

Pour faire du profiling, mettre à ON les paramètres xdebug.auto_trace et xdebug.profiler_enable. ATTENTION, les fichiers trace et cachegrind.out qui sont générés dans le répertoire indiqué dans xdebug.trace_output_dir et xdebug.profiler_output_dir grossissent TRES vite et atteignent rapidement plusieurs Go !! Donc ne pas oublier de les remettre à OFF !!

Pour + d'infos sur les paramètres xdebug : http://www.xdebug.org/docs/all_settings

  • Redémarrer Apache2
Lcsphil:~#/etc/init.d/apache2 restart
  • Tester l'installation de xdebug
 php -i | grep 'xdebug support'

doit répondre

 xdebug support => enabled

C'est terminé sur le LCS

Exemple d'utilisation de Netbeans

Création d'un projet à partir du plugin Cdt installé sur le LCS "distant"

  • Lancer Netbeans
  • File -> New project

Newprojet.png


  • Indiquer le chemin du répertoire contenant les fichiers

Newprojet2.png


  • Indiquer l'URL du projet SUR LE LCS

Newprojet3.png


  • Cliquer sur Finish pour créer le "projet", on obtient :

Newprojet4.png


Dès lors, vous travaillez directement avec les fichiers qui sont sur le LCS "distant"

Pour les tests qui suivent, connectez vous d'abord en Admin sur le LCS


Test du fonctionnement de l'ensemble Netbeans/xdebug/LCS

  • Dans Netbeans, cliquer sur Newprojet5.png
  • Dans la fenêtre suivante cocher Do not show....

Newprojet6.png


  • En cliquant sur Debug, ça doit ouvrir la page d'administration de Cdt dans le navigateur


  • En revenant dans Netbeans, on doit avoir en bas à droite Newprojet7.png


Test de débuggage

On va placer un point d'arrêt sur le script index.php et visualiser la valeur de variables

  • Cliquer sur le n° de la ligne 40 pour y placer un point d'arrêt.
  • Sélectionner une à une les variables $user["nom"],$user["fullname"],$login et avec un clic droit "New watch". D'où la nécessité d'être connecté sur le LCS, pour que ces variables soient définies.
  • Vous devez obtenir :

Newprojet8.png


  • Recliquer sur Newprojet5.png . Cette fois, le chargement de la page dans le navigateur doit être interrompu (page vide)


  • En revenant dans Netbeans, on remarque que le script est arrêté en ligne 40, et la valeur des variables est affichée

Newprojet9.png


  • CE QUI EST ENORME :
  • Avec la souris, survolez une variable simple dans le script ($login par exemple) et vous voyez sa valeur dans une "bulle".
  • Pour les variables plus complexes (indexées par exemple) ou les fonctions , il faut les surligner et placer le curseur dessus. Essayez avec la fonction phpversion() à la ligne 23.
  • Clic droit sur une variable, Find Usages localise l'utilisation la variable dans tous les scripts du projet
  • Dans le menu Versionning ->Local history, on peut voir toutes les versions enregistrées du fichier, ainsi que les diffs. Et bien sûr revenir à une version antérieure !

Newprojet10.png


  • Lorsque le script est arrêté, vous pouvez grâce aux boutons suivants faire du "point d'arrêt à point d'arrêt", du "pas à pas", etc ...

Newprojet11.png

et bien d'autres choses que je vous laisse découvrir.

Profiling

Pour faire du profiling, il faut :

  • Installer Kcachegrind et graphviz sur votre machine. Pour Debian, les paquets existent et s'intallent avec un apt-get install. Pour Mac, il faut installer Kcachegrind avec fink car il fait partie de KDE ( pas encore testé, mais j'en connais un qu'il l'a fait).
  • Mettre à ON les paramètres xdebug.auto_trace et xdebug.profiler_enable, redemarrer l'indien
  • Ouvrir avec Kcachegrind le fichier /usr/share/lcs/Plugins/debug/cachegrind.out ( le chemin est spécifié dans le php.ini (voir plus haut))

Profilage.png

Conclusion

Pour les utilisations postérieures il suffira de

  • Démarrer le LCS
  • Monter le répertoire distant
  • Lancer Netbeans
  • Ouvrir le projet
et bosser ....

Doc à compléter. N'hésitez pas

Configuration réseau d'un LCS virtuel

Introduction

Le point "délicat" pour installer un LCS virtuel est la configuration réseau du LCS. Comme c'est un serveur, on ne peut pas le mettre en DHCP, il faut donc paramètrer l'IP et la passerelle en fonction de ses besoins.

Les logiciels de virtualisation (Vmware, Virtual box,...) offre 2 "réglages réseau" utilisables avec un LCS virtuel : PONT (Bridge) et NAT. Le 3ème HOST-ONLY ne présente pas d'intérêt puisque dans ce mode, la machine virtuelle n'a pas accès à Internet.

Mode PONT

  • Le LCS virtuel est vu comme une machine physique du LAN.
  • Le LCS virtuel a accès à Internet
  • Toutes les machines du LAN ont accès au LCS virtuel par son adresse IP

Mais si on connecte la machine hôte (celle où est installé le logiciel de virtualisation) sur un autre réseau, ça ne fonctionne PLUS.

Ce mode est donc préconisé pour une utilisation sur une machine type "ordinateur de bureau"

Configuration réseau du LCS virtuel : il faut lui attribuer une IP compatible avec le LAN, et donner l'IP du routeur LAN comme passerelle.

Exemple en mode PONT :

LAN VM PONT.png

Mode NAT

  • Le LCS n'est pas visible depuis le LAN
  • SEULE la machine hôte a accès au LCS virtuel (ce n'est pas un problème pour faire des tests ou du développement)
  • Le LCS virtuel a accès à Internet via la machine hôte

Mais si on connecte la machine hôte (celle où est installé le logiciel de virtualisation) sur un autre réseau, ça fonctionne ENCORE .

Ce mode est donc préconisé pour une utilisation sur une machine type "ordinateur portable"

La difficulté pour ce mode est de trouver l'IP du routeur virtuel, pour configurer la passerelle du LCS virtuel.

Pour un vmware installé sur un Mac os, on la trouve dans le fichier Library/Application\ Support/VMware\ Fusion/vmnet8/nat.conf

Pour un vmware installé sur une Debian, on la trouve dans /etc/vmware/vmnet8/nat/nat.conf

# Linux NAT configuration file
[host]
# NAT gateway address
ip = 192.168.53.2

Pour trouver l'IP de vmnet8, il suffit de faire un ifconfig

Configuration réseau du LCS virtuel : Il faut lui attribuer une IP compatible avec vmnet8, et donner l'IP du routeur virtuel NAT comme passerelle.

Exemple en mode NAT :

LAN VM NAT.png

Installation d'un LCS virtuel

  1. Installer un logiciel de virtualisation (VMwareserver, Virtual Box, ..)
  2. Télécharger une iso de type debian-*****-i386-netinst.iso ici http://www.debian.org/distrib/netinst
  3. Créer une nouvelle machine virtuelle type "Autre noyau Linux 2.6.x"
  4. Dans les réglages de la VM, affecter le fichier iso comme lecteur CD/DVD
  5. Choisir le mode réseau PONT ou NAT selon vos besoins
  6. Démarrer la nouvelle machine virtuelle. A l'invite Debian, n'appuyez sur aucune touche, passez à l'étape ci-dessous.
  7. Suivre la procédure décrite ici http://lcs.crdp.ac-caen.fr/dilcs/ . (Dans le formulaire de saisie, adapter les adresses ip à votre réseau. Avec l'exemple décrit dans cette page, on remplacera tous les 10.0.0.x par 192.168.53.x pour le mode NAT, ou 192.168.2.x pour le mode PONT)

Une fois la procédure lancée, allez boire un coup au café du coin. A votre retour, vous n'aurez plus qu'à redémarrer la VM pour avoir un LCS tout neuf.

Si par malchance vous obtenez l'écran suivant, c'est que la configuration réseau de votre LCS virtuel n'est pas bonne. Relisez attentivement les paragraphes précédents !!!

PbDi.png
Outils personnels
Espaces de noms

Variantes
Actions
Navigation
Boîte à outils