So hosten Sie eine Node.Js-Anwendung im Shared Hosting [geschlossen]

110

So hosten Sie eine Node.Js-Anwendung in einem gemeinsam genutzten Hosting

Ich möchte eine node.js-Anwendung in Shared Hosting hosten. Hat jemand eine Referenz oder Dokumentation, auf die er sich beziehen kann?

etwas
quelle
Die Art und Weise, wie ich es durch Ausführen von npm build herausgefunden habe, generiert js-Dateien, die Sie minimieren und dann in Ihre Skript-Tags aufnehmen können. Beispiel beim Bauen mit vuejs oder sogar angle2 cli
Geoff
1
das hat funktioniert - schade, dass ich keine Antwort posten
eddyparkinson
1
@ Dan-Cornilescu kann das wieder geöffnet werden. Es ist wertvoll. Im Superuser wäre es besser. Habe auch eine Antwort gefunden, die ich hinzufügen möchte.
Eddyparkinson
Auf den meisten gemeinsam genutzten Hosts schlägt die Installation von Node und NPM fehl (CentOS wird nicht unterstützt). Hier ist eine Lösung (mit Node v6.2.2) - medium.com/@yatko/…
Yatko

Antworten:

158

Sie können den Server node.js auf einem typischen Shared Hosting mit Linux, Apache und PHP (LAMP) ausführen. Ich habe es erfolgreich installiert, auch wenn NPM, Express und Grunt einwandfrei funktionieren. Folge den Schritten:

1) Erstellen Sie eine neue PHP-Datei auf dem Server mit dem folgenden Code und führen Sie sie aus:

<?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) Installieren Sie auf die gleiche Weise Ihre Knoten-App, z. B. jt-js-sample, mit npm:

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

3) Führen Sie die Node-App von PHP aus:

<?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! Schauen Sie sich die Demo einer Node-App auf PHP Shared Hosting an .

EDIT: Ich habe ein Node.php-Projekt auf GitHub gestartet .

Niutech
quelle
2
und mongoDB auch installieren?
Jsky
3
@jsky Es sollte möglich sein, da Mongodb kein Root benötigt. Folgen Sie einfach der manuellen Installationsanleitung .
Niutech
3
Habe es nicht ausprobiert, sieht aber einfach wunderschön aus !!! ... Gute Arbeit
Gabriel Rodriguez
2
Bitte beachten Sie, dass Sie die Download-URL entsprechend aktualisieren müssen
João Pimentel Ferreira
5
node.php ist sehr gut!
Hemant Sharma
51

Stellen Sie eine Verbindung mit SSH her und befolgen Sie diese Anweisungen, um Node auf einem gemeinsam genutzten Hosting zu installieren

Kurz gesagt, Sie installieren zuerst NVM und dann die Knotenversion Ihrer Wahl mit NVM.

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

Sie starten Ihre Shell neu (schließen Sie Ihre Sitzungen und öffnen Sie sie erneut). Dann Sie

nvm install stable

um zum Beispiel die neueste stabile Version zu installieren. Sie können jede Version Ihrer Wahl installieren. Überprüfen node --versionSie, welche Knotenversion Sie gerade verwenden und nvm listwas Sie installiert haben.

Im Bonus können Sie die Version sehr einfach wechseln ( nvm use <version>)

Wenn Sie über SSH verfügen, benötigen Sie weder PHP noch eine schwierige Problemumgehung.

vinyll
quelle
Hallo, danke für die Antwort. Obwohl ich auf Probleme stoße, heißt es, dass der Knoten nicht gefunden wird, sobald ich die Installation mit nvm durchgeführt habe. Irgendeine Hilfe?
Amit Saxena
Vielleicht sollten Sie stackoverflow.com/a/33874050/328117 versuchen, wenn Sie diesen Knoten nicht gefunden Fehler mit nvm
vinyll
Die meisten Shared Hosting-Anbieter gewähren keinen SSH-Zugriff. Zumindest nicht meins.
coder.in.me
4
Hat perfekt funktioniert !! Vielen Dank
Devin Norgarb
2
@ SyamsoulAzrien Wenn Sie haben nvm:command not found, können Sie dies ausführen: Befehlsource ~/.nvm/nvm.sh
Hans Tiono
12

Ich habe Node.js auf bluehost.com (einem gemeinsam genutzten Server) installiert mit:

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

Dadurch wird die TAR-Datei heruntergeladen, in ein Verzeichnis extrahiert und dieses Verzeichnis in "Knoten" umbenannt, um die Verwendung zu vereinfachen.

dann

./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)

Ich kann jetzt die Befehle verwenden:

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

# ~/node/bin/npm -v
2.10.1

Aus Sicherheitsgründen habe ich mein Knotenverzeichnis in etwas anderes umbenannt.

iiboone.com
quelle
1
Ich habe es npm startin der versucht jt-js-sampleund bin zu mysite.com:5000 gegangen, aber es heißt Seite nicht verfügbar. Muss ich stattdessen zur IP-Adresse gehen?
Zachdyer
Dieser Port ist wahrscheinlich blockiert. Sie sollten den Standard-80-Port verwenden
RicardoE,
~ / node / bin / npm -v gibt eine Fehlermeldung aus: let notifier = require ('update-notifier') ({pkg}) SyntaxError: Unerwarteter Bezeichner bei exports.runInThisContext (vm.js: 69: 16) bei Module ._compile (module.js: 432: 25) bei Object.Module._extensions..js (module.js: 467: 10) bei Module.load (module.js: 349: 32) bei Function.Module._load (module .js: 305: 12) bei Function.Module.runMain (module.js: 490: 10) beim Start (node.js: 123: 16) bei node.js: 1027: 3
codeinprogress
10

A2 Hosting erlaubt node.js auf ihren gemeinsam genutzten Hosting-Konten. Ich kann dafür bürgen, dass ich positive Erfahrungen mit ihnen gemacht habe.

In der KnowledgeBase finden Sie Anweisungen zum Installieren von node.js mit Apache / LiteSpeed ​​als Reverse-Proxy: https://www.a2hosting.com/kb/installable-applications/manual-installations/installing-node-js-on-managed- Hosting-Konten . Das Einrichten der Konfiguration dauert ca. 30 Minuten und funktioniert mit npm, Express, MySQL usw.

Siehe a2hosting.com.

aap
quelle
1
Danke dir! Genau das, wonach ich gesucht habe.
Pedro Ferreira
Fast zwei Jahre später ist A2 Hosting immer noch einer der wenigen Hosting-Anbieter, die Node.js offiziell auf ihren gemeinsam genutzten Servern unterstützen. Eine aktuelle Anleitung für den Einstieg finden Sie hier
Dalie
1
Funktioniert React und Front-End auf dem Hosting-Plan des gemeinsam genutzten Knotens gut? jede Idee
Samkit Shah
Schrieb einen Blog darüber. medium.com/@pampas93/…
Abhijit S
2

Sie sollten nach einem Hosting-Unternehmen suchen, das diese Funktion bietet, aber mit einfachem statischem + PHP + MySQL-Standardhosting können Sie node.js nicht verwenden.

Sie müssen entweder ein für node.js entwickeltes Hosting finden oder einen Virtual Private Server kaufen und selbst installieren.

Marek
quelle
Meinst
3
@somesh Es ist möglich - siehe meine Antwort.
Niutech
Es ist ein cooler Trick, aber denken Sie daran, dass viele Shared Hosting-Anbieter diesen Prozess beenden und den Missbrauch eines Shared Hosting-Kontos in Betracht ziehen ...
Tiago
technisch möglich, wie @niutech sagte, aber ich würde es definitiv nicht als produktionssicher betrachten, ein anderer Kollege (kann nicht mehr als einen Benutzer erwähnen) hat Recht. Ich glaube, die meisten Hosting-Anbieter werden den Knotenprozess beenden, oder Ihnen würde die Prozessorzykluszeit ausgehen sehr bald
Marek