Cómo usar Python como lenguaje de servidor desde una perspectiva PHP

11

Solo conozco la programación del lado del servidor con PHP. Para mí, escribo algo index.phpy llamo http://localhost/index.phpy veo los resultados del script PHP. He estado usando CakePHP y entiendo que hay algo que puede hacer con la reescritura de URL, pero en mi opinión, existe una relación uno a uno entre las URL y los archivos PHP en el servidor.

Ahora hago mucho con Python, pero solo utilidades de línea de comandos. Me gustaría usar Python en lugar de PHP para mi próximo proyecto. Hasta ahora, me dijeron mod_pythonque tenía que usar un marco como Pylons o Twisted o incluso Django para obtener cualquier salida. Otros han dicho que solo tengo print()un encabezado HTTP y luego el script saldría como si estuviera usando PHP.

Me gustaría escribir algo que básicamente solo tome una lista de directorio y lo haga bonito, para que pueda acceder a un montón de archivos PDF desde un navegador móvil. Sé cómo hacer esto con PHP, sé cómo crear un script de Python que generaría el HTML. Simplemente no sé cómo ejecutar ese script cuando lo abro http://localhost/pdfcentral/.

¿Cómo tendría que configurar mi servidor? Se ejecuta en Ubuntu 10.04.

Martin Ueding
fuente
Hay muchas variaciones que puede tomar, pero la forma más sencilla sería colocar el script Python en su cgi-bindirectorio para que el servidor sepa ejecutarlo y, opcionalmente, redirigir un archivo PHP si desea utilizar una ruta diferente. Con respecto al script Python en sí, puede seguir este procedimiento: forrestbao.blogspot.com/2009/08/…
ionFish

Respuestas:

9

mod_pythonya no se está desarrollando activamente. Si bien Apache dice que eso no significa que el proyecto esté muerto,

Actualmente mod_python no está en desarrollo activo. Esto no significa que esté "muerto" como han afirmado algunas personas. Significa claramente que el código y el proyecto son lo suficientemente maduros cuando se requiere muy poco para mantenerlo.

Pero, se sugiere que uno debería usar mod_wsgi en su lugar. Eso es si quieres construir todo desde cero. Lo cual sugiero, no deberías, a menos que estés usando esto como un ejercicio de aprendizaje.

Sería mejor usar un marco web para hacer el trabajo pesado: manejar el enrutamiento, las solicitudes y los gustos

Una lista completa de los marcos web de Python está disponible aquí , pero aquí hay algunos que son populares:

  • Django : se considera el equivalente en Python de Ruby on Rails, y es bastante pesado, por lo que no sería una buena opción para lo que necesita.
  • Frasco : es un microframework. Es decir, es pequeño, no se interpone en su camino y es ideal para proyectos más pequeños que no requieren muchas baterías incluidas.
  • Pirámide : está construida por el mismo grupo de personas que construyó Pilones, lo que no es difunto. Está en algún lugar entre Flask y Django; puede usarse como reemplazo para cualquiera de los dos.
  • Botella : este es otro microframework, y es aún más mínimo que el Flask. Es solo un archivo y no tiene dependencias (si usa el motor de plantillas incorporado) que no sea la biblioteca estándar, por lo que sería una buena opción para lo que desea.
  • Web.py : una vez activado Reddit (que fue reescrito con nuevas herramientas después de ser adquirido).
  • webapp2 : es el marco estándar para Google App Engine (aunque puede usar otros marcos allí).

De estos, recomendaría Flask, ya que lo he usado y no tengo quejas. También tiene muchas extensiones que facilitarían la vida si desea más funciones en su sitio.

Además, necesitaría un motor de plantillas para ensamblar su html. Jinja2 , construido por los mismos tipos que hacen Flask, y es bastante utilizado. Pero viniendo del phpdesarrollo web, puede encontrar el uso de Mako más natural, que también es bastante popular.

Aquí hay una pregunta más completa sobre el desarrollo web de Python: Preguntas frecuentes sobre Python: Webdev .

elssar
fuente
1
Tengo un pequeño proyecto de Flask que ahora se ejecuta con FastCGI y lighttpd en una máquina de prueba, también debería ejecutarse en el servidor. ¡Muchas gracias!
Martin Ueding
1

La pregunta me pareció un poco confusa y, si estoy en lo cierto, ¿supongo que su objetivo principal es enviar archivos a su teléfono móvil con un estilo bonito?

Si eso es cierto, entonces no debería necesitar pasar por tantos bucles para configurar algo.

Apache2 le permite editar el directorio principal de la lista de archivos para que pueda diseñarlo más o menos como quiera.

También hay muchos temas principales listos en línea disponibles, solo busque en Google Theme for Apache2 Directory Listing, por lo que responder tampoco sería difícil.

Aquí hay información sobre cómo cambiar el aspecto predeterminado de Apache

Y aquí hay algunas plantillas listas para usar, hay muchas más ...

Estilo Repos

Recurrente

Índices

Simon Hayter
fuente
Esto parece resolver bastante bien el problema inicial. Pensé que podría usar esto como un primer proyecto para pasar de PHP a Python. Si el proyecto Python se detiene, echaré un vistazo a esto. ¡Gracias!
Martin Ueding
De nada;)
Simon Hayter