Comment héberger une application Node.Js dans un hébergement partagé [fermé]

110

Comment héberger une application Node.Js dans un hébergement mutualisé

Je souhaite héberger une application node.js en hébergement mutualisé. Quelqu'un a-t-il des références ou des documents auxquels se référer?

quelque chose
la source
La façon dont je l'ai figuré en exécutant npm build générera des fichiers js que vous pourrez réduire et ensuite inclure dans vos balises de script. Exemple lors de la construction avec vuejs ou même angular2 cli
Geoff
1
cela a fonctionné - dommage que je ne puisse pas publier de réponse ... a2hosting.com/kb/installable-applications/manual-installations
eddyparkinson
1
@ Dan-Cornilescu peut être rouvert. C'est précieux. Ce serait mieux en superutilisateur. J'ai également trouvé une réponse que je voudrais ajouter.
eddyparkinson
Sur la plupart des hôtes partagés, l'installation de Node et NPM échouera (CentOS non pris en charge); voici une solution (en utilisant Node v6.2.2) - medium.com/@yatko/…
Yatko

Réponses:

158

Vous pouvez exécuter le serveur node.js sur un hébergement partagé typique avec Linux, Apache et PHP (LAMP). Je l'ai installé avec succès, même avec NPM, Express et Grunt fonctionnant bien. Suis les étapes:

1) Créez un nouveau fichier PHP sur le serveur avec le code suivant et exécutez-le:

<?php
//Download and extract the latest node
exec('curl http://nodejs.org/dist/latest/node-v0.10.33-linux-x86.tar.gz | tar xz');
//Rename the folder for simplicity
exec('mv node-v0.10.33-linux-x86 node');

2) De la même manière, installez votre application de nœud, par exemple jt-js-sample, en utilisant npm:

<?php
exec('node/bin/npm install jt-js-sample');

3) Exécutez l'application de nœud depuis PHP:

<?php
//Choose JS file to run
$file = 'node_modules/jt-js-sample/index.js';
//Spawn node server in the background and return its pid
$pid = exec('PORT=49999 node/bin/node ' . $file . ' >/dev/null 2>&1 & echo $!');
//Wait for node to start up
usleep(500000);
//Connect to node server using cURL
$curl = curl_init('http://127.0.0.1:49999/');
curl_setopt($curl, CURLOPT_HEADER, 1);
curl_setopt($curl, CURLOPT_RETURNTRANSFER, 1);
//Get the full response
$resp = curl_exec($curl);
if($resp === false) {
    //If couldn't connect, try increasing usleep
    echo 'Error: ' . curl_error($curl);
} else {
    //Split response headers and body
    list($head, $body) = explode("\r\n\r\n", $resp, 2);
    $headarr = explode("\n", $head);
    //Print headers
    foreach($headarr as $headval) {
        header($headval);
    }
    //Print body
    echo $body;
}
//Close connection
curl_close($curl);
//Close node server
exec('kill ' . $pid);

Voila! Jetez un œil à la démo d'une application de nœud sur l'hébergement mutualisé PHP .

EDIT: J'ai commencé un projet Node.php sur GitHub .

niutech
la source
2
et installer mongoDB aussi?
jsky
3
@jsky Cela devrait être possible car mongodb n'a pas besoin de root. Suivez simplement le guide d'installation manuelle .
niutech
3
Je n'ai pas essayé, mais ça a l'air tout simplement magnifique !!! ... Beau travail
Gabriel Rodriguez
2
Soyez avisé que vous devez mettre à jour l' URL de téléchargement en conséquence
João Pimentel Ferreira
5
node.php est très bon!
Hemant Sharma
51

Connectez-vous avec SSH et suivez ces instructions pour installer Node sur un hébergement partagé

En bref, vous installez d'abord NVM, puis vous installez la version Node de votre choix avec NVM.

wget -qO- https://cdn.rawgit.com/creationix/nvm/master/install.sh | bash

Vous redémarrez votre shell (fermez et rouvrez vos sessions). Alors vous

nvm install stable

pour installer la dernière version stable par exemple. Vous pouvez installer n'importe quelle version de votre choix. Recherchez node --versionla version du nœud que vous utilisez actuellement et nvm listvoyez ce que vous avez installé.

En bonus, vous pouvez changer de version très facilement ( nvm use <version>)

Il n'y a pas besoin de PHP ou de toute solution de contournement délicate si vous avez SSH.

vinyll
la source
Salut, merci pour la réponse. Bien que je rencontre des problèmes, cela indique que le nœud n'est pas trouvé, une fois que j'ai effectué l'installation en utilisant nvm. De l'aide?
Amit Saxena le
Peut-être devriez-vous essayer stackoverflow.com/a/33874050/328117 si vous avez une erreur de nœud non trouvé avec nvm
vinyll
La plupart des fournisseurs d'hébergement partagé ne donnent pas d'accès SSH. Du moins pas le mien.
coder.in.me
4
A parfaitement fonctionné !! Merci
Devin Norgarb
2
@SyamsoulAzrien si vous avez, nvm:command not foundvous pouvez exécuter ceci: commandesource ~/.nvm/nvm.sh
Hans Tiono
12

J'ai installé Node.js sur bluehost.com (un serveur partagé) en utilisant:

wget <path to download file>
tar -xf <gzip file>
mv <gzip_file_dir> node

Cela téléchargera le fichier tar, extraira dans un répertoire, puis renommera ce répertoire sous le nom «nœud» pour le rendre plus facile à utiliser.

puis

./node/bin/npm install jt-js-sample

Returns:
npm WARN engine jt-js-sample@0.2.4: wanted: {"node":"0.10.x"} (current: {"node":"0.12.4","npm":"2.10.1"})
jt-js-sample@0.2.4 node_modules/jt-js-sample
└── express@4.12.4 (merge-descriptors@1.0.0, utils-merge@1.0.0, cookie-signature@1.0.6, methods@1.1.1, cookie@0.1.2, fresh@0.2.4, escape-html@1.0.1, range-parser@1.0.2, finalhandler@0.3.6, content-type@1.0.1, vary@1.0.0, parseurl@1.3.0, serve-static@1.9.3, content-disposition@0.5.0, path-to-regexp@0.1.3, depd@1.0.1, qs@2.4.2, on-finished@2.2.1, debug@2.2.0, etag@1.6.0, proxy-addr@1.0.8, send@0.12.3, type-is@1.6.2, accepts@1.2.7)

Je peux maintenant utiliser les commandes:

# ~/node/bin/node -v
v0.12.4

# ~/node/bin/npm -v
2.10.1

Pour des raisons de sécurité, j'ai renommé mon répertoire de nœuds en autre chose.

iiboone.com
la source
1
J'ai essayé npm startdans le jt-js-sampleet je suis allé sur mysite.com:5000 mais il a dit que la page n'était pas disponible. Dois-je plutôt accéder à l'adresse IP?
zachdyer
ce port est probablement bloqué, vous devriez utiliser le port standard 80
RicardoE
~ / node / bin / npm -v me donne une erreur disant: let notifier = require ('update-notifier') ({pkg}) SyntaxError: identifiant inattendu à exports.runInThisContext (vm.js: 69: 16) au module ._compile (module.js: 432: 25) à Object.Module._extensions..js (module.js: 467: 10) à Module.load (module.js: 349: 32) à Function.Module._load (module .js: 305: 12) à Function.Module.runMain (module.js: 490: 10) au démarrage (node.js: 123: 16) à node.js: 1027: 3
codeinprogress
10

A2 Hosting autorise node.js sur leurs comptes d'hébergement partagé. Je peux garantir que j'ai eu une expérience positive avec eux.

Voici les instructions dans leur base de connaissances pour installer node.js en utilisant Apache / LiteSpeed ​​comme proxy inverse: https://www.a2hosting.com/kb/installable-applications/manual-installations/installing-node-js-on-managed- comptes d'hébergement . La configuration de la configuration prend environ 30 minutes et fonctionnera avec npm, Express, MySQL, etc.

Voir a2hosting.com.

aap
la source
1
Je vous remercie! Exactement ce que je cherchais.
Pedro Ferreira
Près de deux ans plus tard, A2 Hosting est toujours l'un des très rares fournisseurs d'hébergement prenant officiellement en charge Node.js sur leurs serveurs partagés. Un guide de démarrage récent peut être trouvé ici
Dalie
1
réagit-il et le front-end fonctionne-t-il bien sur le plan d'hébergement du nœud partagé js? toute idée
Samkit Shah
A écrit un blog sur le même. medium.com/@pampas93/…
Abhijit S
2

Vous devriez rechercher une société d'hébergement qui offre une telle fonctionnalité, mais l'hébergement standard simple statique + PHP + MySQL ne vous permettra pas d'utiliser node.js.

Vous devez soit trouver un hébergement conçu pour node.js, soit acheter un serveur privé virtuel et l'installer vous-même.

Marek
la source
voulez-vous dire qu'il n'est pas possible d'héberger l'application Node.js en utilisant l'hébergement partagé
quelque
3
@somesh C'est possible - voyez ma réponse.
niutech
C'est une bonne astuce, mais gardez à l'esprit que de nombreux fournisseurs d'hébergement partagé tueront ce processus et le considéreront comme une mauvaise utilisation d'un compte d'hébergement partagé ...
Tiago
techniquement possible, comme l'a dit @niutech, mais je ne considérerais certainement pas que la production est sûre, un autre collègue (ne peut pas mentionner plus d'un utilisateur) a raison, je pense que la plupart des fournisseurs d'hébergement tueront le processus de nœud ou vous manqueriez de temps de cycle du processeur très bientôt
Marek