Python Web

Habilitar Python en Apache2

Primero habilitamos los siguientes módulos:

sudo a2enmod cgi cgid

Luego instalamos el soporte:

sudo apt-get install libapache2-mod-python

Modificamos la configuración del servidor para habilitar el soporte para código python.

sudo nano -w /etc/apache2/conf-enabled/serve-cgi-bin.conf

Ahora buscamos la línea </Directory> y añadimos lo siguiente sobre esta

AddHandler cgi-script .py          # add this line (there is a blank between cgi-script and .py)

Activando un directorio cgi para cada usuario

Si por algún motivo tienes habilitado el soporte para varios usuarios de apache, deberás hacer lo siguiente:

Para dar a cada usuario su propio directorio cgi-bin, puede usar una directiva <Directory> para activar cgi en un subdirectorio en particular del directorio home del usuario.

<Directory "/home/*/public_html/">
    AddHandler mod_python .py
    PythonHandler mod_python.cgihandler
    PythonDebug On
</Directory>

Editamos entonces el archivo userdir.conf

sudo nano /etc/apache2/mods-available/userdir.conf 

y añadimos las líneas indicadas.

El archivo debería quedar así:

Todo esto, asumiendo que UserDir está configurado con la declaración public_html, según la instalación de apache para usuarios independientes.

Reiniciamos Apache:

sudo /etc/init.d/apache2 restart

Ahora crearemos un archivo de prueba.

El directorio por defecto para los script cgi es /usr/lib/cgi-bin/, pero como estamos en el ejemplo de multiples directorios usaremos el plublic_html.

nano ~/public_html/pytest.py

Añadimos lo siguiente:

#!/usr/bin/python
import cgi
import cgitb
cgitb.enable()
print 'Content-type: text/html\n\n'
print '<h1>Script de Prueba de Python</h1>'
print '<p>Hola Mundo</p>'

Hacemos el código ejecutable en caso de ser necesario

chmod +x ~/public_html/pytest.py

Ahora para abrir la página lo hacemos desde localhost/pytest.py.