Python 2.7 en CentOS 6 con mod_wsgi

python2En este post, veremos cómo instalar una nueva versión de Python (la 2.7.5) manteniendo la versión del sistema (2.6.6 en CentOS 6), forzando al mod_wsgi de Apache a usar la nueva versión en lugar de la de sistema. La idea es no tocar la versión de sistema, puesto que si cambiamos dicha versión, seguramente nos encontraremos más adelante con problema de dependencias en prácticamente cualquier actualización o instalación que queramos hacer con yum.

De esta manera, lo que haríamos sería hacer una segunda instalación de la nueva versión de Python, que no comprometiera la instalación original. En el ejemplo, estamos usando un servidor CentOS 6.4 que por defecto, viene con Python 2.6.6, con un servidor Apache con mod_wsgi 3.2. Lo que queremos, es instalar Python 2.7.5 sin comprometer el Python del sistema, instalar los módulos de Python necesarios para nuestra aplicación, pero únicamente para la nueva versión 2.7.5, y finalmente, reconfigurar mod_wsgi para usar la nueva versión.

Para ello, podríamos seguir los pasos descritos a continuación:

Entorno

Comprobamos los detalles del sistema operativo:

Verificamos la versión de python del sistema:

Y finalmente verificamos qué versión de Python está usando Apache, en el fichero de log del mismo. Si no aparece nada, podemos forzar un reinicio de Apache para que nos muestre los detalles:

Instalación alternativa de Python 2.7.5

A continuación, siguiendo los pasos descritos aquí, instalaremos la nueva versión de Python sin comprometer la actual. Para ello, primeramente nos aseguraremos de contar con las dependencias necesarias:

Descargaremos la última versión de Python de la web oficial, y la instalaremos, usando “make altinstall” en lugar del habitual “make install”, lo cual es la clave para mantener ambas versiones funcionando.

Deberemos tocar las variables de entorno para indicar la ubicación de Python 2.7:

Además de incluir las sentencias en el .profile para que se ejecuten siempre para cada usuario, las ejecutaremos manualmente para tenerlas ya disponibles en la sesión actual:

Finalmente, instalaremos distribute para nuestra nueva versión de Python, para disponer de easy_install  para nuestra nueva versión. Ésto nos instalará /usr/local/bin/easy_install-2.7:

Con easy_install-2.7 podremos obtener pip2.7 fácilmente:

Módulos de Python

En el ejemplo, nuestra aplicación necesitará que Python importe una serie de módulos adicionales, que deberemos ejecutar precisamente con la versión de Python correcta. En el ejemplo, necesitaremos:

  • Redis-py
  • MySQL-python
  • Flask

Para realizar esta tarea, únicamente deberemos bajarnos los sources de las webs oficiales de cada módulo, descomprimirlo con “tar -zxvf” e instalarlo con el siguiente comando, en el que nos aseguramos de instalarlo con la nueva versión de Phyton:

Tras la instalación de los módulos, podremos verificar que los módulos instalados cargan de forma correcta, sin devolver errores:

Reconfiguración de mod_wsgi

En este punto, tendremos Python 2.7.5 instalado en el sistema, sin comprometer la versión de Python actual. Faltará configurar mod_wsgi de Apacha para decirle que use la nueva versión.

Para ello descargaremos la última versión de mod_wsgi de la web oficial:

Descompromiremos e instalaremos mod_wsgi indicándole la versión de Python a usar (si no estamos seguros de dónde está, podemos ejecutar “whereis python”)

En mi caso, ha sido necesario instalar el paquete “httpd-devel.x86_64” para obtener “apxs”, que me ha pedido durante el “.configure”.

Finalmente, reiniciaremos Apache y verificaremos de nuevo, en el archivo error.log, la versión usada:

Con ésto ya tendremos mod_wsgi de Apache configurado para usar Python 2.7.5, manteniendo la versión de Python del sistema y por tanto, sin comprometer la estabilidad del mismo.

 

Fuentes:

http://toomuchdata.com/2012/06/25/how-to-install-python-2-7-3-on-centos-6-2/

http://www.sdkit.com/2011/09/how-to-install-python-27-with-modwsgi_3.html

http://code.google.com/p/modwsgi/wiki/InstallationIssues

https://helloit.es/2011/05/mod_wsgi-en-apache/

Flickr! Foto por Roberto Verzo

Deja un comentario

Tu dirección de correo electrónico no será publicada. Los campos obligatorios están marcados con *