Découvrez les bases du fonctionnement de scapture.com
Recevant de multiples demandes par mail, j'ai décidé d'expliquer ici le fonctionnement de scapture.com. Dans ce premier article, je n'explique que les toutes premières étapes.
En premier lieu, situons le contexte. Le serveur de scapture.com est un VDS1 loué chez web1. Ce type d'offre équivaut à peu près, en terme de puissance CPU, à un PC doté d'un processeur celeron à 300 Mhz. Vous comprenez sûrement mieux pourquoi les captures mettent au moins une minute à s'afficher. Le système d'exploitation est une Debian Linux Sarge, une très bonne distribution d'après moi.
Pour préserver les ressources de ce serveur, le site n'est pas hébergé sur celui-ci, mais sur un compte mutualisé, où les captures sont uploadées par un script PHP.
Sur le serveur, le logiciel clef qui me permet de faire fonctionner scapture.com est Xvfb ou X virtual frame buffer. Le frame buffer étant la partie de mémoire où sont stoquées les données d'affichage, on devine facilement qu'il s'agit d'un frame buffer virtuel : exactement ce qu'il nous faut sur un serveur sans carte graphique, ni écran.
Ce logiciel fait partie des logiciels X window, pour l'installer sur debian :
# apt-get install Xvfb
Sous d'autres distributions, utilisez le mode d'installation prévu (par exemple urpmi sous Mandrake).
Pour le lancer, on peut utiliser, par exemple, cette commande :
$ Xvfb :1 -screen 0 800x600x24 -ac &
Ceci lancera un serveur X virtuel numéroté 1, screen 0, en 800x600 et 24 bits. Pour plus d'informations sur l'utilisation de Xvfb, reportez-vous au man (tapez "man Xvfb"). L'option -ac limite le contrôle d'accès. Le caractère "&" permet de lancer la commande en arrière-plan.
Pour exécuter un logiciel sur ce serveur virtuel, il faut savoir que tous les logiciels utilisant X Window doivent prévoir sur quel serveur et quel screen ils s'afficheront. Certains n'utilisent que les variables d'environnement, d'autre peuvent prendre un paramètre en ligne de commande. C'est le cas de xclock (la fameuse petite horloge) qui peut être lancé sur notre serveur virtuel comme ceci :
$ xclock -display localhost:1.0 &
Traduction : exécuter xclock sur l'affichage local (localhost), sur le serveur numéro 1 et le screen 0, le tout en arrière-plan.
Maintenant, nous souhaitons bien sûr voir ce qui s'est réellement affiché sur notre serveur, pour cela on va utiliser un logiciel, appelé xwd, pour faire une capture d'écran. Pour lui indiquer où faire la capture, on va reprendre les paramètres utilisés avec xclock :
$ xwd -display localhost:1.0 -root -out test.xwd
Il y a deux paramètres qui s'ajoutent à ce que nous avons déjà vu. Premierement, l'option -root signifie que la capture doit se faire sur l'écran entier (donc, ici, elle fera 800x600 pixels). Ensuite, le paramètre "-out test.xwd" indique tout simplement que la capture d'écran sera stockée dans un fichier nommé test.xwd (trouvable dans le répertoire courant). Pour afficher le contenu de ce fichier, on utilise la commande xwud :
$ xwud -in test.xwd
Vous devriez voir apparaître une fenêtre contenant une jolie image avec l'horloge xclock.
On peut améliorer cette première étape en utilisant des outils plus avancés et en définissant des variables d'environnements. Ceci fera peut-être l'objet d'un prochain article. Mais, avec un peu d'imagination, vous pouvez déjà faire des choses intéressantes.