[Primipassi] PostgreSQL e Connessioni TCP

Alessandro Cardia a.cardia@arpat.toscana.it
Lun 30 Set 2002 13:38:53 CEST


Problema : il mio postgres [7.2] parte senza accettare connessioni TCP

Sono passato da RedHat 7.1 a RedHat 7.3, ma non ho efettuato l'up=
grade : ho usato un altro harddisk.

Sulla HR 7.1 avevo scritto un'applicazione web che utilizzava un
database postgres, la cui versione era la 7.0.3-8. Restorata la
applicazione sulla RH 7.3, mi sono scontrato con il seguente mes=
saggio generato dal prostgres 7.2.1-5 :

--------------------------------------------------------------
Warning:
Unable to connect to PostgreSQL server:
could not connect to server:
Connection refused Is the server running on host localhost and
accepting TCP/IP connections on port 5432? in ... on line ..
--------------------------------------------------------------

Vero, ed nmap non mostra la porta 5432.

Letta la documentazione, ho trovato che un errore del genere si verifi=
ca se postmaster parte senza l'opzione -i, difatti, facendolo partire
"a mano" con il comando :

(A) postmaster -i -D /var/lib/pgsql/data

La finestra terminale riman bloccata, l'applicazione funziona corret=
tamente e nmap mostra la porta 5432/tcp associata a postgres.

Ho pensato allora di modificare lo script 

(B) /etc/rc.d/init.d/postgresql

Non sono arrivato lontano : nella sezione {start} questo esegue pg_ctl,
che non ammette il parametro -i. E' anche documentato il file
/var/lib/pgsql/data/postmaster.opts.default
che contiene quasi esattamente il comando (A) che ho usato per far
partire postgres a mano :

(C) /usr/bin/postmaster '-i' '-D' '/var/lib/pgsql/data'

Pare pero' che questo file di parametri non venga letto.

Ho tentato nuovamente di modificare il (B) aggiungendo il flag -o al
richiamo di pg_ctl e cercando di dargli in pasto i flags ed i parame=
tri della (C) : devo aver fatto un po' di casino con gli apici, le
virgolette e $PGDATA ... ho sempre ottenuto degli errori.

Alla fine ho messo un cerotto alla questione.

Per far partire postgres eseguo uno scriptino contenente la riga :

(D) postmaster -S -i -D /var/lib/pgsql/data > /dev/null < /dev/null

Per fermarlo uso lo script (B) con -stop

Vi ho raccontato le mie peripezie per dimostrarvi che ho tentato
tutto cio' che ho potuto ... ora, chi mi sa dire come mettere la
situazione "a pulito", in modo che postgres parta automaticamente
in modo corretto, consentendo le connessioni TCP?

Grazie a tutti e salutoni

-- 
| ===========================================
| Alessandro Cardia  
| ===========================================
| A.R.P.A.T.
|    Agenzia Regionale per la Protezione
|    Ambientale della Toscana
|
| Settore Tecnico S.I.R.A
|    Sistema Informativo Regionale Ambientale
|
| Via Nicola Porpora, 22 - 50144 Firenze
| 
| Tel.: +39 055 3206 487 / 400
| Fax.: +39 055 3206410
| ===========================================



Maggiori informazioni sulla lista primipassi