¿Cómo implementar la aplicación nodejs en el servidor php / apache?

Tengo un servidor dedicado en el que actualmente estoy ejecutando 4 sitios web de PHP. El servidor está configurado con apache + nginx. Cada vez que alojo sitios web de php pongo archivos en la carpeta public_html y eso es todo, comienza a ejecutarse. Pero ahora quiero instalar la aplicación nodejs. Estoy confundido sobre cómo manejar el archivo server.js? ¿Y cómo seguir funcionando? Debería usar pm2 o forever para que siga funcionando para siempre en mi host de ubuntu. También cómo ejecutar el sitio web con el nombre de dominio como example.com

En NodeJS, puede usar algo preexistente como Express o básicamente rodar su propio servidor web, lo que hace que suenación de enormes proporciones sea en realidad un simple en nodejs …

var http = require("http"); http.createServer(function(request, response) { response.writeHead(200, {"Content-Type": "text/plain"}); response.write("Hello World"); response.end(); }).listen(3000); 

Forever y PM2 son el mejor lugar para comenzar si desea mantener el servicio en funcionamiento en su servidor. Forever ha existido por más tiempo que PM2, pero creo que PM2 es más rico en funciones que Forever (siempre un poco más simple de usar).

Con respecto a apache o nginx, puede usarlos para reenviar solicitudes a su proceso de nodo. Por defecto, http se ejecuta en el puerto 80, su proceso de apache ya utilizará el puerto 80 de howerver. Lo que recomiendo es ejecutar su aplicación nodejs en otro puerto (por ejemplo 3000) y usar su servidor web existente (apache, ligtthpd, nginx, etc.) como un proxy inverso, he incluido una configuración de ejemplos a continuación.

apache

  ProxyPreserveHost On ProxyPass /api http://localhost:3000/ ProxyPassReverse /api http://localhost:3000/ ServerName localhost  

Lighttpd

 $HTTP["host"] == "example.com" { server.document-root = "/var/www/example.com" $HTTP["url"] =~ "(^\/api\/)" { proxy.server = ( "" => ( ( "host" => "127.0.0.1", "port" => "3000" ) ) ) } } 

nginx

 http { ... server { listen 80; server_name example.com; ... location /api { proxy_set_header Host $host; proxy_set_header X-Real-IP $remote_addr; proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for; proxy_set_header X-Scheme $scheme; rewrite ^/api/?(.*) /$1 break; proxy_pass http://localhost:3000; } ... } } 

En los ejemplos anteriores, cualquier solicitud a http://example.com/api se redireccionaría a su proceso de nodo que se ejecuta en el puerto 3000.

La idea es que utilice el servidor web para entregar sus archivos estáticos (por ejemplo, css) y su proceso de nodo para servir su aplicación.