Sei sulla pagina 1di 4

LEVANTAR EL SERVICIO POSTGRES EN LINUX

-------------------------------------Cristin Fabres A.
Lo que se pretende con esta entrega es una nocin bsica de lo
que es trabajar con Postgres en Linux.
Especficamente se trabaja con una la versin de postgres 7.2.1
en un Red Hat 7.3
(psql -V)
La versin del Kernel es la 2.4.18-0.13.
(uname r)
Para los siguientes ejercicios se supone que ya se instalo Postgres
correctamente (para lo cual hay N manuales).
Lo primero que hay que hacer es subir el servicio de Postgres para
que podamos conectarnos a la base de datos (BdD).
Hay dos formas de levantar el servicio, una es levantarlo directamente
pero solo queda el servicio arriba hasta que apaguemos la maquina.
Para esto hacemos lo siguiente:
[root@localhost etc]# cd /etc/rc.d/init.d/postgresql Start
En el directorio anterior lo que se hace es correr un script en el
cual el primer parmetro es el script a ejecutar y el segundo parmetro
es lo que hace el script, si la opcin es Start, inicia el servicio,
si la opcin es stop se detiene el servicio, la opcin restart detiene
e inicia el servicio.
La primera vez que ejecutemos este script se va a demorar un poco ms
de lo normal, porque va a verificar que exista la BdD y va a crear una
serie de archivos en el siguiente path:
/var/lib/pgsql.
Estos archivos son creados siempre que no existan, si el servicio ya
fue levantado con anterioridad, los archivos ya fueron creados y el
servicio se levanta ms rpido.
De hecho es una buena opcin para limpiar todas las bases de datos
(por si hubiera habido algun problema), borrar todos los archivos de
la ruta /var/lib/pgsql para luego levantar el servicio y se crean los
archivos de nuevo con las opciones originales.
Ojo que si tomamos esta opcin se van a borrar todas las instancias
de Bases de Datos que existen hasta ese momento.
La otra forma de levantar el servicio de postgres es que siempre
que prendamos nuestro linux, se levante como un servicio mas, lo que
resulta muy comodo, as se configura el script una vez y siempre queda
levantado como un servicio mas.
Para esto tenemos que hacer dos pasos, ver en que nivel se levanta
nuestro linux y poner el script en el directorio correspondiente
(o mejor dicho el link en el directorio correspondiente).
Para saber en que modo estamos arrancando nuestro linux tenemos que
editar el archivo /etc/inittab, y hay que ver un parmetro en una fila
en particular.

Un ejemplo de este archivo es el siguiente:


#
#
#
#

Default runlevel. The runlevels used by RHS are:


0 - halt (Do NOT set initdefault to this)
1 - Single user mode
2 - Multiuser, without NFS (The same as 3, if
you do not have networking)
3 - Full multiuser mode
4 - unused
5 - X11
6 - reboot (Do NOT set initdefault to this)

#
#
#
#
#
id:3:ini tdefault:

Las filas que comienzan con un #, casi siempre son comentarios


(por no decir siempre), por lo tanto si las modificamos no hacen
nada o ningn cambio contra este script.
La fila que no esta comentada (id:3:ini tdefault:) en el segundo
parmetro tiene un numero 3 y significa que el sistema Linux
arranca en este modo.
Los comentarios que estn arriba nos indican todos los modos en los
cuales se puede levantar el sistema operativo,
0: es para apagar la maquina, 1 es el modo single user, y as
sucesivamente hasta el modo 6.
Por lo general el parmetro esta en 3 o en 5.
Para cada modo existe un directorio en particular en el cual dice
el orden y la cantidad de scripts que se tienen que subir.
Por ejemplo si estamos en el modo de arranque 3, el directorio que
contiene todos los script a subir es /etc/rc.d/rc3.d.
Si hacemos un cd /etc/rc.d/rc3.d y luego un "ls" para ver el
contenido nos vamos a dar cuenta que, bsicamente, hay dos tipos de
archivos, los que comienzan con una S y los que comienzan con una
K, seguidos por dos caracteres que son unos nmeros y luego el
nombre del script a ejecutar.
Los que comiencen con una S son los servicios que se van a subir para
el modo en cuestin. Por lo tanto si hacemos un "ls" en el directorio
/etc/rcd./rc3.d y nos da como resultado:
K12mysqld
K15httpd
.
.
S05kudzu
S06reconfig
S08ip6tables
.
La lista anterior nos dice que los servicios kudzu, reconfig y el
ip6tables se suben cuando el Linux se inicia en el servicio 3, ya
que el listado es del directorio /etc/rc.d/rc3.d .
El nmero sirve para indicar el orden de subida de los servicios,
o sea, el servicio kudzu sube primero, despus el servicio reconfig
y luego el servicio ip6tables. Lo lgico seria que ahora busquemos
algn script que contenga o se llame *postgresql* para ver si existe
como S o como K.
Si el archivo que encontramos existe como K97postgresql lo que
tendremos que hacer es cambiarlo por S97postgresql para que se
cargue automticamente cada vez que se inicie el linux

(se hace con el comando "mv").


El nmero no tiene porque ser 97, podra ser cualquier otro, pero
uno razonablemente alto para que otros servicios ms bsicos se
carguen, por lo tanto lo mejor es cargar el script con un nmero
alto.
La mejor opcin es que encontremos el archivo como "S97postgresql",
en este caso no hacemos nada, porque el servicio ya fue cargado
para este modo (3).
Lo ms probable es que si tratamos de buscar este script que tenga
algo con postgresql (find /etc/rc.d/rc3.d name *postgres*)
pero no lo vamos a encontrar ni como S o K, pero podemos crear
el script o mejor dicho, podemos crear el enlace donde se encuentra
el script.
Para esto, si estamos parados en el directorio /etc/rc.d/rc3.d/
podemos escribir lo siguiente:
ln -s ./../init.d/postgresql S97postgresql
Lo que hace el comando anterior es crear un link al archivo
/etc/rc.d/init.d/postgresql
y crea un archivo al directorio /etc/rc.d/rc3.d/ con el nombre
de archivo S97postgresql.
Por lo tanto ya tenemos nuestro script en el modo 3.
Cuando parta nuestro linux no tendremos que levantar el servicio;
porque como ya creamos el archivo con el link anterior se levantara
automticamente.
Si queremos reiniciar nuestro servicio, parar o comenzar podremos
hacer lo siguiente:
/etc/rc.d/rc3.d/S97postgresql start (para hacer partir el servicio)
/etc/rc.d/rc3.d/S97postgresql stop
(para detener el servicio)
/etc/rc.d/rc3.d/S97postgresql restart (para detener y hacer partir
el servicio)
Es bsicamente lo mismo que hacamos antes con el script original:
/etc/rc.d/init.d/S97postgresql start (para hacer partir el servicio)
/etc/rc.d/init.d/S97postgresql stop
(para detener el servicio)
/etc/rc.d/init.d/S97postgresql restart (para detener y hacer partir
el servicio)
En estricto rigor el servicio esta arriba, y si digitamos "psql",
el programa va a responder, el punto esta en que postgres no ha
levantado ningn puerto o socket para hacer transmisiones va TCP/IP.
La pregunta es y bueno cual es el problema?:
el problema reside en que si queremos conectarnos desde PHP con Apache
por ejemplo, no vamos a poder porque en las funciones de conexin de
PHP pide el numero IP de la maquina en la cual hacemos la conexin al
servidor donde aloja Postgres.
Para resolver este tema hay que editar el script donde hicimos
anteriormente el link, o sea podemos editar el archivo que se
encuentra en:
/etc/rc.d/rc3.d/S97postgresql
o en
/etc/rc.d/INIT.d/postgresql

(cualquier camino que tomemos para editar el archivo da lo mismo


porque las dos rutas conducen al mismo archivo)
Por ultimo hay que editar una fila en particular la cual es:
su l postgres s /bin/sh c /usr/bin/pg_ctl D $PGDATA p /usr/bin/postmaster start > /dev
/null 2>&1 < /dev/null
Y cambiarla por:

su l postgres s /bin/sh c /usr/bin/pg_ctl o -i D $PGDATA p /usr/bin/postmaster start


ev/null
2>&1 < /dev/null
Se agregaron las opciones -o -i.
Con este cambio hay que reiniciar el servicio nuevamente para
que tenga efectos en Postgres:
/etc/rc.d/init.d/S97postgresql restart
para probar si el socket esta arriba escribimos el comando
netstat nat
el cual da como resultado:
Proto Recv-Q Send-Q Local Addres Foreign Address state
..
Tcp
0
0
0.0.0.0:5432
0.0.0.0:*
listen
..
El servicio esta arriba y atiende en el Puerto 5432.
Y listo, nuestro servicio de postgres ya esta arriba y funcionando.
En las siguientes entregas comenzaremos con comandos SQL para crear
tablas, Ingresar, Eliminar y Modificar datos.

Potrebbero piacerti anche