Outils personnels

Installation de Juggernaut sur Centos 5.8 : Différence entre versions

De wikiGite

(Installation de Juggernaut)
(Installation de Nodejs)
 
(9 révisions intermédiaires par 2 utilisateurs non affichées)
Ligne 1 : Ligne 1 :
 
== Présentation ==
 
== Présentation ==
 
https://github.com/maccman/juggernaut/
 
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 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.
 
  
ATTENTION juggernaut est déprecié : http://blog.alexmaccaw.com/killing-a-library
+
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 ==
 
== Préparation du serveur ==
Ligne 17 : Ligne 18 :
  
 
== Installation de Nodejs ==
 
== Installation de Nodejs ==
Installation des pré-requis :
+
yum install nodejs --enablerepo=epel
 +
 
 +
''Pour archive : Installation des binaires :''
 
  yum install openssl-devel
 
  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
  
Installation depuis les sources : <br/>
+
''Pour archive : installation depuis les sources :'' <br/>
L'installation se fait /usr/local :
+
L'installation se fait dans /usr/local :
 
  cd /usr/local/src/
 
  cd /usr/local/src/
 
  wget http://nodejs.org/dist/latest/node-v0.8.6.tar.gz
 
  wget http://nodejs.org/dist/latest/node-v0.8.6.tar.gz
Ligne 107 : Ligne 113 :
 
  npm install forever -g
 
  npm install forever -g
 
  npm install forever-monitor
 
  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 ==
 
== Installation de Juggernaut ==
Ligne 122 : Ligne 131 :
 
# chkconfig:  - 20 80
 
# chkconfig:  - 20 80
 
# description: Starts and stops the juggernaut daemon.
 
# description: Starts and stops the juggernaut daemon.
 
+
 
PATH=$PATH:/usr/local/bin
 
PATH=$PATH:/usr/local/bin
 
NAME="Juggernaut"
 
NAME="Juggernaut"
 
USER="juggernaut"
 
USER="juggernaut"
 
PID="/tmp/juggernaut.pid"
 
PID="/tmp/juggernaut.pid"
NBR_PID=`cat $PID`
 
 
LOG_DIR="/var/log/juggernaut"
 
LOG_DIR="/var/log/juggernaut"
 
SERVER="/usr/local/lib/node_modules/juggernaut/server.js"
 
SERVER="/usr/local/lib/node_modules/juggernaut/server.js"
 
+
 
if [ ! -d "/var/log/juggernaut" ]
 
if [ ! -d "/var/log/juggernaut" ]
 
then  
 
then  
 
mkdir /var/log/juggernaut
 
mkdir /var/log/juggernaut
 
fi
 
fi
 
+
 
start()  
 
start()  
 
{
 
{
if [ -d /proc/$NBR_PID ]
+
if [ -e $PID ]
 
then
 
then
 
echo "Always running"
 
echo "Always running"
 
exit
 
exit
 
fi
 
fi
         forever start -o $LOG_DIR/out.log -e $LOG_DIR/err.log --pidFile $PID $SERVER  
+
         su -c "cd /tmp; forever start -o $LOG_DIR/out.log -e $LOG_DIR/err.log --pidFile $PID $SERVER" $USER
 
}
 
}
 
+
 
stop() {
 
stop() {
forever stop $SERVER  
+
su -c "forever stop $SERVER" $USER
 +
        if [ -f $PID ]
 +
        then
 +
  rm $PID
 +
        fi
 
}
 
}
 
+
 
reload() {
 
reload() {
 
     false
 
     false
 
}
 
}
 
+
 
+
 
case "$1" in
 
case "$1" in
 
     start)
 
     start)
Ligne 163 : Ligne 175 :
 
;;
 
;;
 
     status)
 
     status)
forever list
+
su -c "forever list" $USER
 
;;
 
;;
 
     restart)
 
     restart)
Ligne 176 : Ligne 188 :
 
</source>
 
</source>
  
 
+
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
 
  chmod +x /etc/init.d/juggernaut
 
  chkconfig juggernaut on
 
  chkconfig juggernaut on
Ligne 183 : Ligne 199 :
 
Tester le fonctionnement de Juggernaut : <br/>
 
Tester le fonctionnement de Juggernaut : <br/>
 
http://localhost:8080
 
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 !
 
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 !
  

Version actuelle datée du 25 février 2015 à 09:14

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