Installation de Juggernaut sur Centos 5.8

De wikiGite

Présentation

https://github.com/maccman/juggernaut/

ATTENTION juggernaut est déprecié : http://blog.alexmaccaw.com/killing-a-library

Juggernaut permet de réaliser des connexions en temps réel entre un serveur et un navigateur web. Il permet le push d'informations dans des applications web, cela permet de réaliser des choses comme des jeux multijoueurs, des chats ou des outils collaboratifs.

Juggernaut est réalisé à l'aide de Node.js. 'DU FAIT QU'IL N'EVOLUE PLUS, juggernaut ne fonctionne pas avec node.js > 0.8 !

Préparation du serveur

Paquets requis

yum groupinstall "Development tools"
yum install git
yum install php php-devel

Ajouter depot

Dépôts_complémentaires#EPEL

Installation de Nodejs

yum install nodejs --enablerepo=epel

Pour archive : Installation des binaires :

yum install openssl-devel
cd /usr/local/src/
wget http://nodejs.org/dist/v0.8.9/node-v0.8.9-linux-x64.tar.gz
cd /usr/local && tar --strip-components 1 -xzf src/node-v0.8.9-linux-x64.tar.gz

Pour archive : installation depuis les sources :
L'installation se fait dans /usr/local :

cd /usr/local/src/
wget http://nodejs.org/dist/latest/node-v0.8.6.tar.gz
tar xzf node-v0.8.6.tar.gz && cd node-v0.8.6/
./configure --openssl-libpath=/usr/lib/ssl
make  -j2
make install

Installation de Redis

yum install --enablerepo=epel redis
mv /etc/redis.conf /etc/redis.conf.bk
vim /etc/redis.conf

Le fichier de configuration doit comporter ces options :

daemonize yes
pidfile /var/run/redis/redis.pid
port 6379
bind 127.0.0.1
timeout 300
loglevel verbose
logfile /var/log/redis/redis-server.log
databases 16

save 900 1
save 300 10
save 60 10000

rdbcompression yes

dbfilename dump.rdb

dir /var/lib/redis

appendonly no

appendfsync everysec

vm-enabled no

vm-swap-file /var/lib/redis/redis.swap

vm-max-memory 0

vm-page-size 32

vm-pages 134217728
 
vm-max-threads 4

glueoutputbuf yes

hash-max-zipmap-entries 64
hash-max-zipmap-value 512

Vous pouvez télécharger la version complète ( attention au chemin du pid ): wget https://raw.github.com/gist/1164482/77e4ecf14ffac42b0e987e7ffe16cb757d734ff9/redis.conf

chkconfig --level 2345 redis on

Démarrage du service redis server :

/etc/init.d/redis start

Installation de Node_redis

npm install -g redis

Installation de Phpredis

git clone https://github.com/nicolasff/phpredis.git
cd phpredis
phpize
./configure
make
make install

Activation de l'extension PHP : Créer un fichier redis.ini dans /etc/php.d avec le contenu suivant :

extension=redis.so

Installer Forever

https://github.com/nodejitsu/forever/

Forever est un utilitaire en ligne de commande qui permet de faire tourner des scripts Node.js en tant que daemon. Il s'assure également que celui ci ne s'arrête jamais, d'où son nom.

Installation

npm install forever -g
npm install forever-monitor

En cas d'erreur (ex : "npm ERR! network socket hang up") lancer d'abord :

npm config set registry http://registry.npmjs.org/

afin d'utiliser http plutôt que https.

Installation de Juggernaut

npm install -g juggernaut
vim /etc/init.d/juggernaut

Copier le contenu suivant :

#!/bin/bash
#
# juggernaut       init file for starting up the juggernaut daemon
#
# chkconfig:   - 20 80
# description: Starts and stops the juggernaut daemon.
 
PATH=$PATH:/usr/local/bin
NAME="Juggernaut"
USER="juggernaut"
PID="/tmp/juggernaut.pid"
LOG_DIR="/var/log/juggernaut"
SERVER="/usr/local/lib/node_modules/juggernaut/server.js"
 
if [ ! -d "/var/log/juggernaut" ]
then 
	mkdir /var/log/juggernaut
fi
 
start() 
	{
	if [ -e $PID ]
	then
		echo "Always running"
		exit
	fi
        su -c "cd /tmp; forever start -o $LOG_DIR/out.log -e $LOG_DIR/err.log --pidFile $PID $SERVER" $USER
}
 
stop() {
	su -c "forever stop $SERVER" $USER
        if [ -f $PID ]
        then
	   rm $PID
        fi
}
 
reload() {
    false
}
 
 
case "$1" in
    start)
        start
	;;
    stop)
        stop
	;;
    status)
	su -c "forever list" $USER
	;;
    restart)
	stop
	start
	;;
    *)
        echo $"Usage: $0 {start|stop|restart|status}"
        exit 2
esac
exit $?
adduser --system juggernaut
mkdir -p /home/juggernaut/.forever
mkdir /var/log/juggernaut/
chown -R juggernaut /home/juggernaut
chown juggernaut /var/log/juggernaut/
chmod +x /etc/init.d/juggernaut
chkconfig juggernaut on
service juggernaut restart

Tester le fonctionnement de Juggernaut :
http://localhost:8080

NOTE: Attention par défaut Tomcat utilise le même port. Si Tomcat est installé, assurez-vous qu'il est arrêté ou tourne sur un autre port !

Monit

Envoyer un mail par monit en cas de coupure du daemon :

check host juggernaut with address 127.0.0.1
   if failed port 8080 protocol HTTP
       request /application.js
       with timeout 10 seconds
   then alert