2010-03-28 7 views
12

Recentemente ho imparato Python. Mi è piaciuto. Volevo solo usarlo per lo sviluppo web. Questo pensiero ha causato tutti i problemi. Ma mi piacciono questi problemi :)mod_cgi, mod_fastcgi, mod_scgi, mod_wsgi, mod_python, FLUP. Non so quanti altri. qual è l'equivalente mod_php?

Proveniente dal mondo PHP dove esiste un solo modo standardizzato. Mi aspettavo lo stesso e ho cercato apache python &.

Setting up Python on Windows/ Apache? dice

Stare lontano da mod_python. Un'idea comune fuorviante è che mod_python è come mod_php, ma per python. Questo è non vero.

Quindi, qual è l'equivalente di mod_php in python?

Ho bisogno piccolo chiarimento su questo How Python web frameworks, WSGI and CGI fit together

CGI, FastCGI e SCGI sono la lingua agnostico. Puoi scrivere script CGI in Perl, Python, C, bash o persino Assembly :). Quindi, suppongo che mod_cgi, mod_fastcgi, mod_scgi siano i corrispondenti moduli apache. Destra?

WSGI è una sorta di ottimizzato/miglioramento insorta una versione efficiente specificatamente progettata solo per linguaggio Python. Per poter utilizzare questo mod_wsgi è un modo per andare. destra?

Questo lascia fuori mod_python. Quindi cos'è?

Apache -> mod_fastcgi -> FLUP (tramite protocollo CGI) -> Django (tramite protocollo WSGI) Flup è un altro modo di correre con WSGI per qualsiasi server web che può parlare fcgi, SCGI o AJP

Cos'è il FLUP? Che cos'è AJP? Come è arrivato Django nella foto?

Queste domande sollevano dubbi su PHP. Come sta attualmente funzionando? Che tecnologia sta usando? mod_php & mod_python quali sono le differenze?

In futuro, se voglio usare Perl o Java, dovrò nuovamente confondermi? Gentilmente qualcuno può spiegare le cose chiaramente e dare un'immagine completa a .

risposta

2

mod_python è la più come mod_php in quello che fa (cioè cerca di fare tutto). Non è necessariamente una buona cosa e non raccomanderei di scrivere applicazioni alle interfacce mod_python native oggi.

WSGI è una sorta di ottimizzazione/miglioramento InShort una versione efficiente specificamente progettato per Python

La differenza è WSGI è definito nel linguaggio Python stesso: specifica quali oggetti e valori il codice riceverà . [S | Fast] I CGI sono più interessati ai byte sul filo.

Scrivendo la propria applicazione nello standard WSGI (direttamente o utilizzando un framework che la supporta), si separano i problemi di scrittura e distribuzione dell'applicazione.

Per utilizzare questo mod_wsgi è una strada da percorrere. destra?

E 'un modo per andare, e sicuramente una buona scelta per gli utenti Apache, ma lontano dalla sola. Scrivi su WSGI e puoi distribuirlo in una vasta gamma di ambienti, inclusi [S | Fast] CGI e mod_python.

6

Non esiste un equivalente esatto di mod_php nel mondo Python.

  • FastCGI, SCGI e AJP eseguono l'app Web come processo separato (daemon) e passano messaggi tra il server Web e esso.
  • mod_python viene utilizzato per incorporare il codice Python nel processo httpd durante una qualsiasi delle fasi della richiesta.
  • mod_wsgi può eseguire codice Python in un demone o in modalità incorporata.
  • CGI è un protocollo che esegue uno script/programma ogni volta che viene effettuata una richiesta.
  • FLUP è un set di adattatori che è possibile utilizzare per convertire una di queste interfacce in un'altra.
4

mod_python è l'equivalente più vicino di mod_php, ma questo non significa che mod_python soddisferà le tue esigenze. Per ogni linguaggio di programmazione devi enumerare tutte le opzioni possibili e scegliere quello che ti servirà.

Per PHP, hai mod_php e mod_cgi, ma da questo due mod_cgi è inferiore in quasi tutti i modi di mod_php, quindi le persone solitamente scelgono quest'ultimo. (Ci sono alcune alternative, come suphp se hai bisogno di maggiore sicurezza, ecc.)

Per Python hai mod_cgi, che eseguirà l'interprete python ogni volta che fai una richiesta. Mod_python ha invece python embedded quindi è solitamente più veloce e più semplice da fare, ma per progetti di grandi dimensioni, o progetti che usano un framework (come DJango), probabilmente vorrai usare mod_wsgi perché è il più adatto alle risorse.

Per rubino è anche possibile utilizzare mod_cgi, ma sarà troppo lento. mod_ruby è anche un'opzione, ma solo per piccoli programmi. mod_fastcgi era solitamente l'opzione per rails/merb e altri framework web basati su ruby, ma sono stati sostituiti da mod_rails e mod_rack, che sono es-friendly. Ma per gli script semplici questi ultimi sono un po 'troppo pesanti.

Per mono (asp.net) si dispone di mod_mono, che di solito è l'unica opzione.

Per java in genere si esegue un server Web Tomcat/Jetty separato e si utilizza mod_proxy.

Ovviamente l'esecuzione di un server Web separato e l'utilizzo di mod_proxy è in genere un'opzione per tutti i framework Web, sebbene sia principalmente adatta al solo processo di sviluppo. Per ambienti di produzione si deve scegliere carefuly l'opzione migliore (quella che è la maggior parte delle risorse-friendly) il framework (Django, rotaie, asp.net, ecc.) Deve

10

Il modo standard per distribuire un'applicazione Python sul Web è tramite WSGI. In questi giorni non c'è motivo di usare qualcos'altro.

mod_wsgi è il modulo Apache che supporta WSGI.Altri server Web avranno nomi diversi per i loro moduli WSGI.

+1

+1 Grazie. Questa è una risposta breve e puntuale a "Quale usare?" – claws

Problemi correlati