PostgreSQL está disponible en cualquiera de las principales distribuciones de Linux. Existen paquetes RPM og DEB, que se distribuyen con estas distribuciones y que se pueden instalar de la manera por defecto típica en cada distribución.
Si quereis instalar PostgreSQL de esta manera, adelante, es totalmente valida. A mi particularmente, PostgreSQL me gusta compilarlo e instalarlo yo mismo desde las fuentes. De esta manera tengo control absoluto sobre la versión en uso (especialmente importante en sistemas en producción y bases de datos). El resto del artículo se basa en este tipo de instalación.
Se necesitan una serie de programas para poder compilar e instalar PostgreSQL (o cualquier otro programa) desde las fuentes. La mayoria de lo que se necesita se suele instalar por defecto en la mayoria de las distribuciones si instalamos los paquetes relacionados con "Desarrollo y compiladores". Todos estos paquetes se pueden instalar de la manera estandard, rpm og deb en la distribucion de Linux que utiliceis, si por causalidad no los teneis instalados.
Necesitamos:
Primero nos bajamos las fuentes de la versión que vayamos a instalar de Postgresql.org. En nuestro ejemplo la versión 8.2.4 desde el servidor espejo (mirror) de Noruega.
[user@servidor]# cd /tmp/ [user@servidor]# wget ftp://ftp.no.postgresql.org/pub/databases/postgresql/source/v8.2.4/postg... --21:17:45-- ftp://ftp.no.postgresql.org/pub/databases/postgresql/source/v8.2.4/postg... => `postgresql-8.2.4.tar.bz2' Resolving ftp.no.postgresql.org... 158.36.2.10 Connecting to ftp.no.postgresql.org|158.36.2.10|:21... connected. Logging in as anonymous ... Logged in! ==> SYST ... done. ==> PWD ... done. ==> TYPE I ... done. ==> CWD /pub/databases/postgresql/source/v8.2.4 ... done. ==> PASV ... done. ==> RETR postgresql-8.2.4.tar.bz2 ... done. Length: 12,527,803 (12M) (unauthoritative) 100%[===========================================================>] 12,527,803 692.34K/s ETA 00:00 21:18:02 (700.20 KB/s) - `postgresql-8.2.4.tar.bz2' saved [12527803]
A partir de ahora seguimos trabajamos como usuario root.:
[user@servidor]# su - (o sudo -i si estamos en Ubuntu)
Desempaquetamos las fuentes:
[root@servidor]# cd /tmp [root@servidor]# tar xjvf postgresql-8.2.4.tar.bz2 [root@servidor]# cd postgresql-8.2.4/
Ahora tenemos que configurar y compilar PostgreSQL. Existen muchos parametros que podemos utilizar para configurar las caracteristicas disponibles en el software PostgreSQL que vamos a compilar. Teneis una lista completa sobre estos parametros en la sección 14.5.Installation Procedure de la documentación oficial de PostgreSQL.
Para mis servidores en producción, yo suelo configurar PostgreSQL con estos parametros:
[root@servidor]# ./configure --prefix=/usr/local --enable-nls --with-perl --with-python --with-openssl --with-pam --with-ldap
Estos parametros necesitan que tengais instalado en vuestro sistema perl, python, openssl (estos paquetes se pueden instalar de la manera estandard, rpm og deb en la distribución de Linux que utiliceis).
Para instalar en casa no necesitais --with-pam --with-ldap, el resto es bueno tenerlo para tener posibilidad de conectar a vuestra base de datos encriptando el trafico de red, y tener posibilidad de utilizar PL/Perl y PL/Python para crear funciones. Mas información en PL/Perl - Perl Procedural Language y PL/Python - Python Procedural Language
Una vez que el proceso de configuración este terminado sin errores, podemos empezar a compilar las fuentes:
[root@servidor]# gmake
La compilación deberia de terminar sin errores si tenemos instalado todos los paquetes que necesitamos y dependiendo de los parametros de configuración que hayamos definido con ./configure.
Una vez que hayamos terminado de compilar las fuentes, pasamos a instalar todos los programas que forman PostgreSQL:
[root@servidor]# gmake install
Si todo ha salido bien, ahora tendremos todo lo necesario para usar PostgreSQL (servidor, clientes, herramientas, bibliotecas, etc) disponible en nuestro sistema. En nuestro ejemplo todo se habrá instalado bajo /usr/local (como definimos más arriba con --prefix=/usr/local)
Ahora tenemos que inicializar y configurar nuestra instalación de PostgreSQL antes de poder empezar a crear nuetra base de datos.
Lo primero que tenemos que hacer es crear un usuario en el sistema (postgres), que será el dueño en nuestro sistema de los ficheros generados por PostgreSQL, asi como el encargado de ejecutar el motor de base de datos (PostgreSQL se negará a arrancar si intentamos hacerlo como usuario root)
Podeis utilizar vuestro programa preferido para crear nuevos usuarios en vuestra distribución, o ejecutar el siguiente comando:
[root@servidor]# useradd --help
Usage: useradd ...
useradd - create a new user
-c comment Set the GECOS field for the new account
--show-defaults Print default values
--save-defaults Save modified default values
-D binddn Use dn "binddn" to bind to the LDAP directory
-d homedir Home directory for the new user
-e expire Date on which the new account will be disabled
-f inactive Days after a password expires until account is disabled
-G group,... List of supplementary groups
-g gid Name/number of the users primary group
-k skeldir Specify an alternative skel directory
-m Create home directory for the new user
-o Allow duplicate (non-unique) UID
-P path Search passwd, shadow and group file in "path"
-p password Encrypted password as returned by crypt(3)
-u uid Force the new userid to be the given number
-r, --system Create a system account
-s shell Name of the user's login shell
--service srv Add account to nameservice 'srv'
--help Give this help list
--usage Give a short usage message
-v, --version Print program version
Valid services for --service are: files, ldap
[root@servidor]# useradd -m postgres
Hemos creado nuestro usuario postgres sin clave de acceso. Esto significa que la unica manera de convertirse en este usuario es siendo root y utilizando el comando su - postgres.
A continuación nos conectamos como el usuario postgres e inicializamos nuestro "cluster postgresql".
[root@servidor] mkdir -p /var/pgsql/data
[root@servidor] chown postgres /var/pgsql/data
[root@servidor]# su - postgres
[postgres@servidor]# /usr/local/bin/initdb -E utf8 -U postgres -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 en_US.UTF-8.
fixing permissions on existing directory /var/pgsql/data ... ok
creating subdirectories ... ok
selecting default max_connections ... 100
selecting default shared_buffers/max_fsm_pages ... 32MB/204800
creating configuration files ... ok
creating template1 database in /var/pgsql/data/base/1 ... ok
initializing pg_authid ... ok
initializing dependencies ... ok
creating system views ... ok
loading system objects' descriptions ... ok
creating conversions ... ok
setting privileges on built-in objects ... ok
creating information schema ... ok
vacuuming database template1 ... ok
copying template1 to template0 ... ok
copying template1 to postgres ... 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/bin/postgres -D /var/pgsql/data
or
/usr/local/bin/pg_ctl -D /var/pgsql/data -l logfile start
Suponemos que vamos a tener todas nuetras bases de datos y ficheros relacionados con postgresql en el directorio /var/pgsql/data.
En sucesivos artículos, veremos como podemos configurar/organizar nuestros discos de una mejor manera para conseguir la máxima seguridad y velocidad cuando utilicemos PostgreSQL en sistemas de producción. Tambien, veremos como podemos configurar PostgreSQL para sacar el maximo provecho a esta magnifica base de datos.
En estos momentos podemos arrancar nuestra base de datos postgresql y empezar a utilizarla sin problemas.
[postgres@servidor]# /usr/local/bin/pg_ctl -D /var/pgsql/data -l /var/pgsql/data/postgresql.log start server starting
Si queremos parar PostgreSQL podemos utilizar el siguiente comando:
[postgres@servidor]# /usr/local/bin/pg_ctl -D /var/pgsql/data stop -m fast waiting for server to shut down.... done server stopped
Podemos empezar a utilizar la base de datos con el potentisimo cliente por linea de comandos que se instala por defecto, su nombre /usr/local/bin/psql:
[postgres@servidor]# /usr/local/bin/psql
Welcome to psql 8.2.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
postgres=#
Para conseguir una lista de los principales comandos que podeis utilizar en psql para que podais empezar a disfrutar de PostgreSQL, ejecutar el comando \?:
postgres=# \?
Aqui teneis algunos ejemplos de como utilizar este cliente :
postgres=# \l
List of databases
Name | Owner | Encoding
-----------+----------+----------
postgres | postgres | UTF8
template0 | postgres | UTF8
template1 | postgres | UTF8
(3 rows)
postgres=# CREATE DATABASE test001;
CREATE DATABASE
postgres=# \l
List of databases
Name | Owner | Encoding
-----------+----------+----------
postgres | postgres | UTF8
template0 | postgres | UTF8
template1 | postgres | UTF8
test001 | postgres | UTF8
(4 rows)
postgres=# \c test001
You are now connected to database "test001".
test001=# CREATE TABLE testing(
id INTEGER NOT NULL,
name TEXT NOT NULL,
PRIMARY KEY (id));
NOTICE: CREATE TABLE / PRIMARY KEY will create implicit index "testing_pkey" for table "testing"
CREATE TABLE
test001=# \d
List of relations
Schema | Name | Type | Owner
--------+---------+-------+----------
public | testing | table | postgres
(1 row)
test001=# \q
[postgres@servidor]#
Fuentes: postgresql.org / wikipedia.
Comentarios
excelente manual
Sáb, 25/04/2009 - 23:37 — carlospor cierto excelente material gracias,solamente una duda:logre instalar el postgresql con las instrucciones que diste, si quisiera que postgresql arrancara al iniciar la computadora, como se lograria?.
De antemano gracias por las respuesta
arranque de postgresql
Dom, 26/04/2009 - 00:34 — rafaelmaHola
La manera de arrancar PostgreSQL automaticamente dependerá de la distribución de Linux que uses. Te dejo un ejemplo de un simple shell script que se puede utilizar para un arranque automático.
Crea un fichero llamado /etc/init.d/postgresql con este contenido:
#! /bin/sh # ## EDIT FROM HERE # Installation prefix prefix=/usr/local # Data directory PGDATA="/var/pgsql/data" # Log directory PGLOGS="/var/pgsql/logs" # Who to run the postmaster as, usually "postgres". (NOT "root") PGUSER=postgres # Where to keep a log file PGLOG="$PGLOGS/serverlog-`/bin/date +%Y-%m-%d`.log" ## STOP EDITING HERE # The path that is to be used for the script PATH=/usr/local/sbin:/usr/local/bin:/sbin:/bin:/usr/sbin:/usr/bin PGCTL="$prefix/bin/pg_ctl" set -e # Only start if we can find the postmaster. test -x $PGCTL || exit 0 # Parse command line parameters. case $1 in start) echo -n "Starting PostgreSQL: " su - $PGUSER -c "$PGCTL start -D '$PGDATA' -s -l $PGLOG" echo "ok" ;; stop) echo -n "Stopping PostgreSQL: " su - $PGUSER -c "$PGCTL stop -D '$PGDATA' -s -m fast" echo "ok" ;; restart) echo -n "Restarting PostgreSQL: " su - $PGUSER -c "$PGCTL restart -D '$PGDATA' -s -m fast -w" echo "ok" ;; reload) echo -n "Reload PostgreSQL: " su - $PGUSER -c "$PGCTL reload -D '$PGDATA' -s" echo "ok" ;; status) su - $PGUSER -c "$PGCTL status -D '$PGDATA'" ;; *) # Print help echo "Usage: $0 {start|stop|restart|reload|status}" 1>&2 exit 1 ;; esac exit 0Dale permisos de ejecución:
Y dile al sistema que ejecute este script cuando arranque. Esto dependerá de la distribución de linux que uses.
Con redhat, fedora, etc, puedes utilizar:
Con debian, ubuntu, etc puedes probar con:
Tambien puedes utilizar este script manualmente para arrancar/parar postgreSQL
Suerte
archivos log
Mar, 09/02/2010 - 15:04 — cce77Estoy peliando con la configuracion de Postgresql 8.3 y nose como configurarlo para activar los arvhivos log. Alguna sugerencia?. cualquier ayuda me viene al pelo. Muchas gracias.-
Como saber el estatus de postgres?
Vie, 11/12/2009 - 16:20 — AnónimoHola como hago para saber el estatus de mi servicio postgres?
yo siempre ejecuto el sudo /etc/init.db/postgres-8.3 status
pero ahora como instale en otro servidor de acuerdo al manual no se que comando ejecutar....
arranque en modo grafico
Mié, 09/12/2009 - 19:17 — Anónimocomo hago para arrancar postgressql en modo gráfico
Gracias
lizandro
INSTALE MAL POSTGRES....
Mar, 15/12/2009 - 17:30 — AnónimoHola como están? instale mi postgres pero se me paso instalarlo para que soporte python... estoy ejecutando de nuevo todos los pasos para la instalacion:
./configure --prefix=/usr/local --enable-nls --with-perl --with-python --with-openssl
--with-pam --with-ldap
luego gmake pero me da el siguiente error:
gmake -C ../../../src/interfaces/libpq all
gmake[4]: se ingresa al directorio `/opt/postgresql-8.4.1/src/interfaces/libpq'
gmake[4]: No se hace nada para `all'.
gmake[4]: se sale del directorio `/opt/postgresql-8.4.1/src/interfaces/libpq'
gmake -C ../../../src/port all
gmake[4]: se ingresa al directorio `/opt/postgresql-8.4.1/src/port'
gmake[4]: No se hace nada para `all'.
gmake[4]: se sale del directorio `/opt/postgresql-8.4.1/src/port'
gcc -O2 -Wall -Wmissing-prototypes -Wpointer-arith -Wdeclaration-after-statement -Wendif-labels -fno-strict-aliasing -fwrapv -DDEF_PGPORT=5432 -I../../../src/interfaces/libpq -I../../../src/include -D_GNU_SOURCE -c -o pg_ctl.o pg_ctl.c
gcc -O2 -Wall -Wmissing-prototypes -Wpointer-arith -Wdeclaration-after-statement -Wendif-labels -fno-strict-aliasing -fwrapv pg_ctl.o -L../../../src/port -lpgport -L../../../src/interfaces/libpq -lpq -L../../../src/port -Wl,-rpath,'/usr/local/lib' -lpgport -lssl -lcrypto -lz -lreadline -ltermcap -lcrypt -ldl -lm -o pg_ctl
../../../src/interfaces/libpq/libpq.so: undefined reference to `libpq_gettext'
collect2: ld devolvió el estado de salida 1
gmake[3]: *** [pg_ctl] Error 1
gmake[3]: se sale del directorio `/opt/postgresql-8.4.1/src/bin/pg_ctl'
gmake[2]: *** [all] Error 2
gmake[2]: se sale del directorio `/opt/postgresql-8.4.1/src/bin'
gmake[1]: *** [all] Error 2
gmake[1]: se sale del directorio `/opt/postgresql-8.4.1/src'
gmake: *** [all] Error 2
no se que pueda ser... no se si tenga que eliminar antes el postgres que habia instalado pero como? porfavor agradeceria su ayuda.
archivos log
Mar, 02/03/2010 - 14:49 — cce77archivos wal?...mmm..nose a que te referis con eso..estoy leyendo de todo pero no logro hacer que funcione
gmake no funciona
Jue, 22/03/2012 - 03:42 — Anónimohola por lo que estuve viendo gmake es un compilador que no logro hacer funcionar, hice todas las combinaciones posibles tanto de instalacion como de uso y en ningun caso consegui hacer la instalacion desde el codigo
estoy usando ubuntu server 10.04 LTS (lucid)
algun consejo que me puedas dar?
Gracias
Ariel
Gracias
Jue, 22/12/2011 - 09:18 — AnónimoMuy amable, un gran articulo para mi, Saludos.
Inicio automatico de postgres
Mar, 20/04/2010 - 04:43 — Anónimohola q tal tengo problemas al iniciar automaticamente postgres, pues solo se inicia si entro como root y despues como usuario postgres y pego esto : /etc/init.d/postgresql start
agradeceria cualquier ayuda