Catégories
Open-source Planet-libre Reseau

Installer un serveur TFTP pour vos Cisco

Un rapide billet pour rappeler les étapes nécessaires à la mise en place d’un serveur TFTP sur un système GNU/Linux (Debian Squeeze) afin de sauvegarder les configurations de vos routeurs Cisco.

Installation du serveur TFTPD

On utilise le paquet tftpd qui se trouve dans les dépôts Debian (commande à saisir dans un terminal root ou en utilisant la commande sudo):

apt-get install tftpd

On doit ensuite créer le répertoire ou seront stockés les fichiers des configurations Cisco (/srv/tftp dans mon cas).

mkdir /srv/tftp
chmod -R 777 /srv/tftp
chown -R nobody /srv/tftp

Si vous choisissez un autre répertoire que /srv/tftp, il faut:

  1. éditer le fichier de configuration /etc/inetd.conf et changer le répertoire de la ligne commençant par tftp
  2. Redémarrer le serveur TFTP avec la commande /etc/init.d/open-inetd restart

Création du fichier de configuration vide

TFTP est un protocole de communication de bas niveau. Il ne met pas en place de mécanisme d’authentification. La création du fichier de configuration vide doit donc se faire à partir du serveur (il est possible de changer ce comportement et ainsi de permettre au client, c’est à dire au routeur Cisco, de créer lui même le fichier mais je ne le conseille pas pour des questions de sécurité).

On va donc créer un fichier vide nommé cisco-rtr-01-confg:

touch /srv/tftp/cisco-rtr-01-confg
chmod -R 777 /srv/tftp
chown -R nobody /srv/tftp

Sauvegarde de la configuration depuis le routeur Cisco

On en vient enfin au vif du sujet: c’est à dire la sauvegarde de la configuration (IOS running) de notre Cisco sur le serveur TFTP.

# copy run tftp:
Address or name of remote host []? 192.168.0.100
Destination filename [yourname-confg]? cisco-rtr-01-confg
!!
1292 bytes copied in 0.380 secs (3400 bytes/sec)

Il faut bien sûr remplacer l’adresse 192.168.0.100 par l’adresse IP (ou le nom) de votre machine Debian ou vous avez installés TFTP.

Catégories
Open-source Planet-libre Systeme

Mon desktop 201111

Cela fait maintenant plus d’un mois que je suis passé à Gnome Shell sur mon Laptop Ubuntu personnel. Je peaufine petit à petit la configuration de mon bureau qui commence à me donner satisfaction.

Voici un screenshot de la bête:

 

Ma configuration

Une petite description:

Au niveau du menu avec les raccourcis, rien de très original:

Google Chrome

 

Firefox (comme ça pas de jaloux)

 

Terminator, le terminal

 

Shutter pour les screenshots

 

VLC, pour tout lire / voir

 

Spotify pour la zic

Retour 1 mois après…

Il est intéressant de noter que je commence à trouver mes marques dans ce fameux Gnome Shell. Je ne regrette pas d’avoir choisi Gnome Shell à la place d’Unity. Le temps passé à cet apprentissage pourra facilement être récupéré sur d’autre système GNU/Linux qui passeront un jour ou l’autre sous Gnome 3 (je pense notamment à Debian). L’intégration avec Ubuntu est encore loin d’être parfaite ce qui peut être un vrai problème pour un nouveau venu dans le monde GNU/Linux mais je ne doute pas que des améliorations seront apporté par la version 12.04 LTS d’avril prochain.

Et vous ?

Cela donne quoi ? Sous Gnome Shell, Unity, Gnome 2 ou autres ?

A vous de nous montrer vos écrans
(par exemple en utilisant yFrog puis en partagant l’URL) !

Catégories
Developpement Open-source Planet-libre

Kit du développeur libre sous Windows

Devant le nombre important de commentaires intéressants sur le billet de ma trousse à outils libres sous Windows, il était impensable d’en rester là. Manifestement beaucoup de libristes travaillent (ou sont forcés de travailler) sous un système d’exploitation de Microsoft. Nous allons donc reprendre dans ce billet les logiciels libres (et seulement libre) permettant de développer dans ce milieu hostile. Comme toujours, les commentaires seront là pour partager d’autres pépites !

Les compilateurs / langages

C: Cygwin fait la passerelle entre le monde Windows et GNU/Linux. Ils apportent un certain nombre d’outils et de librairies permettant notamment de compiler vos programmes en C. On peut également citer MinGW, un fork plus léger de Cygwin, offrant un environnement de développement minimal (GCC).

Python: Pas de problème ici, Windows dispose de la dernière version du langage Python. A télécharger ici pour Python 2 et pour Python 3.

Perl: On présente plus le langage Perl. Vous pouvez télécharger la dernière version sous Windows à partir du site officiel. Je vous conseille la version Strawberry Perl.

NodeJS: C’est le framework implémentant, coté serveur, la version 8 du moteur Javascript de Google (j’en parle dans certains de mes billets). On peut télécharger la version de développement qui propose un binaire Windows ici.

Les consoles / terminaux

En tant qu’utilisateur GNU, le plus gros choc quand j’ai dans les mains une machine Windows est la qualité déplorable du terminal par défaut (le fameux cmd.exe). Non seulement c’est une hérésie complète au niveau de l’ergonomie mais en plus c’est le seul logiciel qui n’évolue pas d’une version à l’autre de Windows. Voici donc quelques alternatives obligatoires…

Console2: Avec ce logiciel libre on retrouve enfin une vrai console sous Windows. A vous les copier/coller, les agrandissements de fenêtres, les tabs…

Attention, ce n’est qu’une interface graphique permettant de saisir des commandes. Si vous ne disposez pas d’un client SSH, il vous sera impossible d’accéder avec ce protocole à vos machines sous Windows. Personnellement, pour résoudre ce besoin j’ai installé Plink (la couche SSH de Putty) puis j’ai automatisé le lancement de la commande suivante:

[cc]doskey ssh= »C:\Program Files\PuTTY\plink.exe » $*[/cc]

PuTTY: Pour ceux qui utilisent la console uniquement comme un terminal SSH/Telnet, PuTTY reste un très bon choix. Il est léger, transportable facilement sur une clé USB (il nécessite seulement un exécutable). A noter qu’il existe une extension à PuTTY nommé PuTTY Connection Manager et qui propose la gestion des tabs et autres améliorations (non libre !). Il existe également un fork de PuTTY nommé KiTTY qui semble proposer toutes ces fonctions mais je ne l’ai pas testé.

MobaXterm:  C’est un package tout en un (dans un unique exécutable) intégrant à la fois un serveur X, un terminal et une version intégrée de Cygwin. C’est la solution idéale (bien qu’un peu lourde) si vous avez besoin de travailler sous Windows comme vous le feriez (à peu près) sous GNU/Linux.  A noter qu’il existe un certain nombre de plugins permettant d’adapter votre MobbaXterm à vos besoins (GCC, Perl, Emacs…).

Les éditeurs

Vu le nombre de solutions que l’on peut trouver sur le marché des éditeurs de texte, le choix est plus une affaire de goût que de qualité. Voici donc une petite sélection hétéroclite d’éditeurs libres.

Notepad++: Concurrent direct de PSPad, qui est un freeware non libre, dans la catégorie des éditeurs de texte « grand public » (noter les guillemets). Notepad++ offre tout ce que l’on peut attendre d’un éditeur orienté développement en 2011.

Vim: A l’opposé de Notepadd++ en ce qui concerne l’UE (« user experience »), Gvim, le portage de Vim sous Windows, permettra à nos chers barbus condamnés au bagne en travaillant sous Windows à ne pas tomber dans une déprime complète et irrémédiable. Dans la même mouvance, on peut également utiliser la version Windows d’Emacs, à télécharger ici.

Winmerge: Même si ce logiciel n’est pas un éditeur à part entière, il a largement sa place dans ce kit. Il permet de comparer visuellement deux fichiers et de lancer des actions pour les synchroniser. Un must have qui a le bon goût d’être libre…

Eclipse: Difficile de faire une billet parlant de développement, de logiciel libre et de Windows sans évoquer Eclipe… Certains le touve usine à gaze, d’autres indispensable pour un « gros » développement. La vérité est surement entre les deux.

Les gestionnaires de versions

Je n’aborderai ici que la partie cliente des gestionnaires de versions tant il me semble aberrant  de vouloir héberger un serveur sur une machine Windows… On va les prendre un par un (enfin les plus connus):

CVS (oui oui il y en a encore qui utilise CVS…): TortoiseCVS intègre parfaitement CVS dans gestionnaire de fichier de Windows.

SVN: TortoiseSVN est a SVN ce que TortoiseCVS est à CVS…

Git: Si vous voulez rester dans le même style d’interface pour votre gestionnaire sous GIT, je vous conseille d’utiliser TortoiseGIT. Si le changement ne vous gène pas, il y a GitExtensions qui pour moi est la solution idéale sous Windows.

Mercurial: Je dois avouer que je n’utilise pas Mercurial. J’ai trouvé (mais donc pas testé) le pendant de Tortoise pour HG, j’ai nommé… TortoiseHG (que c’est original).

Conclusion

La liste de logiciels que nous venons d’évoquer n’est bien sûr pas exhaustive et ciblée sur mes besoins. N’hésitez pas à partager votre expérience de « développeur libre sous Windows » (sic) avec nous !

Catégories
Open-source Planet-libre Systeme

Trousse à outils libres sous Windows

Depuis début septembre, j’ai changé de poste. Je bosse maintenant dans un service qui utilise massivement les systèmes d’exploitation Windows. Même si des projets sont en cours pour migrer nos chers développements sous GNU/Linux, c’est plutôt un projet à long terme et je dois donc m’adapter en travaillant une bonne partie de mon temps sous un poste sous Windows XP (ou XP même pas 7even). Afin de survivre dans ce monde hostile, j’ai récupéré et installé sur mon poste quelques logiciels libres me permettant de travailler à peu près correctement.

J’essayerai de faire évoluer cette liste en fonction de mes découvertes et je l’espère des votre (les commentaires sont fait pour cela) !

Capture écran

Shutter fait parti des logiciels que le « monde Windows » regrette de ne pas avoir de son coté. GetGreenShot est une alternative libre sous l’OS de Microsoft qui comble la faiblesse des fonctions par défaut (c’est quand même mieux qu’un « Print Screen » et copier/coller dans Paint :)).

Lien vers le site de téléchargement officiel de GetGreenShot.

Navigateur Web

Chromium est le navigateur open-source maintenu par Google et qui sert de base au bien connu Google Chrome. Le fait d’utiliser Chromium à la fois sous GNU/Linux, Windows et Mac OS me permet de partager tous les plugins, bookmarks et configurations.

Lien vers un site de téléchargement de Chromium.

Console SSH

Pour administrer les serveurs (GNU/Linux ou BSD bien entendu, aller pas me mettre des Windows 2008 serveurs) il est nécessaire de disposer d’une console SSH. Comme cette fonction n’existe pas sous Windows (et vu la qualité du terminal cmd.exe il est préférable que Microsoft s’abstienne d’en développer un), il faut se retourner vers le logiciel libre PuTTY qui offre un terminal SSH et telnet de bonne qualité.

Lien vers le site de téléchargement officiel de PuTTY.

Lecteur multimédia

Pas la peine de vous faire l’affront de vous présenter VLC, le seul, l’unique, le meilleur lecteur multimédia (audio, vidéo) disponible sous Windows. On ne dira jamais assez merci à l’équipe de Videolan pour leur travail sur ce logiciel.

Lien vers le site de téléchargement officiel de VLC.

Editeur de texte

Si il y a bien un logiciel de base de Windows qui n’est pas très évolué, c’est bien l’éditeur de texte par défaut (Notepad). Heureusement pour nous, le monde libre vient à notre rescousse avec NotePad++. Ce logiciel apporte toutes les fonctions que l’on peut attendre d’un éditeur de texte en 2011. Je m’en sers même pour faire des petits développements.

Lien vers le site de téléchargement officiel de Notepad++.

Client CVS, SVN et GIT

Pour continuer dans la programmation, TortoiseSVN (ou CVS) permet d’intégrer directement la gestion en configuration dans le gestionnaire de fichier de Windows. A noter également qu’un portage pour GIT est en cours de développement: TortoiseGIT (je ne l’ai pas encore essayé).

Liens vers les téléchargements de TortoiseSVN et TortoiseGIT.

Conclusion

Si toi aussi tu es obligé de travailler sous Windows XP|7|8 et que tu utilises pour survivre des pépites libres, alors partage ton expérience dans les commentaires ci-dessous !

Catégories
Open-source Planet-libre Systeme

Que faire après l’installation de Ubuntu 11.10 ?

Je viens de finaliser l’installation sur mon PC portable perso (le pro reste sous Debian Stable) de la toute dernière version d’Ubuntu Desktop: Oneiric 11.10. Voici donc les actions que j’ai suivi pour en faire mon système maison.

Le script de post-install

Comme j’aime partager, j’ai mis sur mon GitHub la version du script de post install pour cette version d’Ubuntu. Pour l’installer  et l’executer sur un système fraichement installé, il suffit de  lancer les commandes suivantes:

[cce]

wget https://raw.github.com/nicolargo/ubuntupostinstall/master/ubuntu-11.10-postinstall.sh

chmod a+x ubuntu-11.10-postinstall.sh

sudo ./ubuntu-11.10-postinstall.sh

[/cce]

Il faut être patient car le script prend un certain temps à s’exécuter…

Que va faire ce script ?

  • Installer une liste impressionnante de logiciels que je trouve utile (la liste se trouve ici). Libre à vous de modifier le script pour l’adapter à vos besoins. On peut citer Dropbox, Google Earth, Jupiter (pour les PC portables)…
  • Installer Gnome Shell (Gnome 3) car je n’arrive pas à me faire à Unity (je suis sûrement trop vieux).
  • Installer un thème pour ce même Gnome Shell.
  • Faire quelques configurations systèmes (remettre les icônes d’agrandissement et de réduction des fenêtres, passer la barre de notification dans celle du haut, ajout d’alias dans le .bashrc…).

A noter que pour finaliser l’installation de Dopbox, il faut lancer l’application après la fin du script.

Configuration à la mimine

Il reste maintenant à mener des actions qui ne sont pas automatisable par le script de post install.

Update: les 2 premières étapes sont maintenant automatisées par le script (merci à Makidoko).

Etape 1 – On passe sous Gnome Shell

Après un bon petit reboot, vous allez normalement arriver sur le gestionnaire LightDM ou il faudra sélectionner GNOME (Gnome Shell) comme interface utilisateur en lieu et place d’Ubuntu (UNITY).

Devant vos yeux ébahis, vous devriez avoir l’interface Gnome Shell par défaut.

Etape 2 – On change de (Gnome) thème

Pour sélectionner un thème plus agréable à ces mêmes yeux, il suffit de lancer l’utilitaire Gnome Tweak Tool:

  • d’appuyer sur la touche SUPER (Windows) de votre clavier
  • entrer « gnome tweak tool » dans la zone de recherche
  • cliquer sur l’icône Advanced Settings

Puis quand le logiciel est lancé, il faut se rendre dans le menu Shell Extensions et activer le plugin User Themes Extension qui va prendre en compte les thèmes qui se trouve dans le répertoire $HOME/.themes.

Il faut ensuite relancer Gnome Tweak Tool puis aller dans le menu Theme et sélectionner Faience. En bonus, j’utilise les icônes Faenza-Dark.

Etape 3 – On configure sa barre de lancement

Ici c’est affaire de goût, personnellement, j’ai les applications suivantes:

  • Chromium, the navigateur Web (même si il m’arrive d’utiliser Firefox en //)
  • Terminator, parce que les lignes de commandes il n’y a rien de mieux
  • VLC, c’est français, léger, rapide, complet… Le top du multimédia
  • Shutter, pour faire de beaux screenshots
  • Spotify car ma musique est virtuelle

Voila un petit aperçu final:

Et de votre coté, vous avez switchés vers la 11.10 ? Cela donne quoi ?

Catégories
Open-source Planet-libre Web

Mon desktop 201110 (avec du Gnome Shell dedans)

En ce jour très binaire (59) et comme chaque mois, je vous montre un des mes desktops (spéciale dédicasse à Scurz qui adore ce genre de billet).

Dans quelques jours la version 11.10 d’Ubuntu va sortir. Contrairement à la version précédant, l’installation de Gnome-Shell en lieu et place d’Unity sera simplifié. C’est donc dans cette configuration que j’ai donc migré ce weekend mon PC portable personnel (le pro reste sous Debian Squeeze).

Installation de Gnome Shell

C’est plus que simple sous Ubuntu 11.10:

[cce lang= »bash »]

sudo add-apt-repository ppa:webupd8team/gnome3

sudo apt-get update

sudo apt-get install gnome-shell gnome-tweak-tool gnome-documents gnome-shell-extensions-common gnome-shell-extensions-system-monitor gnome-shell-extensions-user-theme gnome-shell-extensions-xrandr-indicator gnome-shell-extensions-apps-menu gnome-shell-extensions-alternative-status-menu gnome-shell-extensions-drive-menu

[/cce]

Puis ensuite de redémarrer votre machine et de sélectionner Gnome dans la session de démarrage:

Si vous êtes utilisateur du service Dropbox, il y a actuellement une incompatibilité entre l’interface graphique du daemon Dropbox et Gnome-Shell. Il faut donc suivre une procédure décrite dans le billet suivant.

Configuration de Gnome Shell

Gnome a choisi d’uniformiser le thème par défaut de Gnome Shell sur l’ensemble des distribution. Bien que ce dernier soit clair et plutôt agréable, j’ai préféré installer un nouveau thème par défaut réalisé par le créateur des icônes Faenza. Ce thème se nomme Faience.

Pour l’installer j’ai suivi la procédure suivante:

[cce lang= »bash »]

cd ~

tar zcvf theme-backup.tgz /usr/share/gnome-shell/theme

wget http://www.deviantart.com/download/255097456/gnome_shell___faience_by_tiheum-d47vmgg.zip

unzip gnome_shell___faience_by_tiheum-d47vmgg.zip

sudo cp Faience/gnome-shell/* /usr/share/gnome-shell/theme

rm -rf ~/gnome_shell___faience_by_tiheum-d47vmgg.zip ~/Faience

[/cce]

Note: il est également possible pour certains autres thèmes de les installer dans le répertoire ~/.themes et d’utiliser Gnome Tweak Tools pour switcher de l’un à l’autre (mais cela ne marche pas avec cette version du thème Faience).

Pour prendre en compte le thème il faut redémarrer votre session ou faire la combinaison de touche suivante: ALT + F2 puis r.

Voilà ce que cela donne:

J’ai utilisé un fond d’écran plutôt sombre trouvé dans cette série.

Utilisation de Gnome Shell

Refroidi par Unity, je trouve que l’utilisation de Gnome Shell pour un Gnome 2 addict est plutôt intuitive. Il faut prendre le temps de lire la liste des touches raccourcies que l’on peut trouver sur cette page et la transition se fait alors facilement.

A vous de jouer !

Et vous ? Cela donne quoi ?

A vous de nous montrer vos écrans
(par exemple en utilisant yFrog puis en partagant l’URL) !

Catégories
Hardware Systeme

Steve Jobs 1955-2011


Le discours de Steve Jobs à Stanford en VOSTFR

Catégories
Open-source Planet-libre Systeme

Ajouter un utilisateur à un groupe sous GNU/Linux

Petit pense-bête à usage intern(et): gérer les utilisateurs dans ses groupes sous GNU/Linux et en ligne de commande.

Modification du groupe primaire d’un utilisateur

Pour changer le groupe primaire de l’utilisateur nicolargo à admin, il suffit d’utiliser la commande usermod:

usermod -g admin nicolargo

Ajout d’un groupe secondaire à un utilisateur existant

Pour ajouter un groupe secondaire networkadmin  un utilisateur existant nicolargo, c’est encore la commande usermod qu’il faut utiliser:

usermod -a -G networkadmin nicolargo

Ajout d’un nouvel utilisateur à un groupe primaire

Pour ajouter le nouvel utilisateur ritchy et lui configurer un comme groupe primaire admin, il suffit d’utiliser la commande useradd:

useradd -g admin ritchy

Ajout d’un nouvel utilisateur à un groupe secondaire

Pour ajouter le nouvel utilisateur ritchy et lui configurer un comme groupe secondaire networkadmin, il suffit d’utiliser la commande useradd:

useradd -G networkadmin ritchy

A noter qu’il est possible d’utiliser l’option -G avec plusieurs groupes. Exemples pour ajouter ritchy au groupe secondaire networkadmin et systemadmin:

useradd -G networkadmin,systemadmin ritchy

Vérifier les groupes associés à un utilisateur

Rien de plus simple avec la commande groups:

# groups ritchy
ritchy: networkadmin systemadmin
Catégories
Developpement Open-source Planet-libre Reseau Systeme Web

VnStat.js, un node pour VnStat

Mes derniers billets traitaient de VnStat (le logiciel pour surveiller les débits de vos interfaces Ethernet) et de Node.js (le framework permettant de créer facilement des applications réseaux coté serveur). C’est donc dans ma logique toute cartésienne, que j’ai développé un javascript permettant de disposer d’une interface Web pour consulter ces statistiques de débits sans avoir à installer un serveur Web et son plugin PHP (comme c’est le cas avec le VnStat PHP frontend).

Ce script, disponible sous licence GPL v3, s’appelle VnStat.js est disponible dans mon GitHub à l’adresse suivante:


https://github.com/nicolargo/vnstat.js

Installation

Pour fonctionner correctement, VnStat.js nécessite:

  • une installation de VnStat fonctionnelle. Je vous conseille la lecture de ce billet pour effectuer une installation « from-scratch » sur une machine tournant sous Debian / Ubuntu.
  • que le framework Node.js soit installé sur cette même machine. Le script a été validé avec la dernière version stable de Node.js (0.4.12).

On commence par récupérer la dernière version de VnStat.js depuis le dépôt Git:

[cce lag= »bash »]

cd ~

git clone git://github.com/nicolargo/vnstat.js.git

cd vnstat.js

[/cce]

Pour les personnes utilisant NPM (le package manager de Node.js), vous pouvez l’utiliser pour installer VnStat.js. Suivre les instructions de cette page.

Lancement de VnStat.js

Pour lancer le noeud VnStat.js, il suffit de saisir les commandes suivantes:

[cce lag= »bash »]

cd ~/vnstat.js

node ./vnstat.js

[/cce]

Le « node » va se mettre en écoute sur le port TCP 1337 de votre serveur (il faut donc ajouter une règle pour autoriser les requêtes entrantes vers ce port si vous avez un firewall).

A l’ouverture de l’URL http://adressedevotremachine:1337/ dans un navigateur compatible HTML5, la page principale suivante va s’afficher:

Elle affiche le résumé des statistiques de VnStat ainsi que le top 10 des journées. Le menu du haut permet de naviguer vers des statistiques plus ciblés.

Par heures (avec à la fois la vue graphique et textuelle):

Et ainsi de suite pour les jours, semaines (à noter qu’il n’y a pas de graphe spécifique par semaine généré par vnstati) et enfin par mois.

Configuration de VnStat.js

Le design de VnStat.js peut bien entendu être adapté à vos besoins en éditant le fichier css/style.css (CSS3). Si vous avez besoin de changer le port TCP d’écoute du node, il y a une variable pour cela dans le fichier lib/server.js.

C’est mon premier développement avec le framework Node.js, il y a sûrement des améliorations à faire mais la structure reste assez didacticiel pour servir de base pour d’autre développement du même type.

Lancement automatique de VnStat.js au démarrage de votre machine

 Comme vous avez pu le remarquer, le node VnStat.js est lancé à la main dans ce billet. Si vous souhaitez mettre en production ce script et le lancer automatiquement au démarrage de votre machine, je vous conseille la lecture du billet de Vincent sur son blog qui regorge d’information sur ce superbe framework qu’est Node.js.

Catégories
Developpement Open-source Planet-libre Web

Une introduction à node.js

Node.js est un framework implémentant, coté serveur, la version 8 du moteur Javascript de Google (pour une présentation rapide, je vous conseille de parcourir ces quelques slides).

L’objectif de ce billet est d’installer Node.js sur votre machine GNU/Linux et d’exécuter votre premier programme (hello.js).

Installation de Node.js depuis les sources

Il n’existe pas, à l’heure à laquelle je rédige ce billet, de « package » officiel de Node.js pour Debian/Ubuntu (voir le chapitre suivant pour une installation depuis un PPA). L’installation est cependant assez simple. Pour installer la dernière version (stable) depuis le dépôt officiel GIT, il suffit de saisir les commandes suivantes:

mkdir ~/src
cd ~/src
git clone https://github.com/joyent/node.git
cd ~/src/node
git checkout v0.8.0
sudo mkdir /opt/node
./configure --prefix=/opt/node
make
sudo make install
echo 'export PATH=$PATH:/opt/node/bin' >> ~/.profile
echo 'export NODE_PATH=/opt/node:/opt/node/lib/node_modules' >> ~/.profile
source ~/.profile

L’installation va se faire dans le répertoire /opt/node.

Pour vérifier que Node.js est bien installé sur votre machine:

# node -v
v0.8.0

Les modules avec NPM

Pour étendre les fonctions de bases de Node.js, il faut utiliser l’utilitaire NPM (Node Package Manager). Grâce à lui il est possible d’ajouter des packages à Node.js.

Pour installer Node.js depuis les sources (voir le chapitre suivant pour une installation depuis un PPA):

curl http://npmjs.org/install.sh | sudo sh -c 'export PATH=$PATH:/opt/node/bin ; export NODE_PATH=/opt/node:/opt/node/lib/node_modules ; sh'

Je vous laisse ensuite regarder la documentation puis la liste des packages disponibles.

Installation depuis un PPA

Si vous êtes sous Ubuntu, il existe un PPA maintenant les dernières versions de Nodejs et de NPM. Pour installer le PPA sur votre système:

sudo add-apt-repository ppa:chris-lea/node.js

Puis l’installation de Nodejs et NPM:

sudo apt-get update && sudo apt-get install nodejs npm

Un premier exemple, ou le fameux « Hello world ! »

On commence par éditer un fichier ‘hello.js‘ contenant le code suivant:

//
// A JavaScript based on Node.js
//
// Nicolas Hennion (aka) Nicolargo
//
// GPL v3.0
//

var http = require('http');
var url = require('url');
var spawn = require ('child_process').spawn;

//**********
// Variables
//**********

var listenport = 1337;

//**********
// Functions
//**********

// Chomp function (delete the \n)
String.prototype.chomp = function () {
return this.replace(/(\n|\r)+$/, '');
};

// HTTP request
function onRequest(req, res) {
console.log("New request: "+req.url);
res.writeHead(200, {'Content-Type': 'text/plain'});
res.write('Hello World');
res.end();
};

//*************
// Main program
//*************

// Create the HTTP server
http.createServer(onRequest).listen(listenport);

// Get the hostname (FQDN)
var listenaddress = spawn('hostname', ['-f']);
listenaddress.stdout.on('data', function (data) {
var fqdn = new String(data);
console.log('Server running listenning http://'+fqdn.chomp()+':'+listenport+'/');
});

Puis on lance le noeud (node) avec la commande:

# node ./hello.js
Server running listenning http://VotreMachine:1337/

Il ne reste plus (après avoir autorisé les requêtes vers le port TCP 1337 si vous avez un Firewall sur votre machine de test) qu’à pointer une navigateu Web vers l’URL donnée par la commande pour voir affiché le résultat:

Détail du code

On commence par initialiser les fonctions de Node.js dont on a besoin (voir la liste dans la documentation officielle). Pour notre exemple, nous avons besoin de générer un serveur HTTP (http) et de lancer une commande système (spawn) récupérant le nom FQDN de la machine.

[cc lang= »javascript »]

var http = require(‘http’);

var spawn = require (‘child_process’).spawn;

[/cc]

Après la définition d’une variable globale (contenant le numéro TCP du port d’écoute du serveur) ainsi que d’une fonction enlevant le caractère de retour à la ligne du chaine (chomp), on passe au vif du sujet en générant un serveur HTTP:

[cc lang= »javascript »]

// Create the HTTP server

http.createServer(function (req, res) {

res.writeHead(200, {‘Content-Type’: ‘text/plain’});

res.end(‘Hello World\n’);

}).listen(listenport);

[/cc]

Cette commande est « forké » (elle génère donc un daemon HTTP écoutant sur le port ‘listenport’ et renvoyant le message texte ‘Hello World’). Enfin on affiche dans la console l’URL du serveur:

[cc lang= »javascript »]

// Get the hostname (FQDN)

var listenaddress = spawn(‘hostname’, [‘-f’]);

listenaddress.stdout.on(‘data’, function (data) {

var fqdn = new String(data);

console.log(‘Server running listenning http://’+fqdn.chomp()+’:’+listenport+’/’);

});

[/cc]

Aller plus loin

Bien évidement, ce billet n’est qu’une simple introduction à ce framework (d’ou le titre :)). Le code donnée en exemple est sûrement « optimisable » mais à un objectif pédagogique.  Je reviendrai rapidement sur ce sujet en proposant des développement basée sur Node.js pour la supervision de nos belles machines. Stay tuned

Sources ayant inspirées ce billet: