Foros Club Delphi

Foros Club Delphi (https://www.clubdelphi.com/foros/index.php)
-   Python (https://www.clubdelphi.com/foros/forumdisplay.php?f=46)
-   -   Python en hospedaje compartido (shared hosting) (https://www.clubdelphi.com/foros/showthread.php?t=79633)

D-MO 24-07-2012 20:25:00

Python en hospedaje compartido (shared hosting)
 
¿Quién dijo que python no funciona en cuentas compartidas?... me animaría a decir que la mayoría de empresas de hospedaje web usan el mix [linux/unix] + apache + php + mysql, por lo que en los primeros dos componentes tenemos lo que necesitamos: Linux/Unix + apache.

¿Pero porqué esos dos?... ¿y python?
  • Linux/Unix
    Python es un elemento indispensable en estas distribuciones, así que no hay distribución que no incluya un interprete de python. Cualquier distribución actual tendrá como mínimo python 2.6... que es mas que suficinete ;).
  • Apache
    Para entornos mas complejos prefiero nginx + uwsgi, pero donde los recursos están limitados podemos utilizar apache + fastcgi (mi favorito en este caso). Fastcgi, aunque no viene habilitado por default en apache, si es algo que cualquier proveedor tendrá habilitado... ¿A caso no han visto en los centros de control (cpanel y amigos) traen una serie de scripts cgi "ready to install"?

Entonces, si tenemos una cuenta con apache en un servidor unix/linux no necesitamos mas.

Cita:

Nota importante
  1. Donde pongo mi script
    Por razones de seguridad, normalmente se delega a una carpeta dedicada para que ejecute los scrips cgi/fastcgi, normalmente es en /public_html/cgi-bin/. Más Información.
    Probablemente algún proveedor permita ejecutar cgi en la raiz (public_html ó www) del dominio, será de ver la documentación del proveedor o consultarles.
  2. Y que extensión lleva
    Algunos proveedores podrán haber limitado a que los scripts cgi terminen con extensión .cgi o .pl... pero a todo esto ¿a caso las extensiones son de algo en linux?... para ello ponemos el shebang al inicio del script que indica que interprete debe ejecutar este script, así que no hay problema si ponemos extensión .py, .cgi .pl ...o incluso .jsp/.aspx si quieren engañar a mas de alguno :D...
    Insisto, la extensión no importa, solo asegurémonos de que el proveedor acepte esa extensión.

Hola Mundo!
Como buenos informáticos, partamos por el Hola Mundo... ¿Qué sería de la travesía por un nuevo lenguaje sin el Hola Mundo?:p

En la documentación de python ¿alguien ha dado una vuelta por allí? encontramos un capítulo dedicado a como usar python en la web, tenemos un código de ejemplo de un script cgi y otro fastcgi, así que partamos primero por el cgi:

Código:

#!/usr/bin/env python
# -*- coding: UTF-8 -*-

# enable debugging
import cgitb
cgitb.enable()

print "Content-Type: text/plain;charset=utf-8"
print

print "Hello World!"

Tomemos este código y guardemos en un archivo en el directorio que permita ejecución cgi (normalmente cgi-bin) dentro de el directorio del dominio. Digamos /public_html/cgi-bin/hello_world.py.

No olvidar que para que el script pueda ser ejecutado, el usuario de apache debe tener permisos de ejecución sobre ese archivo, así que le podemos dar permisos entre 755 y 777.

Ahora vamos con el navegador http://midominio.com/cgi-bin/hello_world.py

Así que quien tenga una cuenta compartida que empiece a probarlo... ¿alguno de los moderadores con acceso al servidor podría hacer la prueba sin tocar nada en apache... solo metiendo el script en el cgi-bin?

Mas adelante les pongo otro HowTo de una configuración mas avanzada para una app real utilizando siempre las cuentas compartidas

Saludos

roman 24-07-2012 21:30:26

Cita:

Empezado por D-MO (Mensaje 438093)
Mas adelante les pongo otro HowTo de una configuración mas avanzada para una app real utilizando siempre las cuentas compartidas

Sólo espero que el más adelante no sea en un año :p.

Ya hice la prueba http://clubdelphi.com/cgi-bin/hello_world.py y atestiguo que funciona tal cual dice D-MO :)

// Saludos

Casimiro Notevi 24-07-2012 22:25:29

Cita:

Empezado por roman (Mensaje 438098)
Ya hice la prueba http://clubdelphi.com/cgi-bin/hello_world.py y atestiguo que funciona tal cual dice D-MO :)// Saludos

Y yo estuve varios días con un tutorial en el que fallaban todos los ejemplos, para sacar el mismo 'hola mundo' :o

roman 24-07-2012 22:32:02

Dime qué tutorial lees y te diré que aprendes :p :D

Ya en serio, ¿cómo eran los ejemplos?

// Saludos

Casimiro Notevi 24-07-2012 22:42:26

La verdad es que cogí el directorio donde tenía todo lo que iba bajando sobre python y django y lo borré :o

roman 24-07-2012 22:58:33

D-MO:

¿Para qué es el cgitb.enable? Porque si omito esas lineas igual sirve:

Código:

#!/usr/bin/env python
# -*- coding: UTF-8 -*-

print "Content-Type: text/plain;charset=utf-8"
print

print "Hello World!"

// Saludos

D-MO 25-07-2012 17:40:24

Cita:

Empezado por roman (Mensaje 438098)
Sólo espero que el más adelante no sea en un año :p.

Ouch!!:o...
Cita:

Empezado por roman (Mensaje 438098)
...y atestiguo que funciona tal cual dice D-MO :)

Gracias por hacer la pública la prueba ;)
Cita:

Empezado por roman (Mensaje 438115)
¿Para qué es el cgitb.enable?

Como dije arriba, el código lo tomé del ejemplo de aquí tal cual, allí dicen:
Cita:

cgitb – Displays nice tracebacks when errors happen in CGI applications, instead of presenting a “500 Internal Server Error” message
Aunque para ser sincero nunca lo he usado pues me ha parecido mas que suficiente los tracebacks que genera django (ver imagen) y con la posibilidad de usar debug_toolbar (ver imagen)


Django Teaceback


Debug Toolbar

Saludos


La franja horaria es GMT +2. Ahora son las 00:59:31.

Powered by vBulletin® Version 3.6.8
Copyright ©2000 - 2024, Jelsoft Enterprises Ltd.
Traducción al castellano por el equipo de moderadores del Club Delphi