PHP e gli script eseguiti tramite CGI (non FastCGI) riguardano solo le cose che funzionano in questo modo. Quasi tutto il resto ha un processo di lunga durata che esegue & risponde alle richieste. Una tipica applicazione Web avrà un server statico (Apache, Nginx ...) davanti, gestendo direttamente le richieste dei client. Per i file statici (Javascript, CSS e così via), invierà semplicemente il file; per le cose che richiedono la tua app per rispondere, passerà la richiesta alla tua applicazione & quindi inoltra la risposta al client.
Un esempio potrebbe essere una semplice installazione Python / Django. Abbiamo Apache in esecuzione sul server. Come parte della nostra configurazione di Apache, stiamo eseguendo mod_wsgi . Il modulo mod_wsgi consente ad Apache di attivare un numero di interpreti Python con lavori a esecuzione prolungata. Quando arriva una richiesta, Apache vede che dovrebbe andare su Python & passa la richiesta a mod_wsgi e mod_wsgi passa la richiesta al tuo già caricato & esecuzione dell'applicazione Django.
Un altro esempio potrebbe essere un'applicazione di Ruby on Rails in esecuzione dietro Nginx e Mongrel. Mongrel è un server web che consente di vivere le applicazioni di Ruby all'interno di esso. È davvero bravo a pubblicare pagine dinamiche, ma è un po 'lento nelle cose statiche, quindi abbiamo configurato Nginx per questo. Nginx serve il contenuto statico (come Apache ha fatto nell'ultimo esempio) ma ogni volta che una richiesta per una delle pagine dinamiche arriva, Nginx agisce semplicemente come un proxy e inoltra la richiesta a Mongrel.
C'è una piccola differenza tra i due casi, ma non vale la pena di approfondire a meno che tu non stia gestendo l'architettura del server per un sito web con volumi elevati.
Una terza installazione arriva con Node.js. Con Node, il server web è la tua applicazione.