Como hospedar um aplicativo Node.Js em hospedagem compartilhada [fechado]

110

Como hospedar um aplicativo Node.Js em uma hospedagem compartilhada

Quero hospedar um aplicativo node.js em hospedagem compartilhada. Alguém tem alguma referência ou documentação para consultar?

somesh
fonte
A forma como eu percebi executando o npm build irá gerar arquivos js que você pode minificar e então incluir em suas tags de script. Exemplo ao construir com vuejs ou mesmo angular2 cli
Geoff
1
isso funcionou - pena, não posso postar uma resposta ... a2hosting.com/kb/installable-applications/manual-installations/…
eddyparkinson
1
@ Dan-Cornilescu pode ser reaberto. É valioso. Seria melhor no superusuário. Também encontrei uma resposta que gostaria de acrescentar.
eddyparkinson
Na maioria dos hosts compartilhados, a instalação do Node e do NPM falhará (CentOS não suportado); aqui está uma solução (usando o Node v6.2.2) - medium.com/@yatko/…
Yatko

Respostas:

158

Você pode executar o servidor node.js em uma hospedagem compartilhada típica com Linux, Apache e PHP (LAMP). Eu instalei com sucesso, mesmo com NPM, Express e Grunt funcionando bem. Siga os passos:

1) Crie um novo arquivo PHP no servidor com o seguinte código e execute-o:

<?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) Da mesma forma, instale seu aplicativo de nó, por exemplo, jt-js-sample, usando npm:

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

3) Execute o aplicativo node do 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! Dê uma olhada na demonstração de um aplicativo de nó em hospedagem compartilhada em PHP .

EDIT: eu comecei um projeto Node.php no GitHub .

Niutech
fonte
2
e instalar o mongoDB também?
jsky
3
@jsky Deve ser possível, já que mongodb não precisa de root. Basta seguir o guia de instalação manual .
niutech
3
Ainda não experimentei, mas parece lindo !!! ... Bom trabalho
Gabriel Rodriguez
2
Informamos que você deve atualizar o URL de download de acordo
João Pimentel Ferreira
5
node.php é muito bom!
Hemant Sharma
51

Conecte-se com SSH e siga estas instruções para instalar o Node em uma hospedagem compartilhada

Resumindo, primeiro você instala o NVM, depois instala a versão do Node de sua escolha com o NVM.

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

Reinicie seu shell (feche e reabra suas sessões). Então você

nvm install stable

para instalar a última versão estável, por exemplo. Você pode instalar qualquer versão de sua escolha. Verifique node --versiona versão do nó que você está usando atualmente e nvm listveja o que você instalou.

No bônus, você pode mudar de versão facilmente ( nvm use <version>)

Não há necessidade de PHP ou qualquer outra alternativa complicada se você tiver SSH.

vinil
fonte
Oi, obrigado pela resposta. Embora eu esteja tendo problemas, diz que o nó não foi encontrado, uma vez que eu faço a instalação usando nvm. Qualquer ajuda?
Amit Saxena
Talvez você deva tentar stackoverflow.com/a/33874050/328117 se você tiver esse erro de nó não encontrado com nvm
vinyll
A maioria dos provedores de hospedagem compartilhada não fornece acesso SSH. Pelo menos não meu.
coder.in.me
4
Funcionou perfeitamente !! Obrigado
Devin Norgarb
2
@SyamsoulAzrien se você nvm:command not foundtiver, pode executar este: commandsource ~/.nvm/nvm.sh
Hans Tiono
12

Instalei o Node.js em bluehost.com (um servidor compartilhado) usando:

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

Isso fará o download do arquivo tar, extrairá para um diretório e então renomeará esse diretório com o nome 'nó' para torná-lo mais fácil de usar.

então

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

Agora posso usar os comandos:

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

# ~/node/bin/npm -v
2.10.1

Por razões de segurança, renomeei meu diretório de nó para outra coisa.

iiboone.com
fonte
1
Tentei npm startno jt-js-samplee fui para mysite.com:5000 mas dizia que a página não está disponível. Eu preciso ir para o endereço IP em vez disso?
zachdyer
essa porta provavelmente está bloqueada, você deve usar a porta 80 padrão
RicardoE
~ / node / bin / npm -v me dá um erro dizendo: let notifier = require ('update-notifier') ({pkg}) SyntaxError: Identificador inesperado em exports.runInThisContext (vm.js: 69: 16) no módulo ._compile (module.js: 432: 25) em Object.Module._extensions..js (module.js: 467: 10) em Module.load (module.js: 349: 32) em Function.Module._load (module .js: 305: 12) em Function.Module.runMain (module.js: 490: 10) na inicialização (node.js: 123: 16) em node.js: 1027: 3
codeinprogress
10

A2 Hosting permite node.js em suas contas de hospedagem compartilhadas. Posso garantir que tive uma experiência positiva com eles.

Aqui estão as instruções em seu KnowledgeBase para instalar node.js usando Apache / LiteSpeed ​​como um proxy reverso: https://www.a2hosting.com/kb/installable-applications/manual-installations/installing-node-js-on-managed- contas de hospedagem . Leva cerca de 30 minutos para definir a configuração e funcionará com npm, Express, MySQL, etc.

Veja a2hosting.com.

aap
fonte
1
Obrigado! É mesmo o que eu procurava.
Pedro Ferreira
Quase dois anos depois, a A2 Hosting ainda é um dos poucos provedores de hospedagem que oferecem suporte oficial ao Node.js em seus servidores compartilhados. Um guia de
introdução
1
reage e o front end funciona bem no plano de hospedagem js de nó compartilhado? alguma ideia
Samkit Shah
Escreveu um blog sobre o mesmo. medium.com/@pampas93/…
Abhijit S
2

Você deve procurar uma empresa de hospedagem que ofereça esse recurso, mas a hospedagem simples padrão estática + PHP + MySQL não permitirá que você use node.js.

Você precisa encontrar uma hospedagem projetada para node.js ou comprar um servidor virtual privado e instalá-lo você mesmo.

Marek
fonte
você quer dizer que não é possível hospedar o aplicativo Node.js usando hospedagem compartilhada
somesh
3
@somesh É possível - veja minha resposta.
Niutech
É um truque legal, mas tenha em mente que muitos provedores de hospedagem compartilhada irão matar esse processo e considerá-lo um uso indevido de uma conta de hospedagem compartilhada ...
Tiago
tecnicamente possível, como @niutech disse, mas eu definitivamente não consideraria a produção segura, outro colega (não posso mencionar mais de um usuário) está certo, acredito que a maioria dos provedores de hospedagem matará o processo de nó ou você ficaria sem tempo de ciclo do processador muito em breve
Marek de