Node.js et haste : installation sur un serveur Debian Squeeze
Installation de Node.js
Les tutoriels pullulant sur la toile, je ne ferai pas l’affront de peser le pour et le contre d’une installation de Node.js, que ça soit depuis la source, depuis git ou depuis les répertoires Sid : si vous chercher un autre moyen, trouvez-le, le reste devrait rester similaire qu’importe votre configuration.
Pour moi, j’ai préféré installé depuis l’archive, et procéder à un simple configure
, make
, make install
, triolet joyeux des installations réussies. J’ai donc d’abord téléchargé la dernière archive stable en date, soit la version 0.6.18.
~ $ wget http://nodejs.org/dist/v0.6.18/node-v0.6.18.tar.gz
Je l’ai ensuite extraite dans mon dossier personnel, vous pouvez bien évidemment mettre toutes ces archives bien au chaud dans un dossier séparé (c’est même conseillé par souci de clarté). Mais pour l’instant, allons au plus simple avec un tar Xtract Ze Files
.
~ $ tar xzf node-v0.6.18.tar.gz && cd node-v0.6.18/
Pour installer Node.js dans /opt/
, il font donc configurer le tout comme il faut bien. Notez que sur Debian l’outil de configuration à tendance à ne pas trouver openssl
, donc autant le lui indiquer, même s’il n’est pas utilisé.
~ $ ./configure --openssl-libpath=/usr/lib/ssl --prefix=/opt/node
Après, c’est une balade de santé : make
, make install
, en root ou avec sudo
, c’est à votre convenance, le but étant d’avoir le tout fonctionnel. La dernière touche à apporter consiste à ajouter ce nouveau chemin d’installation à votre $PATH
, pour ce faire j’ai édité /etc/bash.bashrc
(ainsi me faire fi de l’utilisateur aux commandes) pour y ajouter :
PATH=$PATH:/opt/node/bin NODE_PATH=/opt/node:/opt/node/lib/node_modules |
Pour finir, j’ai à nouveau « sourcé » le fichier, avec un simple source /etc/bash.bashrc
.
Installation de haste
Mais qu’est-ce donc que Haste ? C’est simple : une application en Node.js qui déchire, un PasteBin léger, minimaliste, utilisant les colorations foncées de Solarized, configurable en un fichier, et disposant même d’un client Ruby à utiliser dans son terminal. Vous pouvez en trouver un exemple sur HasteBin, la « maison mère » du projet.
Pour l’installer, j’ai d’abord cloné le répertoire git
, pour ensuite le copier dans /var/www/domain.tld/haste-server/www
. Il va sans dire que tout chemin référent sera à éditer en fonction de votre propre configuration.
Donc, après un git clone https://github.com/seejohnrun/haste-server.git
et avoir copie le contenu de haste-server/
dans /var/www/domain.tld/haste-server/www
, et changé le possesseur dudit dossier à un utilisateur normal sans privilèges – afin de ne pas avoir à exécuter node
en root -, j’ai pu installer haste avec un simple npm install
depuis le répertoire de l’application. Simple, non ?
Pour configurer la bête, je vous renvoie à la fiche d’explication de haste, ayant préféré l’utilisation de memcache
déjà installé sur ma machine que celle de redis (par exemple).
Configuration de NGinx
Afin de prendre en compte le nom de domaine et d’avoir une jolie adresse sans le port :7777
derrière, il m’a fallu jouer avec le proxy de NGinx, dont voici un exemple de configuration à insérer dans /etc/nginx/sites-available/sub.domain.tld
, avec votre domaine/sous-domaine désiré (je vous laisse la partie d’édition de la Zone DNS).
server { listen 80; server_name sub.domain.tld; root /where/you/put/your/haste-server; location / { proxy_set_header X-Real-IP $remote_addr; proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for; proxy_set_header Host $http_host; proxy_set_header X-NginX-Proxy true; proxy_pass http://127.0.0.1:7777; proxy_redirect off; } }
Ensuite, finalement, rien de plus simple qu’un nginx_ensite sub.domain.tld
et un service nginx reload
. S’il y a la moindre erreur, gueulez un coup, recommencez, ou commentez ci-dessous.
Who wants – to run – foreveeeer
Le défaut majeur des applications Node.js c’est que bien souvent celles-ci sont dépendantes de l’usage du terminal : fermez votre session SSH et l’application se clôturera. Heureusement existe-t-il un module node qui permet d’exécuter tout cela en tâche de fond, le bien nommé forever
.
Pour l’installer, ce fut assez simple : npm install forever -g
, n’oubliant pas l’argument -g
afin d’installer forever
sur tout le serveur. L’utiliser est aussi simple que npm
préconisé dans la documentation : forever start /where/you/put/your/haste-server/
ou même amusez vous avec la commande nohup
, sans même avoir besoin de forever
: dans /where/you/put/your/haste-server
, un simple nohup npm start&
et roule jeunesse ! C’est alors que survient le test fatidique : essayer le sous-domaine. Chez moi, ça a fonctionné.