2010-03-28 16 views
12

Recientemente aprendí Python. Me gustó. Solo quería usarlo para el desarrollo web. Este pensamiento causó todos los problemas. Pero me gustan estos problemas :)mod_cgi, mod_fastcgi, mod_scgi, mod_wsgi, mod_python, FLUP. No sé cuántos más. ¿Qué es el mod_php equivalente?

Viniendo del mundo de PHP donde solo hay una forma estandarizada. Esperaba lo mismo y busqué python & apache.

Setting up Python on Windows/ Apache? dice

Manténgase alejado de mod_python. Una idea engañosa es que mod_python es como mod_php, pero para Python. Eso es no es cierto.

¿Qué es lo que equivale a mod_php en python?

Necesito pequeña aclaración en este caso How Python web frameworks, WSGI and CGI fit together

CGI, FastCGI y SCGI son el lenguaje agnóstico. Puede escribir scripts CGI en Perl, Python, C, bash o incluso en Asamblea :). Por lo tanto, creo que mod_cgi, mod_fastcgi, mod_scgi son sus correspondientes módulos de apache. ¿Derecha?

WSGI es una especie de inserción optimizada/mejorada una versión eficiente específicamente diseñada para el lenguaje python solamente. Para usar este mod_wsgi es un camino por recorrer. ¿derecho?

Esto deja fuera mod_python. ¿Entonces que es?

Apache -> mod_fastcgi -> FLUP (a través del protocolo CGI) -> Django (a través del protocolo WSGI) Flup es otra manera de correr con wsgi para cualquier servidor web que pueda hablar con FCGI, SCGI o AJP

¿Qué es FLUP? ¿Qué es AJP? ¿Cómo apareció Django en la imagen?

Estas preguntas plantean dudas sobre PHP. ¿Cómo se está ejecutando realmente? ¿Qué tecnología está usando? mod_php & mod_python ¿Cuáles son las diferencias?

En el futuro, si quiero usar Perl o Java, ¿tendré que confundirme de nuevo? Amablemente alguien puede explicar las cosas claramente y dar una imagen completa de .

Respuesta

2

mod_python es el más parecido a lo que en mod_php lo hace (es decir, trata de hacer todo). Eso no es necesariamente algo bueno y hoy no recomendaría escribir aplicaciones en las interfaces nativas de mod_python.

WSGI es una especie de optimizados/mejorado enbreve una versión eficiente diseñado específicamente para el pitón

La diferencia está WSGI se define en el lenguaje Python en sí: especifica qué objetos y valora su código recibirá . [S | Fast] CGI están más preocupados con los bytes en el cable.

Al escribir su aplicación en el estándar WSGI (ya sea directamente, o utilizando un marco que lo admita), está desacoplando las preocupaciones de la escritura e implementación de aplicaciones.

Para usar este mod_wsgi es un camino a seguir. ¿derecho?

Se es una forma ir, y sin duda una buena opción para los usuarios de Apache, pero lejos de ser el único. Escriba en WSGI y puede implementar en una amplia gama de entornos, incluidos [S | Fast] CGI y mod_python.

6

No existe un equivalente exacto para mod_php en el mundo de Python.

  • FastCGI, SCGI, y AJP ejecutar la aplicación web como un proceso separado (daemon), y pasan mensajes entre el servidor web y.
  • mod_python se utiliza para incrustar el código Python en el proceso httpd durante cualquiera de las fases de solicitud.
  • mod_wsgi puede ejecutar el código de Python en modo daemon o incrustado.
  • CGI es un protocolo que ejecuta un script/programa cada vez que se realiza una solicitud.
  • FLUP es un conjunto de adaptadores que se puede usar para convertir una de esas interfaces en otra.
4

mod_python es el equivalente más cercano de mod_php, pero esto no significa que mod_python se adapte a sus necesidades. Para cada lenguaje de programación, debe enumerar todas las opciones posibles y elegir la que necesite.

Para PHP, tienes mod_php y mod_cgi, pero a partir de esto, dos mod_cgi son inferiores en casi todos los aspectos a mod_php, por lo que la gente suele elegir este último. (Hay algunas alternativas, como suphp si necesita más seguridad, etc.)

Para Python tiene mod_cgi, que ejecutará el intérprete de python cada vez que realice una solicitud. Mod_python, en cambio, tiene python incrustado, por lo que suele ser más rápido y simple de hacer, pero para proyectos grandes o que están usando un marco (como DJango) probablemente desee usar mod_wsgi porque es el más amigable con los recursos.

Para ruby ​​también tiene la opción de usar mod_cgi, pero eso será demasiado lento. mod_ruby también es una opción, pero solo para programas pequeños. mod_fastcgi solía ser la opción para rails/merb y otros frameworks basados ​​en ruby, pero están reemplazados por mod_rails y mod_rack, que son amigables con las fuentes. Pero para las secuencias de comandos simples, las últimas son demasiado pesadas.

Para mono (asp.net) tiene mod_mono, que suele ser la única opción.

Para Java, normalmente ejecuta un servidor web Tomcat/Jetty separado, y usa mod_proxy.

Por supuesto, ejecutar un servidor web por separado y usar mod_proxy suele ser una opción para todos los frameworks web, aunque es principalmente adecuado solo para el proceso de desarrollo. Para entornos de producción tiene que elegir CUIDADOSAMENTE la mejor opción (la que es la mayor parte de recursos de usar) el marco (Django, rieles, asp.net, etc.) Necesita

10

La manera estándar de implementar una aplicación de Python en la web es a través de WSGI. En estos días no hay ninguna razón para usar cualquier otra cosa.

mod_wsgi es el módulo de Apache que admite WSGI.Otros servidores web tendrán diferentes nombres para sus módulos WSGI.

+1

+1 Gracias. Esta es una respuesta breve y precisa a "¿Cuál usar?" – claws

Cuestiones relacionadas