2013-05-21 17 views
9

Prima di oggi, ho fatto una domanda sul Programmatori StackExchange: Is it bad practice to run Node.js and apache in parallel?Aspetti tecnici di esecuzione Node.js e Apache in parallelo

La mia domanda finale può essere considerato un social network in cui voglio avere una funzione di chat e una normale funzione di aggiornamento dello stato.

Per la funzione di chat, mi piacerebbe utilizzare Node.js perché voglio trasferire i dati dal server al client invece di eseguire il polling del server frequentemente. Per l'aggiornamento dello stato, voglio una normale installazione di apache e PHP, perché sono molto più familiare e non vedo perché dovrei usare Node.js per questo.

Tuttavia, ciò significherebbe che dovrei eseguire Node.js e apache in parallelo. Mentre questo è possibile e non considerato cattiva pratica in base alla risposta su Programmers.SE, io vedo un paio di problemi tecnici:

  • avrei bisogno di due porte aperte - potrebbe dare un problema con reti aperte che don 't hanno tutte le porte aperte

  • non posso usare la mia condivisione del server, perché non ho il permesso di aprire una porta lì, quindi mi piacerebbe comprare un VPS

I don Non importa troppo del secondo, più del primo. Quindi non ci sono davvero soluzioni per combinare entrambe le funzionalità su una porta?

Oppure c'è qualche soluzione alternativa per le porte? Posso, ad esempio, reindirizzare subdomain.domain.com:80 a domain.com:x dove x è la porta di Node.js? Sarebbe possibile e risolvere il mio problema? Questa soluzione è stata fornita in this Programmers.SE answer, ma come dovrei implementarla?

risposta

2

Come @TheHippo ha detto che è possibile farlo con mod_proxy di Apache.

nGinx tuttavia può agire più velocemente, soprattutto se si esegue PHP> = 5.4 con FastCGI. nGinx è anche un proxy di inoltro migliore di apache e il suo modello basato sugli eventi è in linea con l'I/O basato sugli eventi del nodo. Con la configurazione dell'elica ciò potrebbe significare migliori prestazioni generali.

Se ci si trova in un ambiente limitato (come server condiviso o nessuna possibilità di modificare il server Web), si consiglia di utilizzare Apache e mod_proxy.

+0

Come possiamo eseguire php sul server nginx allora @Borslav Sabev? –

3

È possibile eseguire il proxy di tutte le richieste su node.js tramite Apache (utilizzando mod_proxy), in questo modo non si avranno problemi con più porte aperte. Ciò consente anche di rimappare tutto in sottocartelle o sottodomini.

Questa non è la soluzione migliore per le prestazioni, ma se si è su uno spazio web condiviso non ha molta importanza. (I server condivisi di solito sono piuttosto lenti e se si ha una base di utenti più ampia è necessario spostarsi prima o poi su un server separato.)

+0

Grazie per la risposta! Non sono autorizzato ad aprire nessuna porta sul mio server condiviso, nemmeno intern, quindi non è possibile (Node.js restituisce qualche errore, non ricordo quale sia esattamente). Ma non mi preoccupo davvero di comprare un VPS. Dici che le prestazioni non sono la soluzione migliore, allora cosa sarebbe meglio? :) o non c'è niente di meglio possibile tranne porte diverse? – Keelan

+0

Se si esegue il proxy tramite Apache, tecnicamente si perderebbero molti dei vantaggi del ciclo degli eventi di node.js. Se acquisti un VPS potresti usare nginx. – TheHippo

+0

Ok! Quindi questa sarebbe un'opzione migliore; potresti approfondire come farlo (o anche un link andrebbe bene)? – Keelan

Problemi correlati