Playing With
Pixels
and Building Stuff.

-

Débuter avec node.js côté serveur, pour les nuls

Le 02/03/2015

Débuter avec node.js côté serveur, pour les nuls

Node.js ça a l'air super, on m'a bien montré plein de trucs qui bouleversent le flux de travail habituel du web designer :

  • compilation de fichiers sass
  • compilation de fichiers coffeescript
  • récupération des librairies Javascript sans aller les chercher manuellement
  • séparation claire du code de développement et de production (minification automatique, etc)
  • et bien d'autres choses

Et puis moi le Javascript, j'aime beaucoup, alors imaginer de passer en Javascript côté serveur, déjà l'idée semble plus que séduisante !  

Problème : par où commencer ?

Ben oui, tout ça est un peu déroutant, c'est comme un couteau suisse hyper complet, encore faut-il savoir ce qu'on peut en faire pour trouver quoi en faire... J'ai installé l'exécutable node.js en local sur ma machine depuis un bail, mais je n'en ai rien fait faute de savoir par quel bout le prendre.

Alors voilà, on vient de m'engager pour un projet de jeu multi-joueur, et visiblement la meilleure solution c'est socket.io pour échanger des données en temps réel, et ça tourne avec node.js : c'est parti avec node.js sur un serveur web !

Ca peut paraître bizarre de commencer côté serveur, et pourtant j'ai déjà compris plein de trucs qui m'échappaient en local !  

D'abord, il faut un serveur web compatible

C'est rarement explicité dans les ressources dédiées à node.js (en mode débutant), mais tous les hébergements web ne sont pas compatibles avec node.js, loin de là.

Si vous lisez ceci, il y a des chances pour que vous disposiez d'un hébergement web quelque part, probablement en mutualisé... et bien node.js ne pourra sans doute pas tourner dessus.

Ce qu'il vous faut c'est au choix :

  • un serveur web dédié (et ça coûte cher)
  • un serveur virtuel, et ça c'est top pour débuter !

Pour info, un serveur virtuel c'est un serveur web partagé (comme un hébergement mutualisé), la différence c'est que :

  • on vous le livre vierge (avec un linux installé quand-même)
  • vous avez un accès "root" pour le paramétrer en profondeur
  • vous pouvez installer ce que vous voulez dessus : apache, node.js, etc

En ce moment OVH propose un VPS (Virtual Private Server) pour 2€/mois, et c'est amplement suffisant pour démarrer (c'est ce que j'ai pour l'instant).

Mes sites restent hébergés sur mon mutualisé : à l'heure actuelle j'ai plus confiance dans une gestion du serveur par des professionnels, je ne doute pas que j'arriverai à faire planter mon serveur virtuel régulièrement.

Au moment où vous réservez votre VPS OVH vous demande quel variante de Linux vous voulez... d'après ce que j'ai vu la plus équilibrée pour démarrer c'est Debian.

On trouve aussi plein de tutos sur node.js et Debian Wheezy, ce qui est un plus.  

Se connecter au serveur web pour l'administrer

OVH vous donne très vite un accès à leur interface de gestion en ligne (via votre compte client), qui ne va pas beaucoup vous aider... c'est pas comme du mutualisé, où vous créez vos compte FTP, etc.

Là vous êtes sur du VPS, donc à part Linux il n'y a PAS la base habituelle pour un serveur web Linux :

  • Apache qui est "l'application" serveur web qui tourne en continu
  • un module qui s'occupe de servir vos pages web aux visiteurs via le protocole HTTP
  • un module qui gère l'accès en FTP
  • un module de base de données
  • etc

Là vous avez une machine qui tourne sous Linux, et à ce stade elle ne fait rien de ce qui est listé ci-dessus :
pas d'accès HTTP, pas d'accès FTP...

Par contre (comme un Raspberry Pi) on peut s'y connecter en SSH, qui sera par la suite votre interface privilégiée pour gérer tout ça.

Comme pour un FTP il va vous falloir un logiciel spécialisé pour vous connecter en SSH. Le plus courant semble être PuTTY.

Pour utiliser PuTTY, vous aurez besoin :

  • de l'adresse IP de votre serveur (s'il n'a pas de nom de domaine associé)
  • du compte administrateur du VPS (utilisateur du genre "root" / passe compliqué)

(Vous recevez tout ça dans un mail dès que votre serveur est activé la première fois - le mot de passe vous est donné par OVH) Vous entrez l'IP dans PuTTY, puis vous cliquez sur "Open" :

PuTTY

Et c'est parti pour les lignes de commande !

Ca y est, vous êtes dans la matrice !

linux-command-lines

Bon, là, ce que vous voyez c'est l'interface de Linux en lignes de commandes... on appelle ça le "shell".

Alors évidemment c'est mieux d'avoir des notions de Shell sous Linux... Pour vous initier vous pouvez creuser par là :

Vous pouvez aussi très bien installer node.js sans vous y connaitre en lignes de commandes : il suffira de copier-coller les lignes que vous trouverez sur le net.

Une fois node.js installé ça se passe plus en Javascript qu'en lignes de commandes...  

Installer node.js sur le serveur

A ce stade il faut entrer les bonnes lignes de commande, rien de bien sorcier avec un bon tuto... et celui de Nicolas Giraud est particulièrement bien fait !

>> Installer nodejs sur un VPS Debian Wheezy

Merci à lui !

Si vous suivez son tuto jusqu'au bout vous aurez un serveur http node.js qui tourne... et qui affiche quelque chose quand on tape l'adresse IP dans le navigateur... et c'est un bon début !

Vous pourrez ensuite installer plein d'autres extensions de node.js, sans pour autant avoir besoin de connaissances approfondies en Linux.
Le plus dur est fait !  

Et pour mettre des fichiers sur le serveur ?

Encore un truc qui n'est guère explicité en général.

Sur votre serveur virtuel il n'y a donc pas de serveur FTP installé... mais il y a SSH, et c'est bien parce que ça va permettre par défaut de vous connecter en SFTP (du FTP mieux sécurisé).

Pour ça il faudra un logiciel FTP (Filezilla par exemple), et voici les paramètres à utiliser :

  • Hôte : un truc du genre "vps13xxx.ovh.net" (que vous aurez reçu par mail, et que vous pouvez retrouver dans votre compte client en ligne)
  • Port : (laiser vide)
  • Protocole : SFTP (important)
  • Identifiant : le même que pour PuTTY > "root"
  • Mot de passe : le même que pour PuTTY

Et hop, voilà comment mettre en place le fichier JS donné en exemple dans le tuto cité plus haut.

Autre remarque : par défaut vous démarrez dans le dossier "root/" du serveur... et il vaudra mieux travailler dans le dossier "var/". donc utilisez '..' pour remonter d'un niveau, et vous pourrez créer le dossier "www/" dans le dossier "var/" s'il n'existe pas déjà.

En cours de route vous croiserez plein de dossiers système qu'on ne voit pas sur un mutualisé classique.