È una cattiva pratica eseguire Node.js e Apache in parallelo?

6

Ho un'idea in mente e vorrei sapere se questa è la strada da percorrere per la mia applicazione finale.

Pensa alla mia applicazione come sistema di social networking in cui voglio implementare la funzionalità di chat. Per questo, mi piacerebbe spingere i dati dal server al client. Ho sentito che potrei usare Node.js per questo.

Nel frattempo, desidero un sistema "regolare" per la pubblicazione di aggiornamenti di stato e simili, per i quali mi piacerebbe utilizzare PHP e un server Apache.

L'unico modo in cui posso pensare è che Node.js e Apache siano in parallelo. Ma è questo il modo di andare qui? Penserei che ci sarebbe una soluzione un po 'più ordinata per questo.

    
posta Keelan 21.05.2013 - 17:47
fonte

3 risposte

14

L'esecuzione di diversi processi del server Web in parallelo non è affatto un problema, le persone lo fanno sempre.

Tuttavia, dal momento che solo un processo può mai ascoltare su una determinata porta, non possono entrambi eseguire direttamente sulla porta 80, quindi sarà necessario effettuare la distribuzione in qualche modo. Una soluzione semplice è eseguire l'applicazione Node.js su una porta personalizzata (qualsiasi cosa sopra il 1024 dovrebbe essere un gioco equo, ma prima fai un po 'di ricerche e rendila configurabile), quindi imposta un proxy inverso in apache per passarlo attraverso sulla porta 80 (o 443 se hai bisogno di SSL) per gli URL che dovrebbero andare su Nodo.

Anche il proxy inverso da Node in apache potrebbe essere possibile, e se l'applicazione Node gestisce le chiamate più critiche per le prestazioni, potrebbe o meno essere una soluzione migliore.

Una terza soluzione è quella di servirli entrambi su porte diverse e di eseguire il reverse proxy in un processo separato o anche in una macchina separata. Il vantaggio di questo è che dividere il setup su più server applicativi (ad esempio, scatole dedicate per le parti Node e PHP) in seguito è relativamente banale (ma poi, non è molto più difficile per le altre due soluzioni).

La parte interessante di avere Apache sul lato pubblico è che puoi usare le sue varie funzionalità mature come l'autenticazione HTTP, la riscrittura, SSL, gli host virtuali, la pubblicazione di file statici, ecc., così la parte Node può concentrarsi su l'essenziale. Non c'è bisogno di reinventare la ruota lì.

    
risposta data 21.05.2013 - 18:33
fonte
11

Non c'è una ragione tecnica per cui non potresti farlo. Ho fatto qualcosa di molto simile per un semplice gioco che ho scritto per giocare con Node. Le pagine erano servite da Apache e scritte in PHP, ma poi avevo una tela HTML5 e ho inizializzato un socket sul mio server Node. Sia Apache che Node possono funzionare felici fianco a fianco sullo stesso computer, solo porte diverse.

    
risposta data 21.05.2013 - 18:00
fonte
1

Potresti usare node.js come server:

puoi configurare un server nel nodo, aggiungendo i seguenti moduli:

  • express: server html statico
  • ws: supporto websocket
  • sphp: supporto PHP

È possibile creare un server web semplice e veloce, con websocket che si collega alla porta 80 e che utilizza PHP come linguaggio di scripting lato server. Puoi quasi usare il server di esempio in sphp, così com'è.

Dovrei menzionare che sono l'autore di sphp. Ci sono altre opzioni per l'integrazione di PHP nel nodo.

Si installa npm (Node package manager) sul proprio sistema e quindi si installano i moduli del nodo necessari:
Nella directory del progetto

npm install express ws sphp 

quindi copi example.js e lo modifichi in base alle esigenze.

Vedi esempi di lei: link
Per le basi vedi anche: link

    
risposta data 08.01.2016 - 22:41
fonte

Leggi altre domande sui tag