Come ospitare un'applicazione Node.Js in hosting condiviso [chiuso]


110

Come ospitare un'applicazione Node.Js in un hosting condiviso

Voglio ospitare un'applicazione node.js in un hosting condiviso. Qualcuno ha riferimenti o documentazione a cui fare riferimento?


Il modo in cui l'ho immaginato eseguendo npm build genererà file js che puoi minimizzare e quindi includere nei tag di script. Esempio quando si costruisce con vuejs o anche angular2 cli
Geoff

1
ha funzionato - peccato non poter pubblicare una risposta ... a2hosting.com/kb/installable-applications/manual-installations/…
eddyparkinson

1
@ Dan-Cornilescu può essere riaperto. È prezioso. Sarebbe meglio in superutente. Ho anche trovato una risposta che vorrei aggiungere.
eddyparkinson

Sulla maggior parte degli host condivisi, l'installazione di Node e NPM non riesce (CentOS non supportato); ecco una soluzione (utilizzando Node v6.2.2) - medium.com/@yatko/…
Yatko

Risposte:


158

È possibile eseguire server di node.js su un tipico hosting condiviso con Linux, Apache e PHP (LAMP). L'ho installato con successo, anche con NPM, Express e Grunt che funzionano bene. Segui i passi:

1) Crea un nuovo file PHP sul server con il seguente codice ed eseguilo:

<?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) Allo stesso modo installa la tua app del nodo, ad esempio jt-js-sample, usando npm:

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

3) Esegui l'app del nodo da 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);

Ecco! Dai un'occhiata alla demo di un'app node su hosting condiviso PHP .

EDIT: ho avviato un progetto Node.php su GitHub .


2
e installare anche mongoDB?
jsky

3
@jsky Dovrebbe essere possibile poiché mongodb non ha bisogno di root. Segui semplicemente la guida all'installazione manuale .
niutech

3
Non l'ho provato, ma sembra semplicemente bellissimo !!! ... Bel lavoro
Gabriel Rodriguez

2
Tieni presente che dovrai aggiornare l' URL di download di conseguenza
João Pimentel Ferreira

5
node.php è molto buono!
Hemant Sharma

51

Connettiti con SSH e segui questi istruzioni per installare Node su un hosting condiviso

In breve, prima installi NVM, poi installi la versione Node di tua scelta con NVM.

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

Riavvia la shell (chiudi e riapri le sessioni). Allora lei

nvm install stable

per installare l'ultima versione stabile, ad esempio. Puoi installare qualsiasi versione di tua scelta. Dai un'occhiatanode --version la versione del nodo che stai attualmente utilizzando e nvm listper vedere cosa hai installato.

In bonus puoi cambiare versione molto facilmente (nvm use <version> )

Non è necessario PHP o qualsiasi soluzione alternativa complicata se si dispone di SSH.


Ciao, grazie per la risposta. Anche se sto riscontrando problemi, dice che il nodo non è stato trovato, una volta eseguita l'installazione utilizzando nvm. Qualsiasi aiuto?
Amit Saxena

Forse dovresti provare stackoverflow.com/a/33874050/328117 se hai quel nodo non trovato errore con nvm
vinyll

La maggior parte dei provider di hosting condiviso non fornisce l'accesso SSH. Almeno non il mio.
coder.in.me

4
Ha funzionato perfettamente !! Grazie
Devin Norgarb

2
@SyamsoulAzrien se hai nvm:command not foundpuoi eseguire questo: comandosource ~/.nvm/nvm.sh
Hans Tiono

12

Ho installato Node.js su bluehost.com (un server condiviso) utilizzando:

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

Questo scaricherà il file tar, lo estrarrà in una directory e quindi rinominerà quella directory con il nome "nodo" per renderlo più facile da usare.

poi

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

Ora posso usare i comandi:

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

# ~/node/bin/npm -v
2.10.1

Per motivi di sicurezza, ho rinominato la mia directory del nodo in qualcos'altro.


1
Ho provato npm startin jt-js-samplee sono andato su miosito.com:5000 ma diceva che la pagina non era disponibile. Devo invece andare all'indirizzo IP?
zachdyer

quella porta è probabilmente bloccata, dovresti usare la porta 80 standard
RicardoE

~ / node / bin / npm -v mi dà un errore dicendo: let notifier = require ('update-notifier') ({pkg}) SyntaxError: Unexpected identifier at exports.runInThisContext (vm.js: 69: 16) at Module ._compile (module.js: 432: 25) in Object.Module._extensions..js (module.js: 467: 10) in Module.load (module.js: 349: 32) in Function.Module._load (module .js: 305: 12) in Function.Module.runMain (module.js: 490: 10) all'avvio (node.js: 123: 16) in node.js: 1027: 3
codeinprogress

10

A2 Hosting consente node.js sui propri account di hosting condiviso. Posso garantire di aver avuto un'esperienza positiva con loro.

Ecco le istruzioni nella loro KnowledgeBase per l'installazione di node.js utilizzando Apache / LiteSpeed ​​come proxy inverso: https://www.a2hosting.com/kb/installable-applications/manual-installations/installing-node-js-on-managed- account di hosting . Occorrono circa 30 minuti per impostare la configurazione e funzionerà con npm, Express, MySQL, ecc.

Vedi a2hosting.com.


1
Grazie! Proprio quello che stavo cercando.
Pedro Ferreira

Quasi due anni dopo, A2 Hosting è ancora uno dei pochissimi provider di hosting che supporta ufficialmente Node.js sui propri server condivisi. Una recente guida
introduttiva

1
reagisce e il front-end funziona bene sul piano di hosting js del nodo condiviso? qualsiasi idea
Samkit Shah

Ha scritto un blog sullo stesso. medium.com/@pampas93/…
Abhijit S

2

Dovresti cercare una società di hosting che fornisca tale funzionalità, ma l'hosting standard semplice statico + PHP + MySQL non ti consente di utilizzare node.js.

Devi trovare un hosting progettato per node.js o acquistare un server privato virtuale e installarlo tu stesso.


vuoi dire che non è possibile ospitare l'applicazione Node.js utilizzando l'hosting condiviso
somesh

3
@somesh È possibile - guarda la mia risposta.
niutech

È un trucco interessante, anche se tieni presente che molti provider di hosting condiviso uccideranno questo processo e lo considereranno un uso improprio di un account di hosting condiviso ...
Tiago

tecnicamente possibile come ha detto @niutech, ma sicuramente non lo considererei sicuro per la produzione, un altro collega (non può menzionare più di un utente) ha ragione, credo che la maggior parte dei provider di hosting ucciderà il processo del nodo o si esaurirà il tempo di ciclo del processore molto presto
Marek
Utilizzando il nostro sito, riconosci di aver letto e compreso le nostre Informativa sui cookie e Informativa sulla privacy.
Licensed under cc by-sa 3.0 with attribution required.