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

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/">

Options +ExecCGI

AddHandler cgi-script .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 public_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/~pi/pytest.py.