Postgres adatbázis kezelő telepítésére, több módszert használhatunk, azonban elötte tudnunk kell mire fogjuk használni késöbbiekben, és ha ennek megfelelően választjuk ki a módszert igencsak megkönnyítjük a késöbbi dolgokainkat.
Következzenek tehát a lehetősegek postgres 9.0 telepítéshez Centos 5-re.
-Telepítés forrásból:
Nos ezt akkor érdemes használni, ha teljesen sajátosak az igényeink, esetleg, több rendszerre ugyanazt a beállításokat akarjuk felvinni stb, ugyanis legjobban ez konfigurálható. Most erről itt nem írnék többet, ha ez érdekel katt ide.
-Telepítés hivatalos repository-ból.
A jelenleg futó linux alapú oprendszerek "gyári" repo-iból, a 8.4 verzió érhető el. Bár sokszor ez is elég lehet (itt megint előjön az elején feltett: "mire használjuk" majd kérdés), a fejlesztők sokszor ragaszkodnak a legfrissebb, stabil verzióhoz, itt jön képbe a postgres 9.0 hivatalos tároloja. Ez RedHat/Centos/Fedora-hoz való repo-k, de ha debian/ubuntu esetleg suse-hoz kéne, se keseredjünk, itt azt is elérhetjük :)
Telepítsük tehát a reponkat:
$rpm -Uvh http://yum.pgrpms.org/reporpms/9.0/pgdg-centos-9.0-2.noarch.rpm
Ez szépen mindent megcsinál helyettünk, még a gpg kulcsokat is feltölti, szóval ha egy
yum repolist -et lekérdezünk meg kell hogy kapjuk többeközött a
pgdg90 PostgreSQL 9.0 5 - x86_64 enabled
választ.
Ezek után nincs más dolgunk, csak felpakolni a minket érdeklő csomagokat. Ha csak alapteleítés kell nekünk, elég két csomag:
$yum install postgresql90.x86_64 postgresql90-server.x86_64
Ezek után első inditár előtt, adjuk hozzá /var/lib/pgsql/9.0/data/pg_hba.conf fájlban a következő sort
host all all samenet trust
-Telepítés Enterprise DB telepítő file-al (Legjobban Ajánlott!!):
Nem tudtam jobb nevet adni neki, lényeg hogy létezik az enterpriseDB-nek (postgresql hivatalosan támogatott verziója), ahol is egy előre gyártott .bundle file-ban (hasonlo a win-es exe-hez), sok minden belepakolnak.
Futassuk a szkriptet:
./postgresql-9.0.1-1-linux-x64.bin
Egy par kérdéses varázslón visz végig, pl hova telepítse magat a szoftver és hogy hol legyenek az adat file-ok, posgres user jelszavát stb. Ha kész a telepítés, állítsuk be a környezeti változokat. Egy előre legyártott remek szkript ezt meg is teszi nekünk ami a telepítési könyvtárban létre is jön, csak source-oljuk le.
source pg_env.sh
-Buktatók, avagy mire figyeljünk:
/etc/init.d/postgresql-9.0 start
Starting PostgreSQL 9.0:
pg_ctl: another server might be running; trying to start server anyway
pg_ctl: could not start server
Examine the log output.
PostgreSQL 9.0 did not start in a timely fashion, please see /u01/pgsql/data/pg_log/startup.log for details
, ha megnezzuk az ajánlott startup.log file-t jelzi, hogy "lock file "postmaster.pid" already exists", tehát a pid file-ja már létezik. Semmi gond, töröljük a file-t :
rm -rf /u01/pgsql/data/postmaster.pid
Majd pedig inditsuk újra el, most már szépen futni is fog.
/etc/init.d/postgresql-9.0 start
Starting PostgreSQL 9.0:
waiting for server to start... done
server started
PostgreSQL 9.0 started successfully
Készen is volnánk a telepítés része, azonban ez csak a bevezető volt. Oroszlán rész még csak most következik.
Ha tavolrol kapcsoladasi error-t kapunk, szervesszuk a pg_hba.conf file-t amiben is a hozzaféréseket finomhangolhatjuk. Pl azt szeretnénk ha mindenki mindenhonnan hozzáférhessen távolról is az adatbázishoz (persze jelszó attol még kell), adjuk a konfigurácios fájlhoz ezt a sort (csak másodikat)# TYPE DATABASE USER CIDR-ADDRESS METHOD
host all all 0.0.0.0/0 trust
A CIDR-ADDRESS részhez szabadon adhatunk, tartmányokat, vagy akár pontos IP-ket honnan is fogadjon kapcsolatokat.
Ne felejtsük a tüzfalon átengedni a postgres forgalmát (5432)!
$iptables -I RH-Firewall-1-INPUT -p tcp --dport 5432 -j ACCEPT
Itt sincs most korlatozas, honnan is kapcsolodhatunk az 5432-es portra, vagyis mindenhonnan engedelyezett.
-További összetevők telepítése:
Fejlesztő kollegák kérnek, telepíts nekik dblink-et, postgis-t, pgadmin, pgagent-et.
Ha ezeket gond nelkul akarjuk telepíteni és használni is, a legjobban akkor járunk, ha az egyes modulokat/programokat csomagból fordítjuk. Viszont lesz pár függőségi csomagunk amikre majd szükségünk lesz, azonban néhanyuk- a szükséges legújabb verzió - csak a pgdg90 repoban talaljuk meg (pl Geos). Szóval ha eddig nem is volt fent a repo mert nem kellet, pakoljuk szépen fel a rend kedvéért.
$rpm -Uvh http://yum.pgrpms.org/reporpms/9.0/pgdg-centos-9.0-2.noarch.rpm
PgAdmin:
A PgAdmin népszerü open source alkalmazás, amivel deszktopunkról adminolhatjuk az adatbazisunk. A deszktop kliensünkön kivül a szerver oldalón is szükségünk lesz erre a programra. Amennyiben EnterpriseDB telepito file-al telepítettük a DB-nket, ez már benne is van, semmi dolgunk vele. Ha fent van a pgdg90 repon-k , csak keressünk rá és telepítsük.$ yum install pgadmin3_90
Dblink:
Egy aprocska modul, melynek segítségével a távoli sémákból és adatbázisokból is kérhetünk le adatokat. Ez egy egyszerü sql file amit be kell importálnunk az adott sémába, ahol is használni szeretnénk. Ez az sql file a postgres-contrib csomagban található, ami az EnterpriseDB telepito file-al már rajta is van, ha pgdg90-es repo változatott használtjuk telepítsük a postgresql90-contrib csomagot.
Importálás a következő:
$psql -U postgres -d adatbazisod_neve -f /eleresi/utvonal/dblink.sql
Kész is, illetve kész van, ha a public sémába akartad telepíteni, ugyanis az az alapértemezett. Igen ám, de vannak fejlesztök akik nem szeretik a public sémát és törlik egyből, nekik külön dblink séma kell és abban szeretnék hasznáni. Ebben az esetben töröljuk a public scheme majd hozzuk létre a dblink nevüt és probáljuk újra futattni a dblink.sql-t. Elvileg müködnie kell, de ha mégsem mert ilyesmi hibát kapunk , hogy : dblink ERROR: no schema has been selected to create in, sincs gon, csak valtoztassuk meg a keresési útvonalat: (az utolsó parancsot, csak hiba esetén kell használnunk)
postgres=# DROP SCHEMA public;
DROP SCHEMA
postgres=# CREATE SCHEMA dblink;
CREATE SCHEMA
postgres=# ALTER USER postgres SET search_path to dblink;
ALTER ROLE
postgres=# SHOW search_path;
search_path
-------------
dblink
(1 row)
Ezek után már futathatjuk dblink.sql fájlunkat, a megfelelő helyre fogja a function-okat betölteni. Ha másik db-re is szeretnénk megcsináni, csak ugyanezt az "útvonalválasztást" be kell állítani ott is.
Postgis:
Ennek az alkalmazásnak a telepítésével postgresql szerverünk alkalmas lesz, földrajzi objektumok kezelésére is, vagyis például egy térképeket kezelő alkalmazáshoz telepítenünk kell. Mielőtt arra gondolnánk hogy ez speciális igeny, gondoljunk csak rá hogy manapság, már minden alkalmazásnak vagy honlapnak van google map kiterjesztése.
Postgis-t is megtaláljuk csomag formájában a pdgd90 repo-ban, de nekem az valahogy nem müködött rendesen, szoval töltsük le a legfrissebb verziót, majd telepítsük. Azonban elötte kikell elégíteni pár függöséget, és ehez a pdgd90 repo-ra is szüksgégünk lesz, hiába is forrásból telepítjük a postgis-t.
yum install gcc libxml2 libxml2-devel geos geos-devel proj projM
wget http://postgis.refractions.net/download/postgis-1.5.2.tar.gz
tar zxvf postgis-1.5.2.tar.gz
cd postgis-1.5.2
./config
make
make instal
Egyszerű nem? Jó is lenne, de van pár buktató amire figyelnünk kell. Ha valamilyen hibát dob, pl configure: error: could not find, valami csomag hiányzik, ellenőrizzük, hogy fent vannak e a függöségek (lsd előbb).
Vagy ezt a hibát dobja:
make: *** [postgis] Error 2
Semmi gond, a perl forditót nem találja, futassuk igy a make parancsot:
./configure
make PERL=$(which perl)
make PERL=$(which perl) install
Ezek után nincs már hátra, mint beimportálni a postgis.sql-t. Ha nem találjuk keressünk rá.
find / -name postgis.sql
psql -U postgres -d postgres -f /elérési/útvonal/postgis.sql
Amire még előszeretettel panaszkodik, mindenféle lib-eket keress, amik -ha másnéven is- de fent vannak. Ilyenkor csináljunk rá symlinket és el is fogadja.
PgAgent:
Pgagent alkalmazás segítségével postgresql szervereinken komplex shell és batch szkripteket futathatunk időzitve. Telepítéséhez töltsuk le a legújabb stabil verziót.
Csomagoljuk ki, majd a pgagent nevu file-t másoljuk az /usr/bin/ könyvtárba. Figyeljünk rá, hogy legyen 755 jogosultsága futni.
tar xvf pgAgent-3.0.0-Linux.tar.gz
cd pgAgent-3.0.0-Linux/bin
cp pgagent /usr/bin/
Ezek után a szokásos: keressük meg a pgagent.sql fájlt, és importáljuk az adatbázisunkba:
psql -U postgres -d postgres -f /elérési/út/pgagent.sql
Majd készítsünk neki kézzel egy inditó szkriptet.
vim /etc/init.d/pgagent
#!/bin/bash
#
# /etc/rc.d/init.d/pgagent
#
# Starts the pgagent daemon
#
# chkconfig: - 65 35
# description: PgAgent Postgresql Job Service
# processname: pgagent
# Source function library.
. /etc/init.d/functions
RETVAL=0
prog="PgAgent"
start() {
echo -n $"Starting $prog: "
daemon "pgagent hostaddr=127.0.0.1 dbname=postgres user=postgres"
RETVAL=$?
echo
}
stop() {
echo -n $"Stopping $prog: "
killproc /usr/bin/pgagent
RETVAL=$?
echo
}
#
# See how we were called.
#
case "$1" in
start)
start
;;
stop)
stop
;;
reload|restart)
stop
start
RETVAL=$?
;;
status)
status /usr/bin/pgagent
RETVAL=$?
;;
*)
echo $"Usage: $0 {start|stop|restart|reload|status}"
exit 1
esac
exit $RETVAL
Adjunk neki futási jogot:
chmod 755 /etc/init.d/pgagent
Ha most elindítjuk, valószinűleg, több lib-et is keress majd, ami fentvan ő mégse találja, mivel kicsit más a nevük.
Starting PgAgent: pgagent: error while loading shared libraries: libssl.so.0: cannot open shared object file: No such file or directory
meg még
Starting PgAgent: pgagent: error while loading shared libraries: libcrypto.so.0: cannot open shared object file: No such file or directory
Symlinkeljük be neki.
ln -s /lib/libssl.so.6 /lib/libssl.so.0
ln -s /lib/libcrypto.so.6 /lib/libcrypto.so.0
Most már mennie kell:
/etc/init.d/pgagent start
Starting PgAgent: [ OK ]