Despabilando la MonoNeurona::Internet es de todos [Inicio] [Regresar]
Server Side \ Manual de instalación de PostgreSQL
Server Side
Manual de instalación de PostgreSQL

Este artículo ha sido consultado en 2,463 ocasiones.

Manual de instalación de PostgreSQL

Por: Dargor <dargor@nediam.com.mx>
Última actualización: 2005-11-07


Nota: El sistema operativo que utilizamos para pruebas fue Debian GNU/Linux.

  1. Descargar del sitio oficial de PostgreSQL http://www.postgresql.org/download/ los fuentes. Al momento de escribir este documento, la versión más reciente de PostgreSQL es la 8.0.4.


  2. Suponiendo que el archivo *.tar.bz2 lo colocamos en /usr/local/, lo desempacamos y descomprimimos:
    SERVER:~# cd /usr/local
    SERVER:/usr/local# bzcat postgresql-8.0.4.tar.bz2 | tar -xvf -


  3. Creamos el Makefile, compilamos y copiamos los ejecutables a los lugares apropiados:
    SERVER:/usr/local# cd postgresql-8.0.4
    SERVER:/usr/local/postgresql-8.0.4# ./configure
    SERVER:/usr/local/postgresql-8.0.4# make
    SERVER:/usr/local/postgresql-8.0.4# make install


    Tip: es recomendable primero hacer un ./configure --help para checar las opciones que podemos especificar como parámetros.

  4. Si no ocurrió algún errror, en este momento ya tenemos instalado PostgreSQL. Para correr el servidor de bases de datos, es requisito indispensable que no corra como root, así que primero crearemos un usuario de sistema llamado postgres:
    SERVER:~# useradd postgres

    Configuramos en el archivo /etc/passwd la línea del usuario que acabamos de crear:
    postgres:x:1001:1001::/var/pgsql/data:/bin/bash

    Le asignamos un password al usuario con el comando passwd y luego agregamos en el archivo /etc/group el grupo que le asignamos en el /etc/passwd (en este caso 1001):
    postgres:x:1001:

  5. El siguiente paso es crear un clúster de bases de datos de PostgreSQL (PostgreSQL database cluster), que contendrá las bases de datos que vayamos creando. Al momento de inicializar un clúster de bases de datos de PostgreSQL se tiene que indicar el directorio donde se desea que se cree. El propietario de ese directorio tiene que ser un usuario que no sea root. Como nosotros indicamos en el /etc/passwd que el HOME del usuario postgres es /var/pgsql/data, siguiendo con esa lógica, vamos a indicar que ése sea el directorio donde se localice el clúster de bases de datos. Entonces creamos el directorio y le cambiamos de propietario:
    SERVER:~# mkdir -p /var/pgsql/data
    SERVER:~# chown postgres /var/pgsql/data


    Ahora nos cambiamos al usuario postgres e inicializamos el clúster de bases de datos con el comando initdb:
    SERVER:~# su - postgres
    postgres@SERVER:~$ /usr/local/pgsql/bin/initdb -D /var/pgsql/data

    The files belonging to this database system will be owned by user "postgres".
    This user must also own the server process.
    
    The database cluster will be initialized with locale C.
    
    fixing permissions on existing directory /var/pgsql/data ... ok
    creating directory /var/pgsql/data/global ... ok
    creating directory /var/pgsql/data/pg_xlog ... ok
    creating directory /var/pgsql/data/pg_xlog/archive_status ... ok
    creating directory /var/pgsql/data/pg_clog ... ok
    creating directory /var/pgsql/data/pg_subtrans ... ok
    creating directory /var/pgsql/data/base ... ok
    creating directory /var/pgsql/data/base/1 ... ok
    creating directory /var/pgsql/data/pg_tblspc ... ok
    selecting default max_connections ... 100
    selecting default shared_buffers ... 1000
    creating configuration files ... ok
    creating template1 database in /var/pgsql/data/base/1 ... ok
    initializing pg_shadow ... ok
    enabling unlimited row size for system tables ... ok
    initializing pg_depend ... ok
    creating system views ... ok
    loading pg_description ... ok
    creating conversions ... ok
    setting privileges on built-in objects ... ok
    creating information schema ... ok
    vacuuming database template1 ... ok
    copying template1 to template0 ... ok
    
    WARNING: enabling "trust" authentication for local connections
    You can change this by editing pg_hba.conf or using the -A option the
    next time you run initdb.
    
    Success. You can now start the database server using:
    
        /usr/local/pgsql/bin/postmaster -D /var/pgsql/data
    or
        /usr/local/pgsql/bin/pg_ctl -D /var/pgsql/data -l logfile start
    

  6. El siguiente paso es inicializar el servidor de bases de datos. Antes de esto, se recomienda agregar estas líneas al archivo .bash_profile del usuario postgres, para evitar el poner toda la ruta del clúster de bases de datos cada vez que inicializamos el servidor de bases de datos, y también para agregar a nuestro path el directorio donde están los comandos de postgres:
    PGDATA=/var/pgsql/data
    PATH=/usr/local/pgsql/bin:$PATH
    export PATH PGDATA
    
    Tip: Recuerda que el HOME que le asignamos al usuario postgres es /var/pgsql/data, así que el archivo .bash_profile deberá de crearse en este directorio.

    Ahora sí, como usuario postgres inicializamos el servidor de bases de datos con el comando pg_ctl:
    postgres@SERVER:~$ pg_ctl start
    postgres@SERVER:~$ pg_ctl start
    postmaster starting
    postgres@SERVER:~$ LOG:  database system was shut down at 2005-11-02 13:21:57 CST
    LOG:  checkpoint record is at 0/A38A34
    LOG:  redo record is at 0/A38A34; undo record is at 0/0; shutdown TRUE
    LOG:  next transaction ID: 544; next OID: 17230
    LOG:  database system is ready
    
    
  7. Listo! ya tenemos PostgreSQL funcionando. Para conectarse a un servidor de base datos PostgreSQL se utiliza el comando psql. Se le pueden pasar muchos parámetros a este comando de la forma psql [OPTIONS]... [DBNAME [USERNAME]]. Para empezar, vamos a conectarnos a nuestro nuevo servidor de bases de datos que acabamos de levantar, y, una vez dentro de la terminal de PostgreSQL, le asignamos un password al usuario privilegiado de postgres:
    postgres@SERVER:~$ psql template1
    
    Welcome to psql 8.0.4, the PostgreSQL interactive terminal.
    
    Type:  \copyright for distribution terms
           \h for help with SQL commands
           \? for help with psql commands
           \g or terminate with semicolon to execute query
           \q to quit
    
    template1=# ALTER USER postgres WITH ENCRYPTED PASSWORD 'secret';
    ALTER USER
    template1=# \q
    
    Tip: template1 es el nombre de una de las dos bases de datos que por default se encuentran en el database cluster. Entre otras cosas, la base template1 se utiliza cuando uno crea una base de datos nueva. Para más información, revisa esta sección de la documentación de PostgreSQL.

  8. Como pudiste deducir del punto anterior, para salir de la terminal de PostgreSQL se utiliza el comando \q. Ahora, estando en la terminal de sistema, vuelve a intentar conectarte (con el comando psql template1). ¿Qué sucedió? ¿Por qué no nos pidió password, si se supone que ya lo habíamos asignado? La respuesta a esto, es que existe un archivo de configuración llamado pg_hba.conf en donde se especifica quién, cómo y a qué puede accesar de nuestro servidor de bases de datos, y por default viene especificado que todas las conexiones locales se acepten sin necesidad de password. Abre este archivo y revísalo detenidamente. Si deseas saber más acerca de cómo funciona la autentificación en PostgreSQL, así como el significado de los campos que conforman los registros de este archivo, revisa esta sección de la documentación de PostgreSQL.

    Por lo pronto, supongamos que sólo queremos aceptar conexiones locales y del host con IP 192.168.1.68 (quizás sea donde se encuentre nuestro webserver con nuestra aplicación en PHP que realiza conexiones con nuestro servidor de bases de datos), y que el método de autentificación sea utilizando el algoritmo de encripción MD5. Entonces, el archivo pg_hba.conf contendría las siguientes líneas:
    # TYPE  DATABASE    USER        CIDR-ADDRESS			    METHOD
    local   all         all						    md5
    host    all         all         192.168.1.68      255.255.255.255   md5
    host    all         all         0.0.0.0           0.0.0.0           reject
    
    Después de haber hecho estos cambios, tenemos que reiniciar el servidor de bases de datos. Vamos a aprovechar también para especificarle el nombre del archivo donde queremos que nos guarde la bitácora (log), ya que anteriormente todos los mensajes se desplegaban en la pantalla y no se guardaban. El nombre del archivo se lo pasamos como parámetro al comando pg_ctl (en este caso el nombre del archivo será log_2005-11-02):
    postgres@PANDRA:~$ pg_ctl stop
    LOG:  received smart shutdown request
    LOG:  shutting down
    waiting for postmaster to shut down....LOG:  database system is shut down
     done
    postmaster stopped
    postgres@PANDRA:~$ pg_ctl start -l log_2005-11-02
    postmaster starting
    

  9. Otro archivo importante que se tiene que revisar es el archivo de configuración postgresql.conf. En este archivo se puede configurar el puerto en el que escuchará el servidor, el número máximo de conexiones que permitirá, el uso de los recursos de sistema y las bitácoras, entre otras cosas más. Las opciones que están comentadas son los valores por default. Para cambiar alguna, se tiene que descomentar la línea y especificar el valor nuevo. Si se hace algún cambio, se tiene que reiniciar el servidor de bases de datos.

    Tip: Para las versiones 7.x de PostgreSQL, si se desea aceptar conexiones TCP/IP, se tiene que especificar en este archivo la línea tcpip_socket = true.

  10. Para conectarse desde otra computadora a nuestro servidor de bases de datos, la computadora debe de tener instalado el cliente de PostgreSQL. Supongamos que la dirección IP del servidor donde acabamos de hacer la instalación de PostgreSQL es 192.168.1.67. Entonces, estando en otra computadora, para conectarnos a nuestro servidor PostgreSQL a la base llamada bd_inventario con el usuario de postgres alopez, lo haríamos de esta manera:

    user@HOSTX:~$ psql -h 192.168.1.67 bd_inventario alopez

    Tip: En lugar de especificar la IP, también se puede utilizar el nombre de dominio del servidor.

Notas finales:
Para conocer más aspectos de la instalación de PostgreSQL, se recomienda revisar detenidamente su documentación. Lo que seguiría sería hacer pruebas de conexión a bases de datos en PostgreSQL desde algún lenguaje de programación como PHP o Python. Por otro lado, para los que les guste trabajar más con interfaz gráfica y no desde shell, revisen la aplicación pgadmin, es como una mezcla entre el Enterprise Manager y el Query Analyzer de MS SQL Server. A otras personas también les gusta utilizar la aplicación phpPgAdmin, que es muy similar en funcionalidad a phpMyAdmin. Para realizar conexiones utilizando ODBC, el driver que yo he utilizado es el psqlODBC.


Fuentes consultadas:



Última actualización: 2007-04-29 10:57:00-05



ir arriba
The Queen is here Mozilla Firefox The Best DataBase CakePHP Framework CSS GNU Hacker