Cómo alojar una aplicación Node.Js en alojamiento compartido [cerrado]

110

Cómo alojar una aplicación Node.Js en un alojamiento compartido

Quiero alojar una aplicación node.js en alojamiento compartido. ¿Alguien tiene alguna referencia o documentación para consultar?

algo
fuente
La forma en que lo imaginé al ejecutar npm build generará archivos js que puede minificar y luego incluir en las etiquetas de su script. Ejemplo al construir con vuejs o incluso angular2 cli
Geoff
1
esto funcionó - lástima que no puedo publicar una respuesta ... a2hosting.com/kb/installable-applications/manual-installations/…
eddyparkinson
1
@ Dan-Cornilescu se puede volver a abrir. Es valioso. Sería mejor en superusuario. También encontré una respuesta que me gustaría agregar.
eddyparkinson
En la mayoría de los hosts compartidos, la instalación de Node y NPM fallará (CentOS no compatible); aquí hay una solución (usando Node v6.2.2) - medium.com/@yatko/…
Yatko

Respuestas:

158

Usted puede ejecutar el servidor Node.js en un típico alojamiento compartido con Linux, Apache y PHP (LAMP). Lo he instalado con éxito, incluso con NPM, Express y Grunt funcionando bien. Sigue los pasos:

1) Cree un nuevo archivo PHP en el servidor con el siguiente código y ejecútelo:

<?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) De la misma manera instale su aplicación de nodo, por ejemplo, jt-js-sample, usando npm:

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

3) Ejecute la aplicación de nodo desde 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! Eche un vistazo a la demostración de una aplicación de nodo en alojamiento compartido PHP .

EDITAR: comencé un proyecto Node.php en GitHub .

niutech
fuente
2
e instalando mongoDB también?
jsky
3
@jsky Debería ser posible ya que mongodb no necesita root. Simplemente siga la guía de instalación manual .
niutech
3
No lo he probado, pero se ve hermoso !!! ... Buen trabajo
Gabriel Rodríguez
2
Tenga en cuenta que debe actualizar la URL de descarga en consecuencia
João Pimentel Ferreira
5
node.php es muy bueno!
Hemant Sharma
51

Conéctese con SSH y siga estas instrucciones para instalar Node en un alojamiento compartido

En resumen, primero instala NVM, luego instala la versión de nodo de su elección con NVM.

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

Reinicia tu shell (cierra y vuelve a abrir tus sesiones). Entonces tú

nvm install stable

para instalar la última versión estable, por ejemplo. Puede instalar cualquier versión de su elección. Verifique node --versionla versión de nodo que está utilizando actualmente y nvm listpara ver qué ha instalado.

Además, puede cambiar de versión muy fácilmente ( nvm use <version>)

No hay necesidad de PHP ni ninguna solución complicada si tiene SSH.

Vinil
fuente
Hola gracias por la respuesta Aunque tengo problemas, dice que el nodo no se encuentra, una vez que hago la instalación usando nvm. ¿Alguna ayuda?
Amit Saxena
Tal vez debería probar stackoverflow.com/a/33874050/328117 si tiene ese error de nodo no encontrado con nvm
vinyll
La mayoría de los proveedores de alojamiento compartido no brindan acceso SSH. Al menos no la mía.
coder.in.me
4
Funcionó perfectamente !! Gracias
Devin Norgarb
2
@SyamsoulAzrien, si tienes nvm:command not found, puedes ejecutar esto: comandosource ~/.nvm/nvm.sh
Hans Tiono
12

Instalé Node.js en bluehost.com (un servidor compartido) usando:

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

Esto descargará el archivo tar, lo extraerá a un directorio y luego cambiará el nombre de ese directorio a "nodo" para que sea más fácil de usar.

luego

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

Ahora puedo usar los comandos:

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

# ~/node/bin/npm -v
2.10.1

Por razones de seguridad, he cambiado el nombre de mi directorio de nodos por otro.

iiboone.com
fuente
1
Probé npm starten el jt-js-sampley fui a mysite.com:5000 pero dicha página no está disponible. ¿Necesito ir a la dirección IP en su lugar?
zachdyer
ese puerto probablemente esté bloqueado, debe usar el puerto 80 estándar
RicardoE
~ / node / bin / npm -v me da un error que dice: let notifier = require ('update-notifier') ({pkg}) SyntaxError: identificador inesperado en export.runInThisContext (vm.js: 69: 16) en el módulo ._compile (module.js: 432: 25) en Object.Module._extensions..js (module.js: 467: 10) en Module.load (module.js: 349: 32) en Function.Module._load (module .js: 305: 12) en Function.Module.runMain (module.js: 490: 10) al inicio (node.js: 123: 16) en node.js: 1027: 3
codeinprogress
10

A2 Hosting permite node.js en sus cuentas de alojamiento compartido. Puedo dar fe de que he tenido una experiencia positiva con ellos.

Aquí hay instrucciones en su KnowledgeBase para instalar node.js usando Apache / LiteSpeed ​​como proxy inverso: https://www.a2hosting.com/kb/installable-applications/manual-installations/installing-node-js-on-managed- cuentas de hosting . Se tarda unos 30 minutos en configurar la configuración y funcionará con npm, Express, MySQL, etc.

Consulte a2hosting.com.

aap
fuente
1
¡Gracias! Justo lo que estaba buscando.
Pedro Ferreira
Casi dos años después, A2 Hosting sigue siendo uno de los pocos proveedores de alojamiento que admiten oficialmente Node.js en sus servidores compartidos. Puede encontrar una guía de introducción reciente aquí
Dalie
1
¿Reacciona y el front-end se ejecuta bien en el plan de alojamiento compartido del nodo js? alguna idea
Samkit Shah
Escribí un blog sobre el mismo. medium.com/@pampas93/…
Abhijit S
2

Debería buscar una empresa de alojamiento que ofrezca dicha función, pero el alojamiento estándar simple estático + PHP + MySQL no le permitirá utilizar node.js.

Necesita encontrar un alojamiento diseñado para node.js o comprar un servidor privado virtual e instalarlo usted mismo.

Marek
fuente
¿Quiere decir que no es posible alojar la aplicación Node.js utilizando un alojamiento compartido
algún momento,
3
@somesh Es posible, vea mi respuesta.
niutech
Es un truco genial, aunque tenga en cuenta que muchos proveedores de alojamiento compartido eliminarán este proceso y lo considerarán un mal uso de una cuenta de alojamiento compartido ...
Tiago
técnicamente posible como dijo @niutech, pero definitivamente no lo consideraría seguro para la producción, otro colega (no puedo mencionar más de un usuario) tiene razón, creo que la mayoría de los proveedores de alojamiento eliminarán el proceso del nodo o se quedará sin tiempo de ciclo del procesador muy pronto
Marek