serveur vps et node : perdu dans la config

comment accéder à son site ?

a marqué ce sujet comme résolu.
Auteur du sujet

Bonjour à tous,

Tout nouveau dans l'administration d'un VPS ovh sous ubuntu je suis un peu beaucoup perdu.

Je souhaiter faire quelques entrainement sur nodejsmais là je suis bloqué et est besoin de votre aide dans l'utilisation de mon VPS.

Voila ce qui est fait : - Télécharger Putty - Connecté au VPS - sudo apt-get update - sudo apt-get upgrade - Installer node - Accéder grâce à filezila au serveur

Et ensuite ?:'(

Quand je vais sur l'adresse de vps vpsXXXXX.ovh.net j'ai un "site inaccessible".

Je ne sais pas se que je dois faire ensuite afin de pouvoir utiliser mes fichiers javascript dans le but de m’entraîner sur node. Je ne sais pas dans quel répertoire je dois les mettre.

Merci de votre aide, car j'ai beau cherché je ne trouve aucune sur le sujet.

Merci beaucoup d'avance. Florian

+0 -0

Salut,

Node est différent de ce qu'on a l'habitude de voir (comprendre Apache, nginx, etc). Il n'y a pas de dossier spécifique genre /var/www fait pour stocker ton code. Node est le serveur, il gère les connexions, les requêtes et tout ce que tu veux lui demander. Ce qu'il faut donc faire, c'est tout simplement un node main.js avec main.js le fichier qui lance le serveur (la commande ne s'arrêtera pas, un tmux est pratique pour faire autre chose en même temps). Pour tester si ça fonctionne, fais un petit hello world :

1
2
3
4
require('http').createServer(function (req, res) {
  res.writeHead(200, {"Content-Type": "text/plain"})
  res.end("Hello World\n")
}).listen(80)

Pour l'arrêter, envoie un Ctrl+C sur le processus. Je ne sais pas si tu as les permissions pour avoir un serveur qui écoute 80 sur un VPS OVH, j'imagine que oui (ou sinon tu as un port que OVH te demande d'utiliser). Il y a aussi des mesures de sécurité à prendre quand tu gères ton propre VPS, mais ça, c'est pour quand tu voudras ouvrir ton site au monde entier. :)

Édité par tleb

Auteur du sujet

Tout d'abord merci tleb pour ta réponse.

Ensuite tu ne sais pas dans quoi tu t'es embarqué :-) (je suis une bille en vps…).

Là ou je bloque déjà, c'est ou je mets mon fichier main.js sur le serveur (quel dossier) ?

Le hello world correspond au fichier main.js que je sois sur ?

Ensuite, si je souhaite faire un tchat par exemple, ou je mets mon fichier html qui intérargi avec node et comment j'y accède par url ?

Big thanks tleb.

Florian

+0 -0

Je ne serais pas te faire les explications pour la configuration de node, par contre avant d'ouvrir ton navigateur, tu peux déjà faire quelques test sur la machine afin de voir si cela fonctionne.

Par exemple pour voir si tu as un serveur en écoute sur ton port 80(http) :

1
telnet 127.0.0.1 80

Si tu as une réponse du style :

1
Connected to 127.0.0.1

Alors tu as effectivement quelque chose en écoute.

Tu peux alors faire :

1
curl 127.0.0.1

Si cela fonctionne, le résultat devrait correspondre à une réponse de ton serveur.

Tu peux aussi voir quel port sont utilisés :

1
netstat -laputen

Et regarder en particulier un port qui t'intérésse :

1
netstat -laputen | grep 80

Édité par lilyus

+0 -0

Salut :)

Là ou je bloque déjà, c'est ou je mets mon fichier main.js sur le serveur (quel dossier) ?

Tu places ton fichier où tu veux. Ce sera ensuite dans la commande pour lancer le serveur que tu spécifieras le chemin. ;)

Ensuite, si je souhaite faire un tchat par exemple, ou je mets mon fichier html qui intérargi avec node et comment j'y accède par url ?

Encore une fois, c'est à toi de décider où tu mets ton fichier. C'est dans ton code JavaScript que tu vas indiquer son chemin pour y accéder. Le plus logique parait de mettre le fichier HTML dans le même dossier (ou un de ses sous-dossiers) que le main.js (ou tout autre nom que tu lui auras donné).

Pour l'URL, c'est aussi dans ton code JavaScript que tu vas la configurer.

Si tu as des doutes, ce cours est bien fait. :)

J'ai une configuration Debian & vps ovh .

J'ai commencé par configurer le parefeu avec iptable (pour autoriser les ports) et fail2ban (limiter l'acces au ssh).

Puis j'ai ensuite bloqué la connexion ssh à l'utilisateur root, pour éviter les bruteforce (qu'on constate avec logwatch). Bien sûr avant, j'ai créé un utilisateur spécialement pour nodejs. (En parlant de ssh, j'ai aussi ajouté une alerte par e-mail à chaque connexion via /etc/profile).

Si tu as remarqué quand on ferme Putty, ca ferme aussi nodejs. Je te conseille d'utiliser screen, ça permet d'ouvrir une/des sessions de la console en même temps, sans fermer la commande en cours (vive le multi tâche).

J'utilise screen avec ce script qui permet de le lancer au démarrage : https://zestedesavoir.com/forums/sujet/3833/lancer-screen-au-demarrage-avec-initd/

Mes fichiers je les ai mis dans le home de mon compte utilisateur spécialement fait pour node :

1
/home/utilisateur/node/

Sous linux en dessous des 1024 premiers ports il faut l'acces root. Pour ne pas lancer nodejs en root (pour une question de sécurité et de prévention contre nos maladresses), il faut faire une redirection, par exemple le port 1080 à 80, avec la commande suivante :

1
2
3
iptables -t nat -A PREROUTING -p tcp --dport 80 -j REDIRECT --to-port 1080

iptables -L -vt nat

C'est à utiliser avec iptables-persistent pour ne pas devoir taper cette commande à chaque démarrage.

Édité par anonyme

+0 -0
Auteur du sujet

Bonsoir à tous,

Je regarde toutes vos et vais me plonger dedans car tous n'est pas clair ;-)

Je vais regarder aussi les posts et tutos que vous m'avez donné.

Je reviens vers vous au besoin.

Merci beaucoup Bonne fin de dimanche

+0 -0
Auteur du sujet

Bonjour à tous,

Je reviens vers vous et je pense que mon cerveau n'est pas configuré pour les choses trop paramétrables.

Pour moi, Serveur -> Je poste mes fichiers (javascript, html, css, etc) -> j'accède à une url -> je vois le résultats de mon programme.

Je voulais savoir si vous connaissiez des solutions (hébergement ou cloud ou autre) qui offrent un environnement tout installé ou il y a juste à mettre ses fichiers javascript pour le serveur avec node et de l'autre mes fichiers html/autres ?

Merci d'avance. Florian

+0 -0

Pour moi, Serveur -> Je poste mes fichiers (javascript, html, css, etc) -> j'accède à une url -> je vois le résultats de mon programme.

arglow

Ça, ça marche avec ce qui est entièrement statique ou ce qui est très stateless comme PHP. Node ne fonctionne pas comme ça.

Avec PHP tu peux poser tes fichiers en FTP sur un serveur. Quand tu recharges la page, le serveur web (nginx, apache) fait comme d'habitude : il regarde l'URL, dit à PHP de générer l'HTML, PHP lit tes fichiers depuis le disque dur, donne l'HTML au serveur web, le serveur web envoie l'HTML au navigateur.

Avec Node, c'est différent. Tu lances Node en disant "ça c'est mes fichiers", node se lance et sert ton site sur disons localhost:3000. Puis tu lances un serveur web (nginx, apache, etc) et tu dis au serveur web "quand on te demande une page, tu passes la requête à localhost:3000. Quand tu navigues sur une page, le navigateur demande la page au serveur web (port 80, comme d'habitude), le serveur web demande la page à node (il ne fait que transmettre la requête à localhost:3000), node génère la page et répond au serveur web, le serveur web répond au navigateur.

Si tu modifies un fichier, tu dois relancer le serveur web. Donc dans le cas disons de PHP, à chaque requête HTTP on lance un processus qui lit le fichier, le compile, l'exécute, donne la réponse et meurt. Dans le cas de node, on lance le processus puis à chaque requête ce processus répond, et il ne meurt que si tu le tues, sinon il continue à tourner.

Vous aimez le frontend ? Il y a un tas de petites tâches faciles si vous voulez contribuer à ZdS : https://github.com/zestedesavoir/zds-site/issues?q=is%3Aissue+is%3Aopen+label%3AC-Front

+3 -0

Dans son dernier message, j'ai plus compris qu'il souhaitait un service "d'hébergement mutualisé", c'est-à-dire où il n'a pas besoin d'administrer son serveur pour pouvoir utiliser nodejs.

Sa comparaison avec le php est légèrement maladroite.

voulais savoir si vous connaissiez des solutions (hébergement ou cloud ou autre) qui offrent un environnement tout installé ou il y a juste à mettre ses fichiers javascript pour le serveur avec node et de l'autre mes fichiers html/autres ?

+0 -0
Auteur du sujet

En effet A-312 ce serait un équivalent de mutualisé ou j'aurais juste besoin de mettre mon fichier serveur node et de l'autre mes fichiers client.

Car je ne m'en sors pas avec les différentes config.

+0 -0

Salut,

Il y a deux serveurs que tu dois prendre en compte :

  • le serveur, la machine à laquelle tu te connectes, le VPS
  • le serveur web, le logiciel qui fait tourner ton site web (ici Node)

Regarde dans les solutions de type forever pour maintenir ton serveur Node actif. Ca te permet aussi de l'éditer et de voir les changements en temps réel sans avoir à redémarrer le script, forever s'en charge.

Edit : markdown

Édité par Pierre de Vésian

+0 -0

@Pierre de Vésian Tu as eu l'occasion d'utiliser forever ?

Personnellement je n'ai pas été satisfait par cette application et j'ai préféré coupler nodejs avec screen. Je n'ai pas dû avoir les compétences requises pour lire les doc et comprendre comment ça marche.

+0 -0
Connectez-vous pour pouvoir poster un message.
Connexion

Pas encore membre ?

Créez un compte en une minute pour profiter pleinement de toutes les fonctionnalités de Zeste de Savoir. Ici, tout est gratuit et sans publicité.
Créer un compte