Post con tag uuid
Postgres server con uuid e database unicode UTF-8
21 mag
|
Tenendo poi a mente che alcune guide in rete possono essere forvianti, inducendo in errori che nella maggior parte dei casi danno grossi grattacapi a chi come me non è un grande esperto programmatore. Ma quali sono questi errori, da cosa derivano? Oggi i software più evoluti e aggiornati richiedono ambienti d’ installazione "attualizzati" e con supporto a protocolli che fino a poco prima non si pensa fossero necessari, non tanto noi come "utilizzatori" e "installatori" ma, anche gli sviluppatori dei sistemi operativi che usiamo. |
| qui sotto due errori causati dal mancato supporto per uuid. |
|
| qui sotto invece un errore causato dall’ errata inizializazione del database, fatta seguendo le guide esistenti per sme. |
|
|
Gli errori appena visti sono occorsi al sottoscritto tentando di installare Openbravo 2.50 (un erp professionale molto diffuso n.d.r) su una piattaforma sme server 7.4 vanilla, sulla quale avevo installato postgres, seguendo alcune guide; senza sapere che gli rpm disponibili non hanno incorporato il supporto per uuid, ovvero non sono state compilate per sfruttalo, anche se ne installiamo i relativi eseguibili e librerie. Adesso veniamo alla guida su come installare correttamente potgres 8.3.9 con le specifiche già illustrate senza ricorrere all’aggiunta, tra l’altro, di repo non ufficiali. |
|
Abbiamo bisogno di software non direttamente disponibile nei repo di sme quindi, Scarichiamo il sorgente di postgres 8.3.9 da qui poi installiamo: |
rpm -ivh postgresql-8.3.9-1PGDG.rhel4.src.rpm
yum localinstall uuid-1.5.1-4.rhel4.i386.rpm uuid-devel-1.5.1-4.rhel4.i386.rpm
|
|
Accettiamo le dipendenze e aspettiamo lo scaricamento e l’ applicazione dei pacchetti. Anticipando che la compilazione deve essere eseguita da un utente diverso da root, prepariamo l’utente che poi eseguirà i comandi salienti e impostiamo i permessi alle cartelle, dove sono stati i sorgenti. Dal server-manager creiamo l’utente "pippo" o se vogliamo postgres (il quale sarà comunque creato automaticamente nel server di lavoro definitivo). |
![]() |
|
[root@sme74 ~]# chsh -s /bin/bash postgres Modifica shell per postgres in corso. Shell modificata. |
|
Applichiamo i permessi in modo che le cartelle siano scrivibili da tutti gli user e quindi a tutte le cartelle dentro a /usr/src/redhat/
|
|
[root@sme74 ~]# cd /usr/src/ [root@sme74 src]# ls -l totale 4 drwxr-xr-x 7 root root 4096 1 giu 2009 redhat [root@sme74 src]# chmod 777 redhat -Rf [root@sme74 src]# ls -l redhat/ totale 20 drwxrwxrwx 2 root root 4096 1 giu 2009 BUILD drwxrwxrwx 8 root root 4096 1 giu 2009 RPMS drwxrwxrwx 2 root root 4096 1 giu 2009 SOURCES drwxrwxrwx 2 root root 4096 1 giu 2009 SPECS drwxrwxrwx 2 root root 4096 1 giu 2009 SRPMS |
|
ci spostiamo nella cartella /usr/src/redhat/SPECS/ e editiamo con l’editor di nostra preferenza il file postgresql-8.3.spec . ci spostiamo nel testo e troviamo la riga contentenente queste informazioni: %{!?uuid:%define uuid 0} e attiviamo il supporto uuid cambiano lo stato da 0 a 1: %{!?uuid:%define uuid 1} e salviamo la modifica. avviamo la compilazione dei nostri nuovi pacchetti ricordando di farlo con un utente diverso da root, dando quindi i seguenti comandi: |
|
[root@sme74 ~]# nano /usr/src/redhat/SPECS/postgresql-8.3.spec [root@sme74 ~]# cd /usr/src/redhat/SPECS/ [root@sme74 SPECS]# su postgres bash-3.00$ rpmbuild -ba postgresql-8.3.spec |
|
se la compilazione fila liscia, dopo un po’ una quindicina di minuti ci ritroviamo con i pacchetti rpm appena sfornati nella cartella /usr/src/redhat/RPMS/i386. Usciamo dall’utente postgres con exit e una volta spostati nella cartella installiamo il tutto (o nel caso una volta copiati i file nel server di produzione) con il comando: |
|
yum localinstall *.rpm –enablerepo=centosplus |
|
L’abilitazione di centosplus risolvere alcune dipendenze che, altrimenti non sarebbero soddisfatte, per il mancato aggiornamento di alcune librerie in particolare: Error: Missing Dependency: libpq.so.3 is needed by package dovecot L’inizializzazione del database, è una parte delicata del processo, infatti seguendo le altre guide reperite si incappa in un errore di forma, infatti queste indicano come procedura l’ uso del comando /etc/init.d/postgres inidtdb, questo processo inizializza il database con l’ utente postgres , come deve essere tra l’altro, ma non accetta parametri aggiuntivi andandosi a prendere di default le variabili ambiente del sistema, facendo uso nello specifico della lingua del sistema, nel mio caso IT restituendo quindi un database LATIN1 non unicode UTF-8 compliant compatible, con gli errori conseguenti che ho accennato all’inizio della guida. Pertanto la procedura corretta è quella di passare questo comando come user postgres: |
[root@tricky ~]#su postgres
bash-3.00$ initdb --encoding=UTF8 --locale=it_IT.UTF8 --pgdata=/var/lib/pgsql/data/
|
|
Proviamo ad avviare il server per vedere se tutto va bene, con il comando
/etc/init.d/postgres start Il prossimo passo è quello di creare lo "strato di compatibilità" con le caratteristiche peculiari di sme server, cioè i templates, e impostare la configurazione: |
mkdir -p /etc/e-smith/templates/var/lib/pgsql/data
mkdir -p /etc/e-smith/templates-custom/var/lib/pgsql/data
cp /var/lib/pgsql/data/*.conf /etc/e-smith/templates/var/lib/pgsql/data
cp /var/lib/pgsql/data/*.conf /etc/e-smith/templates-custom/var/lib/pgsql/data
|
| Copiamo la configurazione di default nelle cartelle dei template create: |
cp /var/lib/pgsql/data/postgresql.conf /etc/e-smith/templates/var/lib/pgsql/data
cp /var/lib/pgsql/data/pg_hba.conf /etc/e-smith/templates/var/lib/pgsql/data
cp /var/lib/pgsql/data/postgresql.conf /etc/e-smith/templates-custom/var/lib/pgsql/data
cp /var/lib/pgsql/data/pg_hba.conf /etc/e-smith/templates-custom/var/lib/pgsql/data
|
|
Loggandoci nuovamente come utente postgres impostiamo la password del superuser del database:
|
| [root@tricky ~]# su postgres bash-3.00$ psql -U postgres -d template1 Welcome to psql 8.3.7, the PostgreSQL interactive terminal. Type: \copyright for distribution terms |
|
Con il comando psql -l abbiamo listato i database esistenti, verificando in tal modo la correttezza dell’inizializzazione fatta pocanzi. modifichiamo adesso le impostazioni nei templates: /etc/e-smith/templates-custom/var/lib/pgsql/data/postgresql.conf qui occorre abilitare, togliendo il segno # le seguenti opzioni: |
|
password_encryption = on |
|
mentre nel file: /etc/e-smith/templates-custom/var/lib/pgsql/data/pg_hba.conf andiamo a modificare il file nella parte finale in modo che sia come segue: |
|
local all all md5 host all all 127.0.0.1/32 md5 host all all ::1/128 md5 |
|
e aggiungiamo questa riga: |
host all all 0.0.0.0 255.255.255.255 reject |
|
ricordandosi di lasciare una riga vuota alla fine del file. Applichiamo le nuove impostazioni espandendo i templates: |
expand-template /var/lib/pgsql/data/pg_hba.conf expand-template /var/lib/pgsql/data/postgresql.conf |
|
applichiamo i nuovi settaggi e creiamo un collegamento che avvi il postgres all’avvio del server insieme agli altri servizi:
|
/etc/init.d/postgresql stop /etc/init.d/postgresql start ln -s /etc/init.d/postgresql /etc/rc.d/rc7.d/S56postgresql |
|
opzionalmente possiamo aggiungere il servizio al database di configurazione di sme: |
config set postgresql service status enabled |
|
Bene abbiamo finito di installare il nostro sistema postgres, salvo ovviamente complicazioni o errori che possono occorrervi o altro tipo di necessità, pertanto ho scritto sotto anche qualche nozione aggiuntiva per eventuali altre opzioni o errori che si possono incontrare.
|
|
OPZIONI: E’ possibile limitare le connessioni simultanee al server e abilitare anche crittazione delle comunicazioni attivando queste opzioni nel template postgresql.conf:
ssl = on per attivare ssl occorre anche copiare le credenziali del server nel path di lavoro di postgres e cambiargli il proprietario:
cp /etc/httpd/conf/ssl.crt/server.crt . cp /etc/httpd/conf/ssl.key/server.key . chown postgres:postgres server.* nel caso si vogliano accettare e abilitare connessioni tramite internet o altra rete configureremo i nostri due template di conseguenza come descritto in questa guida molto semplice. |
|
ERRORI: 1- I sorgenti non sono nel posto che ci si aspetta ma nella directory corrente, rimuovere il pacchetto con yum e installarlo con "rpm". 2- nel caso fosse apparso il seguente errore durante la compilazione:
initdb: cannot be run as root Please log in (using, e.g., "su") as the (unprivileged) user that will own the server process. ripetete la procedura ma con l’user differente da root come detto più volte. 3- durante l’installazione delle rpm compilate.
ripetete la procedura abilitando il repository centosplus. 4- durante l’inizializzazione del database
Effettuate il log in (usando per esempio "su") con l'utente (non privilegiato) che controllerà il processo server. non si è eseguito il comando come utente postgres usare 5- Se hai dimenticato la password ti root di postgres ti consiglio di guardare qui. 6- se in fase di inizializzazione si è sbagliato o, si vuole azzerare il database in modo rapito e rifare l’initdb andiamo cancellare tutto il contenuto della directory di lavoro di postgre /var/lib/pgsql/data/ reinizializiamo il database e riespandiamo i templates delle configurazioni. |
|
PREREQUISITI: (per una preparazione di un ambiente di sviluppo appropriato vi consiglio di dare un’occhiata qui.) Per compilare i sorgenti e creare le rpm di installazione bisogna essere in un ambiente di build, il che non è adatto per un server di produzione dato che implica l’installazione di GCC. per potersi creare un ambiente di build semplice si può procedere come segue: |
|
yum install gcc
|
|
e le relative dipendenze che sono scaricate automaticamente; più i pacchetti che occorreranno via via, mi riferisco ai devel, che in un ambiente di produzione sono superflui.
|
|
Non me ne vogliano i più esperti, per non essere molto stringato nella mia guida, ma questa vuol essere, oltre che, un mio appunto personale, un riferimento a chi capisce poco di programmazione, inoltre come riferimento per trovare una corrispondenza con errori ai quali, con difficoltà ho trovato risposte in interent.
|
















