Jak hostować aplikację Node.Js w hostingu współdzielonym [zamknięte]

110

Jak hostować aplikację Node.Js w hostingu współdzielonym

Chcę hostować aplikację node.js w hostingu współdzielonym. Czy ktoś ma jakieś referencje lub dokumenty, do których mógłby się odwołać?

somesh
źródło
Sposób, w jaki to sobie wyobraziłem, uruchamiając kompilację npm, wygeneruje pliki js, które możesz zminimalizować, a następnie dołączyć do tagów skryptu. Przykład budowania z vuejs lub nawet angular2 cli
Geoff
1
to zadziałało - szkoda, że ​​nie mogę opublikować odpowiedzi ... a2hosting.com/kb/installable-applications/manual-installations/
eddyparkinson
1
@ Dan-Cornilescu można ponownie otworzyć. To jest cenne. Byłoby lepiej w superużytkowniku. Znalazłem również odpowiedź, którą chciałbym dodać.
eddyparkinson
Na większości współdzielonych hostów instalacja Node i NPM zakończy się niepowodzeniem (CentOS nie jest obsługiwany); tutaj jest rozwiązanie (przy użyciu Node v6.2.2) - medium.com/@yatko/ ...
Yatko

Odpowiedzi:

158

Państwo może uruchomić serwer node.js na typowy dzielonego hostingu z Linux, Apache i PHP (LAMP). Z powodzeniem go zainstalowałem, nawet jeśli NPM, Express i Grunt działają dobrze. Wykonaj kroki:

1) Utwórz nowy plik PHP na serwerze z poniższym kodem i uruchom go:

<?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) W ten sam sposób zainstaluj aplikację węzła, np. Jt-js-sample, używając npm:

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

3) Uruchom aplikację node z 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! Obejrzyj prezentację aplikacji node na współdzielonym hostingu PHP .

EDYCJA: Zacząłem projekt Node.php na GitHub .

niutech
źródło
2
i instalujesz też mongoDB?
jsky
3
@jsky Powinno to być możliwe, ponieważ mongodb nie potrzebuje roota. Postępuj zgodnie z instrukcją instalacji .
niutech
3
Nie próbowałem, ale wygląda po prostu pięknie !!! ... Dobra robota
Gabriel Rodriguez
2
Należy pamiętać, powinien zaktualizować pobierania URL odpowiednio
João Ferreira Pimentel
5
node.php jest bardzo dobry!
Hemant Sharma
51

Połącz się z SSH i postępuj zgodnie z tymi instrukcjami, aby zainstalować Node na udostępnionym hostingu

Krótko mówiąc, najpierw instalujesz NVM, a następnie instalujesz wybraną wersję Node z NVM.

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

Uruchom ponownie powłokę (zamknij i ponownie otwórz sesje). Wtedy ty

nvm install stable

aby na przykład zainstalować najnowszą stabilną wersję. Możesz zainstalować dowolną wersję. Sprawdź node --versionwersję węzła, której aktualnie używasz, i nvm listzobacz, co zainstalowałeś.

W bonusie możesz bardzo łatwo zmienić wersję ( nvm use <version>)

Nie ma potrzeby używania PHP ani żadnego trudnego obejścia, jeśli masz SSH.

Vinyll
źródło
Cześć, dzięki za odpowiedź. Chociaż mam kłopoty, mówi, że węzeł nie został znaleziony, gdy wykonuję instalację za pomocą nvm. Jakaś pomoc?
Amit Saxena,
Może powinieneś spróbować stackoverflow.com/a/33874050/328117 jeśli masz tego węzła nie znaleziono błąd z NVM
vinyll
Większość dostawców hostingu współdzielonego nie zapewnia dostępu SSH. Przynajmniej nie mój.
coder.in.me
4
Działało idealnie !! Dzięki
Devin Norgarb
2
@SyamsoulAzrien, jeśli masz nvm:command not found, możesz uruchomić to: poleceniesource ~/.nvm/nvm.sh
Hans Tiono
12

Zainstalowałem Node.js na bluehost.com (serwer współdzielony) przy użyciu:

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

Spowoduje to pobranie pliku tar, wyodrębnienie do katalogu, a następnie zmianę nazwy tego katalogu na nazwę „węzeł”, aby ułatwić korzystanie z niego.

następnie

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

Mogę teraz używać poleceń:

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

# ~/node/bin/npm -v
2.10.1

Ze względów bezpieczeństwa zmieniłem nazwę katalogu węzłów na inną.

iiboone.com
źródło
1
Próbowałem npm startw jt-js-samplei wszedłem do mysite.com:5000, ale okazało się, że strona jest niedostępna. Czy zamiast tego muszę przejść do adresu IP?
zachdyer
ten port jest prawdopodobnie zablokowany, powinieneś użyć standardowego portu 80
RicardoE
~ / node / bin / npm -v wyświetla komunikat o błędzie: let notifier = require ('update-notifier') ({pkg}) SyntaxError: Nieoczekiwany identyfikator w exports.runInThisContext (vm.js: 69:16) w module ._compile (module.js: 432: 25) w Object.Module._extensions..js (module.js: 467: 10) w Module.load (module.js: 349: 32) w Function.Module._load (module .js: 305: 12) w Function.Module.runMain (module.js: 490: 10) podczas uruchamiania (node.js: 123: 16) w node.js: 1027: 3
codeinprogress
10

A2 Hosting zezwala na node.js na ich wspólnych kontach hostingowych. Mogę ręczyć, że mam z nimi pozytywne doświadczenia.

Oto instrukcje w ich bazie wiedzy dotyczące instalowania node.js przy użyciu Apache / LiteSpeed ​​jako odwrotnego serwera proxy: https://www.a2hosting.com/kb/installable-applications/manual-installations/installing-node-js-on-managed- konta-hostingowe . Skonfigurowanie konfiguracji zajmuje około 30 minut i będzie działać z npm, Express, MySQL itp.

Zobacz a2hosting.com.

aap
źródło
1
Dziękuję Ci! Właśnie tego szukałem.
Pedro Ferreira
Prawie dwa lata później A2 Hosting jest nadal jednym z nielicznych dostawców hostingu oficjalnie obsługujących Node.js na swoich serwerach współdzielonych. Najnowszy przewodnik dla początkujących można znaleźć tutaj
Dalie
1
reaguje i front-end działa dobrze na planie hostingu js węzła współdzielonego? dowolny pomysł
Samkit Shah
Napisałem blog na ten sam temat. medium.com/@pampas93/…
Abhijit S
2

Powinieneś poszukać firmy hostingowej, która zapewnia taką funkcję, ale standardowy prosty hosting statyczny + PHP + MySQL nie pozwoli ci używać node.js.

Musisz albo znaleźć hosting przeznaczony dla node.js, albo kupić wirtualny serwer prywatny i zainstalować go samodzielnie.

Marek
źródło
czy to znaczy, że nie można hostować aplikacji Node.js przy użyciu hostingu współdzielonego
somesh
3
@somesh Jest to możliwe - zobacz moją odpowiedź.
niutech
To fajna sztuczka, ale pamiętaj, że wielu dostawców hostingu współdzielonego zabije ten proces i uzna to za niewłaściwe użycie wspólnego konta hostingowego ...
Tiago,
technicznie możliwe, jak powiedział @niutech, ale zdecydowanie nie uważałbym tego za bezpieczne w produkcji, inny kolega (nie może wymienić więcej niż jednego użytkownika) ma rację, uważam, że większość dostawców hostingu zabije proces węzła lub skończy się czas cyklu procesora już niedługo
Marek