Python en Apache · 3 min read · Nov 12, 2025

Incrustando Python en Apache2 con mod_python (Debian/Ubuntu, Fedora/CentOS, Mandriva, OpenSUSE)

Incrustando Python en Apache2 con mod_python (Debian/Ubuntu, Fedora/CentOS, Mandriva, OpenSUSE)

Versión 1.0
Autor: Falko Timme

Este tutorial muestra cómo instalar y usar mod_python en varias distribuciones (Debian/Ubuntu, Fedora/CentOS, Mandriva, OpenSUSE) con Apache2. mod_python es un módulo de Apache que incrusta el intérprete de Python dentro del servidor. Te permite escribir aplicaciones web en Python que se ejecutarán muchas veces más rápido que el CGI tradicional y tendrán acceso a características avanzadas como la capacidad de mantener conexiones a bases de datos y otros datos entre solicitudes y acceso a los internos de Apache.

¡No emito ninguna garantía de que esto funcione para ti!

1 Nota Preliminar

He probado esto en sistemas con la dirección IP 192.168.0.100 donde Apache2 ya está instalado.

2 Debian/Ubuntu

Para Debian/Ubuntu, consulta este tutorial: Incrustando Python en Apache2 con mod_python (Debian Etch).

Para Usuarios de ISPConfig

En ese tutorial habilito mod_python en el vhost predeterminado, lo que no tiene efecto en otros vhosts, así que si estás usando ISPConfig (a partir de la versión 2.2.24) puedes usar esa configuración sin ningún cambio y aún habilitar/deshabilitar mod_python en una base por sitio web. ISPConfig utiliza el Publisher Handler - no soporta el PSP Handler.

3 Fedora 9/CentOS 5.2

3.1 Instalando mod_python

Para instalar mod_python, simplemente ejecutamos:

yum install mod_python

3.2 Configurando Apache

Ahora debemos configurar Apache para que pueda manejar archivos Python. Hay dos formas de hacerlo. La primera (y predeterminada) es usar el Publisher Handler. Te permite escribir scripts de Python puros con la extensión .py que serán interpretados por Apache. La segunda forma es el PSP Handler. PSP significa Python Server Pages. Te permite incrustar código Python directamente en código HTML, similar a PHP. Los archivos PSP tienen la extensión .psp.

3.2.1 El Publisher Handler

Para habilitar el Publisher Handler, debemos editar la configuración de mod_python que puedes encontrar en /etc/httpd/conf.d/python.conf. Este archivo contiene muchos ejemplos - hacemos una copia de seguridad de él y creamos ese archivo nuevamente desde cero. Estoy usando la raíz del documento predeterminada de Fedora/CentOS /var/www/html aquí en la directiva - ajusta esto a tus necesidades. Las líneas importantes son AddHandler mod_python .py y PythonHandler mod_python.publisher:

cp /etc/httpd/conf.d/python.conf /etc/httpd/conf.d/python.conf_orig  
cat /dev/null > /etc/httpd/conf.d/python.conf  
vi /etc/httpd/conf.d/python.conf

| LoadModule python_module modules/mod_python.so Options Indexes FollowSymLinks MultiViews AllowOverride None Order allow,deny allow from all AddHandler mod_python .py PythonHandler mod_python.publisher PythonDebug On |

Por favor nota: si usas ISPConfig (a partir de la versión 2.2.24) en el servidor, por favor omite la parte en el archivo anterior ya que eso habilitaría mod_python globalmente para el directorio en cuestión. En ISPConfig puedes habilitar mod_python en una base por sitio web, lo que te da más control sobre si un sitio web puede usar mod_python o no.

Reinicia Apache después:

/etc/init.d/httpd restart

Ahora creamos un pequeño script de prueba en Python (por ejemplo, /var/www/html/test.py) con código Python puro en él…

vi /var/www/html/test.py

| def index(req): return "Prueba exitosa"; |

… y llámalo en un navegador (por ejemplo, http://192.168.0.100/test.py). Si todo va bien, debería mostrar Prueba exitosa en tu navegador.

3.2.2 El PSP Handler

Para habilitar el PSP Handler, debemos editar la configuración de mod_python que puedes encontrar en /etc/httpd/conf.d/python.conf. Este archivo contiene muchos ejemplos - hacemos una copia de seguridad de él y creamos ese archivo nuevamente desde cero. Estoy usando la raíz del documento predeterminada de Fedora/CentOS /var/www/html aquí en la directiva - ajusta esto a tus necesidades. Las líneas importantes son AddHandler mod_python .py y PythonHandler mod_python.psp:

cp /etc/httpd/conf.d/python.conf /etc/httpd/conf.d/python.conf_orig  
cat /dev/null > /etc/httpd/conf.d/python.conf  
vi /etc/httpd/conf.d/python.conf

| LoadModule python_module modules/mod_python.so Options Indexes FollowSymLinks MultiViews AllowOverride None Order allow,deny allow from all AddHandler mod_python .psp PythonHandler mod_python.psp PythonDebug On |

Por favor nota: si usas ISPConfig (a partir de la versión 2.2.24) en el servidor, por favor omite la parte en el archivo anterior ya que eso habilitaría mod_python globalmente para el directorio en cuestión. En ISPConfig puedes habilitar mod_python en una base por sitio web, lo que te da más control sobre si un sitio web puede usar mod_python o no. También ten en cuenta que ISPConfig no soporta el PSP Handler - utiliza el Publisher Handler.

Reinicia Apache después:

/etc/init.d/httpd restart

Ahora creamos un pequeño script de prueba PSP (por ejemplo, /var/www/html/test.psp) con código HTML y Python en él…

vi /var/www/html/test.psp

|

<% req.write("¡Hola!") %>

|

… y llámalo en un navegador (por ejemplo, http://192.168.0.100/test.psp). Si todo va bien, debería mostrar ¡Hola! en tu navegador.

Share: X/Twitter LinkedIn

Recibe nuevas publicaciones en tu bandeja de entrada.

No spam. Cancela la suscripción en cualquier momento.