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?


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 .


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.


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.


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.


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.


¿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
Al usar nuestro sitio, usted reconoce que ha leído y comprende nuestra Política de Cookies y Política de Privacidad.
Licensed under cc by-sa 3.0 with attribution required.