Installazione di PostgreSQL su RHEL 7
PostgreSQL
e' un potente DBMS relazionale Open Source noto per
la robustezza e la ricchezza di funzionalita'.
Questo documento descrive l'installazione delle versioni
piu' recenti di PostgreSQL su RHEL 7.
Un documento introduttivo su PostgreSQL
e' Introduzione a PostgreSQL,
un documento piu' completo e' Qualcosa in piu' su PostgreSQL.
Introduzione
L'installazione di PostgreSQL puo' essere effettuata in modi diversi.
In questo documento vengono utilizzati i repository PostgreSQL ufficiali
con un sistema operativo Red Hat Enterprise Linux (RHEL) 7, CentOS 7,
Oracle Enterprise Linux (OEL) 7.
Tali distribuzioni Linux, derivate da Fedora 20, sono molto recenti ed hanno alcuni comandi di gestione
differenti da quelli delle precedenti release...
Hands On
Il primo passo e' scegliere la versione di interesse
sull'elenco repository ufficiale PostgreSQL.
La nostra scelta ricade sulla versione 9.3 per RHEL 7.
Non e' l'ultima versione di PostgreSQL...
anzi e' la piu' vecchia ancora supportata,
ma le cose cambiano pochissimo anche con le versioni piu' recenti!
I passi sono:
# rpm -iUvh http://yum.postgresql.org/9.3/redhat/rhel-7-x86_64/pgdg-centos93-9.3-1.noarch.rpm
# yum install postgresql93.x86_64 postgresql93-server.x86_64 postgresql93-contrib.x86_64 postgresql93-libs.x86_64
# systemctl enable postgresql-9.3
# /usr/pgsql-9.3/bin/postgresql93-setup initdb
# cd /var/lib/pgsql/9.3/data
# vi postgresql.conf
# vi pg_hba.conf
# firewall-cmd --permanent --add-port=5432/tcp
# systemctl start postgresql-9.3
# su - postgres
$ psql
SQL> create database mydb;
^D
$ psql mydb
SQL> create extension adminpack;
SQL> create extension pg_stat_statements;
SQL> ...
SQL> alter user postgres with password 'xxxxx';
I comandi dovrebbero essere chiari...
Ma se non lo fossero eccone la descrizione riga per riga:
- Installiamo il repository Yum corrispondente alla nostra scelta di versione di PostgreSQL
(ed ovviamente di distribuzione Linux).
Se si utilizzasse il repository di default della distribuzione Linux la versione
di Postgres sarebbe la 9.2 (oramai desupportata).
Naturalmente i repository sono diversi a seconda della versione di sistema operativo
e di PostgreSQL scelta
[NdA in realta' dal 2019-04 il
repository e' unico per tutte le release supportate
(eg.
https://download.postgresql.org/pub/repos/yum/reporpms/EL-7-x86_64/pgdg-redhat-repo-latest.noarch.rpm)]
- Installiamo con yum tutti i pacchetti necessari: il client, il server, i contributi e le librerie.
Ci sono altri pacchetti disponibili ma questi coprono la maggioranza delle necessita' per un DB server.
- La versione 7 delle distribuzioni RHEL/CentOS/OEL utilizza comandi diversi per l'attivazione dei servizi.
Il comando systemctl abilita il servizio PostgreSQL appena installato.
- La base dati va inizializzata.
- Nella directory che ospita la base dati ed i file di configurazione...
- Vanno configurati i parametri di tuning (file postgresql.conf).
Un esempio di configurazione si trova in questo documento.
- Vanno configurati i parametri di accesso/abilitazione di utenti/reti (file pg_hba.conf).
Un esempio di configurazione si trova in questo documento.
- Su RHEL7 per default e' attivo il firewall. Se si vuole accedere dall'esterno va aperta la
porta di listen di postgres (5432).
- Facciamo partire il DB attivando il servizio. PostgreSQL e' pronto per essere usato.
- Ci colleghiamo come utente postgres.
- Accediamo all'interprete SQL.
- Creiamo una base dati (non e' consigliabile utilizzare il database postgres).
- Dal psql si esce con Ctrl-D.
- Accediamo all'interprete SQL sulla base dati appena creata.
- Aggiungiamo le estensioni che ci servono (ho riportato le mie due preferite ma ve ne sono decine).
- Mettiamo qualche password, anche se servirebbe qualcosa di piu' per
completare le impostazioni di sicurezza...
- Ora e' possibile utilizzare PosgreSQL!
Varie ed eventuali
Oltre che da linea di comando sono sicuramente molto comode le GUI...
questo documento
e' molto aggiornato!
Spesso si utilizza una directory differente al default per PGDATA.
Il modo corretto di impostarla e' copiare il file:
cp /usr/lib/systemd/system/postgresql-9.3.service /etc/systemd/system/postgresql-9.3.service
ed impostare nel nuovo file custom la variabile:
# Location of database directory
Environment=PGDATA=/data/9.3/data/
Per far rileggere la configurazione il comando infine e':
systemctl daemon-reload
Buon divertimento!