PostgreSQL dedicato

Se hai bisogno del massimo della flessibilità nella configurazione di PostgreSQL per la tua applicazione puoi installare un'istanza dedicata del db server all'interno del tuo account. Avrai sia l'accesso come utente root che la possibilità di modificare il file di configurazione del server stesso, arrivando a una flessibilità altrimenti ottenibile soltanto con un VPS.

Di norma l'istanza viene installata nella directory ~/db.pg , ascolterà su un socket unix e, opzionalmente, su una porta dell'interfaccia locale. Il file di configurazione sarà ~/db.pg/postgresql.conf.

Per prima cosa dovrai inizializzare l'istanza con questo comando:

/opt/unbit/postgresql924/bin/initdb -A md5 -U postgres -W -D db.pg -E UTF-8

NOTA In questi esempi viene usata la versione 9.2.4 di postgresql, ma i comandi sono validi per tutte le versioni, sarà sufficiente adattare i path. Per comodità puoi aggiungere questa riga al file ~/.bashrc:

export PATH=/opt/unbit/postgresql924/bin/:$PATH

Dal prossimo login potrai richiamare semplicemente il comando (psql , pg_dump ecc...) senza il bisogno di specificare il percorso completo.

Per la tua istanza puoi usare come base questo file di configurazione, da salvare col nome ~/db.pg/postgresql.conf:

listen_addresses = ''
max_connections = 10
unix_socket_directory = '/proc/unbit/db.pg'
shared_buffers = 16MB
work_mem = 8MB
datestyle = 'iso, dmy'
lc_messages = 'it_IT.utf8'
lc_monetary = 'it_IT.utf8'
lc_numeric = 'it_IT.utf8'
lc_time = 'it_IT.utf8'
default_text_search_config = 'pg_catalog.italian'

Per avviarla configura l'Emperor per il container a cui sarà associata l'istanza e crea un file vassal come questo:

[uwsgi]
pg = /proc/unbit/db.pg
smart-attach-daemon = %(pg)/postmaster.pid /opt/unbit/postgresql924/bin/postgres -D %(pg)

Una volta avviato il server assicurati di settare la password per l'utente postgres. Per farlo dovrai momentaneamente concedere l'accesso senza password modificando il file ~/db.pg/pg_hba.conf. Trova questa linea:

local   all             all                                     md5

e sostituisci md5 con trust. Quindi invia questo comando per far prendere al server le nuove impostazioni:

pg_ctl -D ~/db.pg/ reload

Potrai quindi collegarti alla tua istanza utilizzando questo comando senza specificare alcuna password:

psql -h ~/db.pg/ -U postgres

Imposta la password per l'utente postgres:

postgres=# \password postgres
postgres=# \q

Modifica di nuovo le impostazioni del file ~/db.pg/pg_hba.conf e ricaricale come visto sopra. Da questo momento potrai accedere all'istanza con la nuova password appena assegnata.

Il passo successivo sarà creare un primo account da usare per la tua applicazione:

postgres=# CREATE ROLE nuovoutente WITH NOSUPERUSER INHERIT NOCREATEROLE NOCREATEDB LOGIN PASSWORD 'nuovapassword';

Puoi quindi creare un database il cui proprietario sarà l'utente nuovoutente:

postgres=# CREATE DATABASE nomedb WITH OWNER = "nuovoutente" ENCODING = 'UTF-8';

Fatto questo sei pronto ad utilizzare il nuovo database usando le credenziali appena scelte. Accedi così:

psql -h ~/db.pg nomedb nuovoutente

Se necessario potrai anche riavviare autonomamente il server, i nostri sistemi si occuperanno di riavviarlo entro un minuto. Per farlo in modo sicuro puoi lanciare questo:

pg_ctl stop -D ~/db.pg -m smart -U postgres