Instalar PostgreSQL 8.3 en CentOS desde Yum


Trabajar con servidores Linux, muchas veces comporta trabajar con CentOS. CentOS es una distribución de Linux muy orientada a servidores corporativos y ofrece un rendimiento muy alto en una amplia gama de entornos.

Para trabajar con este sistema es mejor estar habituado al trabajo con el gestor de paquetes de Red Hat (RPM) y Yum, sino tendremos que buscar información sobre como manipular los repositorios y encontrar el software necesario para nuestras aplicaciones. En el siguiente artículo intentaré detallar como instalar un servidor de bases de datos PostgreSQL 8.3 en un CentOS 5.2 (mis pruebas se han realizado en una instancia de Amazon EC2 con una imagen de CentOS 5.2 proporcionada por RightScale).

Desactivar los repositorios por defecto de CentOS

Para poder instalar la versión 8.3 de PostgreSQL tenemos que deshabilitar los repositorios de PostgreSQL que vienen con nuestro sistema operativo. Si no hicieramos este paso es posible que sólo consiguiéramos instalar la vesión que proporcionan los paquetes de la distribución en cuestión.

Para desactivar dichos repositorios debemos editar el fichero /etc/yum.repos.d/CentOS-Base.repo. Yo lo hago con Nano porque me parece un editor más ligero que otros pero el editor cada uno prefiere el suyo:
$> nano /etc/yum.repos.d/CentOS-Base.repo
Y en las secciones base y updates tenemos que excluir PostgreSQL, Para ello añadiremos exclude=postgresql* al final de cada sección. Dichas secciones deben acabar pareciendose a lo siguiente:
[base]
name=CentOS-$releasever - Base
mirrorlist=http://mirrorlist.centos.org/?release=$releasever&arch=$basearch&rep$
#baseurl=http://mirror.centos.org/centos/$releasever/os/$basearch/
gpgcheck=1
gpgkey=http://mirror.centos.org/centos/RPM-GPG-KEY-CentOS-5
exclude=postgresql*

[updates]
name=CentOS-$releasever - Updates
mirrorlist=http://mirrorlist.centos.org/?release=$releasever&arch=$basearch&rep$
#baseurl=http://mirror.centos.org/centos/$releasever/updates/$basearch/
gpgcheck=1
gpgkey=http://mirror.centos.org/centos/RPM-GPG-KEY-CentOS-5
exclude=postgresql*

Añadir los repositorios de PostgreSQL 8.3

Una vez desactivados los repositorios por defecto debemos definir los nuevos repositorios. Para ello utilizaremos los RPM de la página de repositorios de PostgreSQL. En la página copiaremos en enlace de la última versión de la rama 8.3 y iremos a la línea de comandos:
$> cd /tmp
$> wget http://yum.pgsqlrpms.org/reporpms/8.3/pgdg-centos-8.3-6.noarch.rpm
$> rpm -ivh pgdg-centos-8.3-6.noarch.rpm

NOTA: Recuerda que debes cambiar la URL de descarga del paquete RPM por la que corresponda en el momento que realices la operación.

Instalar el servidor de base de datos

Una vez activados los repositorios tenemos que instalar el servidor de base de datos:
$> yum install postgresql postgresql-server
Es posible que en este paso nos de un problema de librerías por culpa de un paquete llamado apr-util. En este caso deberemos instalar primero este paquete (por separado) y luego volver a lanzar la instalación del servidor:
$> yum install apr-util
$> yum install postgresql postgresql-server

La solución al problema de dependencias no debería reproducirse si instalamos el servidor de bases de datos en estos dos pasos.

Arrancar el servidor y habilitar conexiones remotas

Para arrancar el servidor seguiremos los pasos siguientes:
$> service postgresql initdb
$> service postgresql start

Con esto ya tendremos el servidor de base de datos arrancado y aceptando conexiones en local, pero no podremos acceder al servidor desde conexiones remotas. Para habilitar las conexiones remotas debemos asegurarnos que no hay ningún tipo de bloqueo que no sea el del servidor Postgre, modificar dos ficheros y reiniciar el servicio. El primer fichero que vamos a modificar es /var/lib/pgsql/data/pg_hba.conf.

En pg_hba.conf se tiene que dar acceso a la red desde la que vamos a acceder (dirección IP), en el ejemplo vamos a usar 0.0.0.0/0 pero se debería cambiar por nuestra dirección para tener un control más estricto. Para dar acceso a una red añadiremos los siguiente al fichero:
host all all 0.0.0.0/0 trust

El segundo fichero que debemos modificar es /var/lib/pgsql/data/postgresql.conf. En este debemos buscar la línea que pone:
listen_addresses='localhost'
Y poner:
listen_addresses='*'

Una vez realizados estos cambios se tiene que reiniciar el servicio:
$> /etc/init.d/postgresql restart

En teoria, cuando el servicio arranque de nuevo debería ser posible establecer conexiones remotas al servidor con el usuario postgres y el password que le corresponda. En caso de que no se haya definido password para dicho usuario, éste se puede setear de forma manual. Como usuario ROOT ejecutamos el siguiente comando:
passwd postgres
El sistema nos pedirá que introduzcamos dos veces el password y listo! Espero que les sirva de ayuda.

, , , ,

  1. #1 by Diego Menendez on 09/10/2010 - 3:33 pm

    Excelente artículo!

    Todo me funcionó sin problemas.

    Saludos,

  2. #2 by Oscar on 23/11/2010 - 5:07 pm

    Gràcies ha estat de gran ajuda.

  3. #3 by Carlos Martinez on 29/07/2011 - 12:43 am

    Simple y eficiente.
    Sin tanto rodeo directo al grano.
    Funciono sin problemas, sólo instale el repo y el certificado de forma manual (por costumbre) pero es un detalle.
    Gracias.

(will not be published)