2015-09-16 37 views
8

Ho un server dedicato su cui sono attualmente in esecuzione 4 siti Web PHP. Il server è configurato con apache + nginx. Ogni volta che ospita siti Web php, inserisco i file nella cartella public_html e questo è tutto, inizia a funzionare. Ma ora voglio installare l'applicazione nodejs. Sono solo confuso su come gestire il file server.js? e come tenerlo in esecuzione? dovrei usare pm2 o per sempre per tenerlo in esecuzione per sempre sul mio host ubuntu. Inoltre, come eseguire il sito Web con il nome di dominio come example.comCome distribuire l'app nodejs sul server php/apache?

risposta

10

In NodeJS è possibile utilizzare qualcosa di preesistente come express o fondamentalmente eseguire il rollover del proprio server Web, il che dispiacerebbe sembrare scoraggiante in realtà è un semplice nodo ...

var http = require("http"); 

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

Per sempre e PM2 sono il miglior punto di partenza se si desidera mantenere il servizio in esecuzione sul proprio server. Per sempre è stato più lungo di PM2, ma credo che PM2 sia più ricco di funzionalità di Forever (per essere sempre un po 'più semplice da usare).

Per quanto riguarda apache o nginx, è possibile utilizzare quelli per inoltrare le richieste sul processo del nodo. http per impostazione predefinita viene eseguito sulla porta 80, la porta 80 di howerver verrà già utilizzata dal processo Apache. Quello che consiglio è di eseguire l'applicazione nodejs su un'altra porta (ad esempio 3000) e utilizzare il server web esistente (apache, ligtthpd, nginx ecc.) Come proxy inverso, ho incluso un esempio di configurazioni di seguito.

Apache

<VirtualHost example.com:*> 
    ProxyPreserveHost On 

    ProxyPass /api http://localhost:3000/ 
    ProxyPassReverse /api http://localhost:3000/ 

    ServerName localhost 
</VirtualHost> 

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; 
     } 

     ... 
    } 
} 

Negli esempi sopra qualsiasi richiesta a http://example.com/api verrebbe reindirizzato al processo del nodo in esecuzione sulla porta 3000.

L'idea è qui che si utilizza webserver per servire i file statici (ad esempio css) e il processo del nodo per servire l'applicazione.

+0

Okay Ho intenzione di provarlo ora – John

+0

Come faccio questa impostazione e riavvio apache non si avvia. dice test configtest fallito – John

Problemi correlati