JeuWeb - Crée ton jeu par navigateur
Mettre en place du push avec PHP, Redis et Juggernaut sur Ubuntu - Version imprimable

+- JeuWeb - Crée ton jeu par navigateur (https://jeuweb.org)
+-- Forum : Discussions, Aide, Ressources... (https://jeuweb.org/forumdisplay.php?fid=38)
+--- Forum : Programmation, infrastructure (https://jeuweb.org/forumdisplay.php?fid=51)
+--- Sujet : Mettre en place du push avec PHP, Redis et Juggernaut sur Ubuntu (/showthread.php?tid=5767)



Mettre en place du push avec PHP, Redis et Juggernaut sur Ubuntu - Annx - 23-10-2011

1. Installer Ubuntu en VM sur Windows Seven

Si vous êtes sous linux, vous pouvez sauter cette étape.

Télécharger VirtualBox et installé le.
https://www.virtualbox.org/wiki/Linux_Downloads

Télécharger la dernière version d’Ubuntu Dekstop.
http://www.ubuntu.com/start-download?distro=desktop&bits=32&release=latest

Lancer VirtualBox et installé la machine virtuelle.

2. Ubuntu

Une fois Ubuntu installé, faites les mises à jour qu’il vous propose et redémarrez.

Ensuite il faut installer les additions, pour ceci :
- Menu « Périphériques » > « Installer les additions invités »

L’opération ci-dessous, va ouvrir une sorte de disque virtuel, copier le contenu de celui-ci dans un autre dossier.

Ouvrez un terminal, et aller dans le dossier où vous avez copié le contenu du disque virtuel.

Taper les lignes de commandes suivantes
Code :
sudo chmod u+x VBoxLinuxAdditions.run
sudo ./VBoxLinuxAdditions.run

Vous venez d’installer les additions, redémarrer la machine virtuelle.

3. Installer Apache Mysql PHP

Si vous avez déjà installé Apache/Mysql/PHP, sautez cette étape.

Je ne vais pas refaire un guide d’installation, il y en a un très bon sur le net :
https://help.ubuntu.com/community/ApacheMySQLPHP

Merci à Sephi-chan pour le lien.

Créer un dossier partager entre windows et ubuntu
Cette opération est utile seulement si vous souhaitez développer sous windows, de cette manière vos fichiers seront automatiquement synchroniser sur la machine virtuelle.

Aller dans « Périphériques » > « Dossiers partagés ».

Ajouter un nouveau dossier partagé, donnez lui un nom (pas trop long), et précisez le chemin du dossier.

Pour faire la liaison sur ubuntu avec ce dossier partager, tapez la commande suivante
Code :
sudo mount –t vboxsf <nom du dossier partagé que vous avez défini> <chemin et nom du dossier sur ubuntu>

Merci à Dexyne pour les infos sur les dossiers partagés.

4. Installer Node.js / NPM (Node Package Manager) / Redis

Les informations ci-dessous sont disponibles sur le site http://apptob.org/, merci à Sephi-Chan pour le lien.

Créer un fichier node.sh
Code :
cd ~/
sudo nano –w node.sh

Copier le code ci-dessous dans ce fichier
Code :
#!/bin/sh
##############################################################
#
# Author: Ruslan Khissamov, email: rrkhissamov@gmail.com
#
##############################################################
# Update System
echo 'System Update'
apt-get -y update
echo 'Update completed'
# Install help app
apt-get -y install libssl-dev git-core pkg-config build-essential curl gcc g++
# Download & Unpack Node.js - v. 0.4.12
echo 'Download Node.js - v. 0.4.12'
mkdir /tmp/node-install
cd /tmp/node-install
wget http://nodejs.org/dist/node-v0.4.12.tar.gz
tar -zxf node-v0.4.12.tar.gz
echo 'Node.js download & unpack completed'
# Install Node.js
echo 'Install Node.js'
cd node-v0.4.12
./configure && make && make install
echo 'Node.js install completed'
# Install Redis
echo 'Install Redis'
cd /tmp
sudo mkdir redis && cd redis
sudo wget http://redis.googlecode.com/files/redis-2.4.1.tar.gz
sudo tar -zxf redis-2.4.1.tar.gz
cd redis-2.4.1
sudo make && sudo make install
wget https://github.com/ijonas/dotfiles/raw/master/etc/init.d/redis-server
wget https://github.com/ijonas/dotfiles/raw/master/etc/redis.conf
mv redis-server /etc/init.d/redis-server
chmod +x /etc/init.d/redis-server
mv redis.conf /etc/redis.conf
useradd redis
mkdir -p /var/lib/redis
mkdir -p /var/log/redis
chown redis.redis /var/lib/redis
chown redis.redis /var/log/redis
update-rc.d redis-server defaults
echo 'Redis install completed. Run "sudo /etc/init.d/redis-server start"'

5. Installer juggernaut

Site de référence : https://github.com/maccman/juggernaut/

Installer Juggernaut
Code :
cd ~/
sudo git clone git://github.com/maccman/juggernaut.git
cd juggernaut
sudo npm install –g juggernaut

6. Installer phpredis

Pour installer phpredis, voici le lien de référence : https://github.com/nicolasff/phpredis.

Taper les commandes suivantes
Code :
sudo git clone git://github.com/nicolasff/phpredis
cd phpredis
sudo apt-get install php5-dev
sudo phpize
sudo ./configure
sudo make && sudo make install

On va maintenant éditer le php.ini pour indiquer la nouvelle extension
Code :
sudo gedit /etc/php5/apache2/php.ini

Une fois le php.ini ouvert, rajouter au bon endroit (dans la zone « Dynamic Extensions ») :
Code :
extension=/phpredis/modules/redis.so

7. Vérifier la bonne installation

Lancer redis-server
Code :
redis-server

Lancer juggernaut
Code :
Juggernaut

Aller sur l’url http://localhost:8080, si tout se passe bien, une page avec juggernaut devrait s’afficher. Si c’est le cas, l’installation s’est bien passée et tout fonctionne !

8. Juggernaut et php

Comment réalisation votre premier fichier en PHP avec Juggernaut.

Tout d’abord télécharger : https://github.com/andruu/Juggernaut-PHP.
Télécharger aussi la dernière version de jQuery.

Créer un fichier index.php qui contiendra
Code :
<!DOCTYPE html>
<html>
<head>
    <meta name="charset" content="utf-8">
    <title>Test juggernaut</title>
    <script src="jquery-1.6.2.min.js" type="text/javascript" charset="utf-8"></script>
    <script src="http://localhost:8080/application.js" type="text/javascript" charset="utf-8"></script>

    <script type="text/javascript">
    /*
      * Fonction pour permettre l’ajout d’un message en ajax
      */
        function sendajaxmessage(message)
        {
            $.post('/sendajax.php?message=' + message, function(data){});
        }
    </script>
</head>
<body>

    <textarea name="chat" id="chat" style="width: 300px; height: 200px;" readonly></textarea>

    <script type="text/javascript" charset="utf-8">
        var logElement = document.getElementById("chat");
        logElement.value = "";

        <!--Function qui va permettre l’ajout des données au textarea-->
        var log = function(data){
            logElement.value += (data + "\n");
        };

        var jug = new Juggernaut;

        log("Subscribing to channel1");

        <!--On récupère les données renvoyées par Juggernaut-->
        jug.subscribe("channel1", function(data){
            log(data);
            logElement.scrollTop = logElement.scrollHeight;
        });
    </script>

    <form name="formsend" id="formsend" action="index.php" onSubmit="sendajaxmessage($('#message').val()); return false;">
        <input type="text" name="message" id="message" >
        <input type="submit" name="ok" value="envoyer">
    </form>
</body>
</html>

Créer un fichier sendajax.php qui contiendra
Code :
<?
require 'Juggernaut.php';
Juggernaut::init('127.0.0.1');

// On push le message dans le channel1
Juggernaut::publish('channel1', $_REQUEST['message']);
?>

Vous n’avez plus qu’à insérer un message dans le champ texte pour que celui-ci s’affiche directement dans le channel1.

______________________________________

Merci à tout ceux qui m'ont aidé à faire tout cela pour réaliser ensuite un tutoriel.



RE: Mettre en place du push avec PHP, Redis et Juggernaut sur Ubuntu - Maz - 23-10-2011

Merci pour le partage.


RE: Mettre en place du push avec PHP, Redis et Juggernaut sur Ubuntu - caledonien - 05-09-2012

Je me suis inscrit juste pour te remercier d'avoir rédigé cet article !!! thanks


RE: Mettre en place du push avec PHP, Redis et Juggernaut sur Ubuntu - St_Machine - 05-09-2012

J'ai remarqué juste deux fautes:
Citation :Une fois le php.ini ouvert, rajoutez au bon endroit (dans la zone « Dynamic Extensions ») :

Citation :Comment réaliser votre premier fichier en PHP avec Juggernaut.

Une dernière chose, j'aurais mis personnellement toutes les instructions en gras à l'impératif "ez". A voir si je me trompe ou pas avec les autres Wink

Hormis ces petits détails, c'est un très bon article merci Smile