Perché PHP ha bisogno di Apache o Nginx

1

Sono curioso di sapere il motivo per cui PHP non è in grado di agire come un server delle applicazioni. Il nodo ha il proprio server http e per Python so che hanno un paio di server http basati sul loro WSGI.

PHP ha anche un server di sviluppo, ma perché nessuno lo usa nella produzione.

    
posta Raheel Khan 01.05.2018 - 19:34
fonte

2 risposte

6

Il motivo è storico.

PHP

PHP è nato per fornire un modo semplice per creare pagine web dinamiche. Nel 1994, significherebbe:

  1. Implementa il tuo server, il che significa trascorrere mesi a fare lavori noiosi e complessi,
  2. Oppure usa CGI e fai affidamento su un server Web esistente con supporto CGI, come NCSA httpd.

Non sorprende che, dato l'obiettivo originale di PHP, Rasmus Lerdorf abbia deciso di adottare la seconda opzione, che ha portato PHP a essere compatibile con il successore di NCD httpd-Apache. Da allora, PHP rimane apache-friendly, tanto quanto lo stack LAMP è tra le cose più facili da configurare per un programmatore principiante.

PHP è sempre stato un linguaggio e nient'altro. Non è un server web e non era destinato a essere un server web; invece, si basa su un server Web come vettore di esecuzione principale.

Node.js

Le cose erano molto diverse per Node.js. Nel 2009, Node.js è nato come reazione ai server esistenti, incluso Apache:

Dahl criticized the limited possibilities of the most popular web server in 2009, Apache HTTP Server, to handle a lot of concurrent connections (up to 10,000 and more) and the most common way of creating code (sequential programming), when code either blocked the entire process or implied multiple execution stacks in the case of simultaneous connections.

Fonte: Wikipedia .

In questo contesto, difficilmente Node.js si affida al server Apache (o IIS, o qualsiasi altra cosa). Il modello di elaborazione di Node.js è sostanzialmente diverso, il che rende impossibile l'integrazione con WSGI o CGI.

Se PHP è un linguaggio, Node.js no. Node.js è un ambiente di runtime che consente di eseguire JavaScript al di fuori del contesto di un browser. Ciò rende Apache un concorrente di Node.js. Ti sorprende che IIS non abbia bisogno di Apache per essere eseguito?

Python

Python è molto simile a PHP. Il server SimpleHTTPS che hai citato nella tua domanda non è destinato alla produzione, quindi finisci per ospitare la tua applicazione in Gunicorn o Apache (o in un altro server, a seconda delle tue preferenze), esattamente come fai con PHP.

Stessa logica qui: scrivere un server HTTP completo non è un compito facile, e anche abbastanza inutile: poiché la maggior parte degli amministratori di sistema hanno familiarità con Apache, perché creare qualcosa di nuovo, quando si può semplicemente rendere Python compatibile con WSGI?

    
risposta data 02.05.2018 - 19:49
fonte
4

Scrivere un server web che semplicemente funziona è facile.

Scrivere un webserver che funzioni bene, sia sicuro, sia affidabile ed è in grado di eseguire più richieste in parallelo è molto più difficile.

Nella mia esperienza, è raro vedere uno di questi server web integrati utilizzati per siti Web pubblici.

    
risposta data 01.05.2018 - 19:54
fonte

Leggi altre domande sui tag