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?
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?
Antworten:
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 .
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 --version
Sie, welche Knotenversion Sie gerade verwenden und nvm list
was 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.
nvm:command not found
, können Sie dies ausführen: Befehlsource ~/.nvm/nvm.sh
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.
npm start
in der versucht jt-js-sample
und bin zu mysite.com:5000 gegangen, aber es heißt Seite nicht verfügbar. Muss ich stattdessen zur IP-Adresse gehen?
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.
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.