Inhaltsverzeichnis
Als Datenbank für das Projekt xml2sql wurde das OpenSource-RDBMS PostgreSQL gewählt (http://www.postgresql.org). Dafür gab es mehrere Gründe:
Als schnelle und einfach zu installierende Alternative kam MySQL in die engere Wahl. Dass letztendlich PostgreSQL eingesetzt wurde, lag z.T. auch an den Vorerfahrungen des Projektführenden.
Inhaltsverzeichnis
PostgreSQL gehört zu jeder Linux-Distribution dazu und ist von dort leicht zu installieren. Für Hartgesottene und alle, die wirklich das Neueste brauchen, hier die Installation aus den Sourcen.
Absolute Kurzfassung, funktioniert nur, wenn man völlig neu installiert und auch keinen User namens Postgres (mehr) hat.
Im nach dem Auspacken der Sourcen entstandenen Verzeichnis:
/usr/local/postgresql-7.1.3 werden auf der Kommandozeile folgende Kommandos ausgeführt:
Ganz Mutige können sich das auch als Shell-Script kopieren, ausführen und erst einmal einen Kaffee trinken gehen...
Bei der Installation von RedHat wird PostgreSQL mit installiert und entsprechend der User postgres mit angelegt. Außerdem gibt es die Dateien von PostgreSQL im Verzeichnis: /var/lib/pgsql.
Das Verzeichnis /var/lib/pgsql muss gelöscht und die Rechte auf:
/usr/local/pgsql für den User: postgres gesetzt werden:
chown postgres /usr/local/pgsql;
Dieses Verzeichnis wird mit: gnome-Linuxconf-Benutzeraccounts als Heimatverzeichnis für User: postgres eingerichtet.
SuSE: mit Yast:Administration:Benutzverwaltung
Die Umgebungsvariablen $PGDATA und $PGLIB werden gesetzt in:
/etc/profile (Red Hat):
/etc/profile.local (SuSE):
PATH=/usr/local/bin:/usr/X11R6/bin:/usr/local/pgsql/bin:/usr/lib/jdk1.3.1/bin ################################## # Pfade für Postgresql ################################## PGDATA=$PGDATA/usr/local/pgsql/data MANPATH=$MANPATH/usr/local/pgsql/man PGLIB=$PGLIB/usr/local/pgsql/lib export PATH PGDATA PGLIB
Inhaltsverzeichnis
Aus Sicherheitsgründen darf der User: root nicht PostgreSQL starten.
Um nun nicht bei jedem Anfahren des Rechners zum User postgres wechseln zu müssen und dort im Verzeichnis: /usr/local/pgsql/bin mit:
pg_ctl start den Datenbank-Server zu starten, kann das
Start-und Stopverhalten beim Booten/Herunterfahren über ein Skript kontrolliert werden.
Der ausführbare File:
/usr/local/postgresql-7.1.3/contrib/linux/postgres.init.sh
wird mit ./postgresql.init.sh install ausgeführt und installiert nach:
/etc/rc.d/init.d/postgres
Er ist hier noch einmal dokumentiert: postgres.init.sh
In /etc/rc.d/init.d/postgres müssen noch zwei Einträge geändert werden, damit
das PostgreSQL-Startprogramm:
postmaster mit dem -i Flag läuft und Requests
auf TCP/IP-Ebene entgegennimmt und beantwortet:
POSTMASTER="postmaster -i"und:
# # Add the "-i" option to enable TCP/IP sockets in addition # to unix domain sockets. This is needed for Java's JDBC # PGOPTS="-i"
SuSE hat ein ähnliches, aber durch dieses nicht ersetzbares Skript. Hier kommt es darauf an, die /etc/rc.config richtig zu konfigurieren:
# # Should the postgres daemon be startet automatically on system startup? # START_POSTGRES="yes" # # In which directory should the PostgreSQL database reside? # POSTGRES_DATADIR="/usr/local/pgsql/data" # # The options that are given to the PostgreSQL master daemon on startup. # See the manual pages for postmaster and postgres for valid options. # Don't put "-D datadir" here since it is set by the startup script. # Don't change this, unless you know what you do. # POSTGRES_OPTIONS="-i"
Mit dem Skript, das SuSE mitbringt, wird Postgres dann einwandfrei ausgeführt:
/etc/init.d/postgres
Wenn noch nicht vorhanden, muss das Verzeichnis:
/usr/local/pgsql/log/ erzeugt werden. Danach müssen noch die richtigen Rechte dafür gesetzt werden:
Im Verzeichnis: /usr/local/pgsql wird das Kommando ausgeführt:
chmod postgres:users
Danach kann mit einem /etc/init.d/postgres start getestet werden, ob alles funktioniert. Das Skript meldet im Erfolgsfall ein done.
Damit das nun auch beim Hochfahren startet, müssen Symlinks auf die entsprechenden Runlevel gesetzt werden:
Ursprung:
/etc/init.d/postgres
Symlinks:
/etc/init.d/rc.2/K14postgres
/etc/init.d/rc.2/S10postgres
/etc/init.d/rc.3/K13postgres
/etc/init.d/rc.3/S10postgres
/etc/init.d/rc.5/K13postgres
/etc/init.d/rc.5/S10postgres
Die Konfigurationsdatei für PostgreSQL heißt pg_hba.conf und wird angelegt in der Umgebungsvariablen:
$PGDATA, also in diesem Falle in /usr/local/pgsql/data.
Dort werden u.a. die Eintragungen gemacht, mit denen PostgreSQL auch auf
TCP/IP hört:
# Meine Einträge:217.89.71.35 host root 217.89.71.35 255.255.255.0 trust host geronimo 217.89.71.35 255.255.255.0 trust host xml 217.89.71.35 255.255.255.0 trust
Beim nächsten Booten startet PostgreSQL automatisch und alle Datenbanken stehen sofort zur Verfügung.
Die Datenbank kommt mit einer ausgezeichneten Dokumentation, die unter:
/usr/local/pgsql/doc/html/postgres.html zu erreichen ist.
Außerdem steht online das Buch von Bruce Momijan zur Verfügung:
http://www.ca.postgresql.org/docs/aw_pgsql_book/index.html
Das Buch ist bei Addison Wesley in deutscher Übersetzung erschienen; nach meiner Meinung nicht nur das beste Buch zu Datenbanken, sondern eines der besten auf dem IT-Buchmarkt überhaupt, vergleichbar mit LaTeX von Kopka und Linux von Kofler!