IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)
Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

NodeJS Discussion :

Installer Nodejs sur serveur Apache en cluster


Sujet :

NodeJS

  1. #1
    Candidat au Club
    Homme Profil pro
    Inscrit en
    Août 2013
    Messages
    10
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations forums :
    Inscription : Août 2013
    Messages : 10
    Points : 3
    Points
    3
    Par défaut Installer Nodejs sur serveur Apache en cluster
    Bonjour à tous,

    Je tiens avant tout à souligner que mes compétences "serveur" sont très limitées

    Voila mon "problème". Je me suis mis récemment à nodejs (je l'utilise uniquement pour les sockets), en local sous windows tout fonctionne. Par contre pour le déploiement en prod je ne sais pas du tout comment m'y prendre.

    Mon architecture en prod tourne sous debian et j'ai 2 serveurs Apache en cluster qui se répartissent la charge. 2 sites internet tournent sur ces serveurs. D'un point de vue technique c'est notre hébergeur qui s'est occupé de tout mettre en place.

    Je compte suivre ce tuto pour installer nodejs sur un de mes serveurs Apache (http://blog.romain-moro.fr/installat...heezy-squeeze/) le problème c'est que je ne sais pas trop comment m'y prendre ensuite. Mon serveur nodejs écoutera le port 1337. Le problème qui va se poser c'est que mes requêtes sur le port 1337 arriveront sur l'un ou l'autre de mes serveurs et donc tout le monde ne se connectera pas au serveur nodejs qui tournera que sur un seul ?

    Du coté client j'ai cette ligne actuellement --> var socket = io.connect('http://127.0.0.1:1337'); Est ce que je pourrais spécifier ici l'ip de mon serveur où tourne nodejs ? Comment cela se passe si l'internaute navigue sur le port 80 (apache) depuis l'autre serveur du cluster ?

    Je ne suis pas très clair car je suis moi même perdu Est ce quelqu'un pourrait m'aiguiller un peu sur la mise en place de nodejs sur mes serveurs (et sur son fonctionnement) ?

    Merci d'avance pour les éventuels éclaircissement

    edit : est-il possible tout simplement de faire tourner nodejs sur un serveur à part et de le lier avec un de mes sites internet (socket) ?

  2. #2
    Expert éminent
    Avatar de sekaijin
    Homme Profil pro
    Urbaniste
    Inscrit en
    Juillet 2004
    Messages
    4 205
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 60
    Localisation : France, Yvelines (Île de France)

    Informations professionnelles :
    Activité : Urbaniste
    Secteur : Santé

    Informations forums :
    Inscription : Juillet 2004
    Messages : 4 205
    Points : 9 127
    Points
    9 127
    Par défaut
    node.js n'a besoin d'aucun serveur web pour fonctionner.

    c'est un peut comme si tu demandais comment installer apache dans un Internet Information Serveur de microsoft.
    On n'installa pas un serveur web dans un autre.

    A+JYT

  3. #3
    Candidat au Club
    Homme Profil pro
    Inscrit en
    Août 2013
    Messages
    10
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations forums :
    Inscription : Août 2013
    Messages : 10
    Points : 3
    Points
    3
    Par défaut
    Merci pour ta réponse !

    Oui j'ai bien compris que nodejs était un serveur à lui tout seul. Le truc que je ne comprend pas c'est comment faire la liaison de mon serveur nodejs (installé sur un de mes 2 serveurs frontaux) avec mon site internet. Je vais bien inclure dans mon site un .js avec la liaison vers socket.io (var socket = io.connect('?????:1337')) mais est ce suffisant ? Le soucis c'est que mon domaine pointe vers une IP qui dispatche ensuite entre mes 2 serveurs frontaux...comment il va savoir qu'il faut qu'il aille sur celui où se trouve nodejs. Je peux lui donner directement l'IP de mon serveur nodejs ?

    C'est là que je bloque (je cherche à comprendre un truc qui a mon avis est tout simple ) je ne comprend pas comment un site internet (un domaine) est lié au serveur nodejs.

    Merci de m'éclairer encore plus...

  4. #4
    Invité
    Invité(e)
    Par défaut
    Salut,

    Tu pourrais pointer directement sur l'ip:port du serveur sur lequel tu fais tourner node mais il faut que le parefeu soit correctement configuré et surtout tu auras des problèmes de cross domain policy (le navigateur va bloquer).

    La bonne solution est, je pense, de configurer tes serveurs web pour qu'ils redirigent vers ton serveur node les requètes qui matchent un certain format (reverse proxy). En gros tu dis à tes serveurs web de rediriger les requêtes type tondomaine/node par exemple sur ton serveur node avec le port.
    (exemple pour apache)

  5. #5
    Candidat au Club
    Homme Profil pro
    Inscrit en
    Août 2013
    Messages
    10
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations forums :
    Inscription : Août 2013
    Messages : 10
    Points : 3
    Points
    3
    Par défaut
    Merci pour ta réponse Enerian. Je vais contacter mon hébergeur pour leur proposer de regarder de plus prêt ta solution (moi de mon coté tout cela me dépasse un peu )

    Donc si je résume :

    - J'installe node sur un mes serveurs où apache tourne.
    - dans mon app j'écoute le port (8080) --> httpServer.listen(8080);
    - sur mon domaine j'inclue mon client.js en configurant de cette façon (var socket = io.connect('http://mondomaine.com:8080')
    - sur ma config Apache on modifie en prenant en compte le lien que tu m'as envoyé (http://garr.me/blog/running-node-js-...ing-mod_proxy/)

    et ça devrait être bon ?

  6. #6
    Invité
    Invité(e)
    Par défaut
    Presque

    var socket = io.connect('http://mondomaine.com:8080') ne marchera pas à cause de la cross domain policy (le navigateur bloque les requêtes qui partent vers un domaine/protocole/port différent de celui de la page chargée).
    Il faudrait plus quelque chose comme var socket = io.connect('http://mondomaine.com/node') et que tes serveurs apache redirigent toutes les routes commençant par /node sur ip:port de ton serveur node.

    Par ailleurs, le must serait de faire le reverse proxy au niveau du load balancer pour éviter de faire loadbalancer -> un de tes serveurs web -> node. Mais si c'est pas possible, alors il faut bien ajouter la redirection sur tes deux serveurs web. Sinon, si la requête arrive sur le serveur web qui n'a pas la conf, elle sera perdue.

  7. #7
    Candidat au Club
    Homme Profil pro
    Inscrit en
    Août 2013
    Messages
    10
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations forums :
    Inscription : Août 2013
    Messages : 10
    Points : 3
    Points
    3
    Par défaut
    ok merci !

    Je comprend déjà mieux

    Bon maintenant y a plus qu'a...

  8. #8
    Candidat au Club
    Homme Profil pro
    Inscrit en
    Août 2013
    Messages
    10
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations forums :
    Inscription : Août 2013
    Messages : 10
    Points : 3
    Points
    3
    Par défaut
    Re bonjour,

    J'ai testé ta solution Enerian. J'ai donc activé le reverse_proxy maintenant mondomain.com/node arrive vers l'ip:port où tourne mon serveur nodejs. Ça c'est bon

    Maintenant c'est au niveau de la liaison depuis le client que ça bloque.

    Je fais ça :

    Code html : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    <script src="scripts/socket.io.js"></script>
    <script src="scripts/client.js"></script>

    Dans mon client.js pour tester je fais simplement ça (comme tu me l'avais conseillé) :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    $(document).ready(function() {					
    	var socket = io.connect('http://mondomaine.com/node/');
    });
    Là ça me fait une erreur 404 dans "firebug". J'ai essayé ceci, c'est un peu mieux mais c'est pas encore ça...il doit se perdre dans les chemins mais je sais pas trop où :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    var socket = io.connect('http://mondomaine.com/node/',{resource: 'node/socket.io'});
    J'obtiens comme erreur :
    Firefox ne peut établir de connexion avec le serveur à l'adresse ws://mondomain.com/node/socket.io/1/websocket/x-CfizCp0pPLgfAwNxD6.
    Bref je suis bloqué juste à la fin

    EDIT (après plusieurs heures de recherche...)

    il semblerait que les websocket et le reverse_proxy ne soient pas supportées par Apache 2.2...il faut passer en 2.4 et installer le module proxy_wstunnel, je me trompe ?

    Quelle galère !

  9. #9
    Candidat au Club
    Homme Profil pro
    Inscrit en
    Août 2013
    Messages
    10
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations forums :
    Inscription : Août 2013
    Messages : 10
    Points : 3
    Points
    3
    Par défaut
    Bon en fait plus de problème de coté là...toutes mes connections sur le port de mon serveur nodejs arrivent sur un seul de mes serveurs.

+ Répondre à la discussion
Cette discussion est résolue.

Discussions similaires

  1. [Upload] Upload sur serveur apache
    Par ben_skywalker dans le forum Langage
    Réponses: 10
    Dernier message: 24/01/2007, 19h02
  2. Réémission requête GET sur serveur Apache
    Par aquafiestas dans le forum Réseau
    Réponses: 18
    Dernier message: 04/10/2006, 14h28
  3. Config de dossier partage sur serveur Apache
    Par totonono dans le forum Apache
    Réponses: 8
    Dernier message: 25/07/2006, 13h00
  4. scripts cgi sur serveur apache
    Par jejerome dans le forum Apache
    Réponses: 1
    Dernier message: 26/02/2006, 18h10
  5. Sécurité sur serveur apache
    Par Beaunico dans le forum Apache
    Réponses: 8
    Dernier message: 13/04/2004, 07h03

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo