Die Installation gliedert sich im Wesentlichen in zwei Komplexe.
Zum Einen muss zunächst natürlich die Software selbst installiert werden.
Zum Anderen müssen einige Dinge eingestellt und eine erste
Datenbank muss erzeugt werden.
Die meisten Linuxdistributionen sollten PostgreSQL als
Softwarepakete anbieten. Auf Grund der Größe sind es oft sogar
mehrere. Mit der Installation solcher Pakete wird in der Regel
auch die Grundkonfiguration durchgeführt, so dass PostgreSQL
sofort nach dem Installieren gestartet und benutzt werden kann.
Verfügt die verwendete Distribution über Softwarepakete, so
sollten diesem im Allgemeinen vorgezogen werden und mit den
DistributionsProgramme installiert werden. Dies spart mindestens viel
Arbeit und Zeit. Installiert man beispielsweise die Pakete von
SuSE, so kann man die Datenbank sofort nach der Installation
starten.
Es ist natürlich auch möglich, PostgreSQL als Quellpaket über
http://www.postgresql.org/ downzuladen und es selbst zu
kompilieren. Dies ist insbesondere dann notwendig, wenn man ganz
bestimmte Einstellungen benötigt, beispielsweise Unterstützung für
bestimmte Zeichensätze. Der Rest dieses Kapitels beschäftigt sich
mit diesem Verfahren und kann ausgelassen werden, wenn ein
Distributionspaket verfügbar ist.
PostgreSQL verwendet ./configure und make zum Übersetzen und
verhält sich damit sehr ähnlich zu GNU Software - jedoch sind
einige zusätzliche Schritte nach dem Installieren notwendig. Die
Installation unter Windows/Cygwin ist nicht Thema dieses
Dokumentes, hier wird ausschließlich auf Linux eingegangen.
Um die Datenbanksoftware selbst übersetzen zu können, müssen etliche
Programme verfügbar sein. Eine halbwegs aktuelle Linuxdistribution
vorausgesetzt, sind diese aber entweder bereits installiert
oder als Softwarepakete verfügbar.
Neben GNU-make ist natürlich ein C Compiler erforderlich. Der GCC
ist hier gut geeignet. PostgreSQL stellt also keine hohen oder
speziellen Anforderungen an das System.
|
Über http://www.postgresql.org/ besorgt man sich ein Paket der
Software. Im Beispiel wird die Version 7.2.1 verwendet. Die
Schritten sollten bei neueren (und älteren) Versionen analog
sein.
Die erhaltenen Quellen packt man zunächst aus:
root@linux #
tar xzf postgresql-7.2.1.tar.gz
|
Führt man ein update durch, so sollte man unbedingt spätestens
jetzt die Datenbank in eine Datei sichern. Das kann man mit dem
PostgreSQL Programm pg_dump oder pg_dumpall
erledigen:
root@linux #
pg_dumpall > backup.sql
|
Genaueres findet sich im Abschnitt Backup. Anschließend
vergewissert man sich, dass das Backup erfolgreich war und stoppt
die (alte) Datenbank. Das Datenverzeichnis der alten Datenbank
sollte aus Sicherheitsgründen umbenannt werden:
root@linux #
mv /usr/local/pgsql /usr/local/pgsql.old
|
Dieser Pfad ist bei Distributionen in der Regel anders; SuSE
und RedHat verwenden beispielsweise /var/lib/pgsql/data.
Nun führt man in dem Verzeichnis, das durch das tar Kommando
entstanden ist, configure aus. Dabei kann man etliche Optionen
angeben. Neben die üblichen GNU Optionen wie beispielsweise
--prefix, gibt es auch viele PostgreSQL spezifische
Optionen.
Ist ein produktiver Einsatz geplant, so sollte die Dokumentation
zu Rate gezogen werden, und ausführliche Tests gefahren werden.
Einige wichtige Optionen:
--enable-locale
|
Aktiviert locale-Unterstützung. Dies kostet etwas Performanz,
ist aber im nicht-englischsprachigem Raum sehr sinnvoll
|
--enable-multibyte
|
Aktiviert Multibyte Unterstüzung (unter anderem Unicode). Java
und TCL erwarten beispielsweise Multibyte. Diese Option sollte
daher nach Möglichkeit gesetzt werden.
|
--enable-nls
|
Aktiviert Sprachunterstützungen, um Meldungen in Landessprache
geben zu können.
|
--with-CXX
--with-perl
--with-python
--with-tcl
--with-java
|
C++, Perl, Python, TCL beziehungsweise Java (JDBC) Bibliotheken
erzeugen. Für Java wird das Programm "ant" benötigt.
|
--enable-odbc
--with-iodbc
--with-unixodbc
|
Erzeugt ODBC Treiber. Es kann unabhängig vom DriverManger erzeugt
werden (weder --with-iodbc noch --with-unixodbc), für die
Verwendung mit iODBC oder unixODBC, nicht jedoch für beide.
|
--with-openssl
|
OpenSSL SSL/TLS Unterstützung aktivieren
|
--with-pam
|
PAM Unterstützung aktivieren
|
--enable-syslog
|
Syslog Unterstützung aktivieren (kann dann bei Bedarf konfiguriert
werden)
|
Ein Aufruf könnte also wie folgt aussehen:
root@linux #
./configure --enable-unicode-conversion --enable-multibyte=UNICODE \
--with-CXX --with-perl --with-python --with-tcl --with-java \
--enable-odbc --with-unixodbc \
--with-pam --enable-syslog \
--enable-locale
|
Die Auswahl der Parameter ist kompliziert und hängt von vielen
Faktoren ab, daher sollte auf Distributionspakete zurückgegriffen
werden, soweit möglich.
|
Nach dem configure übersetzt man wie gewohnt mit:
Optional kann man Regressionstests durchführen:
Die eigentliche Installation wird mit
root@linux #
make install
|
durchgeführt. Dies macht man in der Regel als root.
Je nach Configure-Optionen installiert PostgreSQL Bibliotheken
beispielsweise in /usr/local/pgsql/lib. Dieser Pfad sollte dann
in /etc/ld.so.conf eingetragen werden (das Ausführen von ldconfig
ist danach notwendig). Gegebenenfalls fügt man den Pfad zu den
Binärprogrammen zum Pfad hinzu, beispielsweise in dem man
/usr/local/pgsql/bin zum PATH in /etc/profile hinzufügt.
|
|
Bevor PostgreSQL gestartet werden kann, müssen noch einige
Einstellungen durchgeführt werden. Verwendet man
Distributionspakete, so können diese Schritte in der Regel
entfallen.
Das DBMS benötigt einen Systembenutzer. Darüber hinaus können
natürlich viele Datenbankbenutzer existieren. Beide Benutzerarten
dürfen keinesfalls verwechselt werden. Der Systembenutzer ist der
Benutzer, dem später die Datenbankdateien gehören. Diesem
Benutzer ist wohl nie eine Person assoziiert (im Gegensatz zu den
Datenbankbenutzern).
Ein gutes Beispiel für einen Systembenutzernamen ist postgres,
wie er beispielsweise von SuSE und RedHat verwendet wird (root ist in
keinem Fall geeignet). Den Benutzer kann man einfach erzeugen:
root@linux #
useradd postgres
|
und so sperren, dass man sich nicht einloggen kann:
root@linux #
passwd -l postgres
|
Nun kann nur root über das su Kommando auf den postgres
Benutzer zugreifen.
|
Um PostgreSQL starten zu können, muss eine Datenbankgrundstruktur
vorhanden sein. Hierbei handelt es sich im Wesentlichen um eine
komplizierte Verzeichnisstruktur, die mit dem Programm initdb
erzeugt werden sollte. Dieses Programm sollte auf jeden Fall mit dem
oben genannten Benutzer durchgeführt werden. Ist das
Datenverzeichnis beispielsweise /usr/local/pgsql/data, bietet
sich folgende Kommandokette (begonnen als root!) an:
root@linux #
mkdir /usr/local/pgsql/data
root@linux #
chown postgres /usr/local/pgsql/data
root@linux #
su - postgres
root@linux postgres#
initdb --pwprompt -D /usr/local/pgsql/data
|
Dieses Kommando verwendet die gerade eingestellten locale als
Sortierfolge in Indizes. Diese kann später nicht mehr einfach
geändert werden. Ein Nachteil bei der Verwendung von locale ist,
dass der LIKE Operator und reguläre Ausdrücke diese Indizes
nicht verwenden können - und dadurch langsam werden. Möchte man
lieber keine (oder andere) locale für diesen Fall, setzt man vor
initdb die Variable LC_COLLATE. Beispielsweise kann man die
locale auf den Standard C setzen:
root@linux postgres#
LC_COLLATE="C" initdb --pwprompt -D /usr/local/pgsql/data
|
Möchte man dies später ändern, so muss ein Komplettbackup gemacht
werden, die Datenbank heruntergefahren, initdb erneut ausgeführt
und nach dem Start muss das Backup wieder eingespielt werden. Dies
ist ja nichts überraschendes; die sort order kann man eben
nicht nachträglich einstellen, dass ist wohl bei allen DBMS so.
Durch initdb wird eine erste Datenbank erzeugt. Diese heißt
template1. Wie der Name schon andeutet, wird diese als Vorlage
beim Erzeugen neuer Datenbanken verwendet; daher sollte man mit
dieser Datenbank nicht arbeiten (da dies zukünftige neue
Datenbanken beeinflussen würde).
Im Beispielaufruf wird auch gleich ein Passwort für den
Datenbankadministrator gesetzt. Setzt man kein Passwort, so gibt
es kein gültiges (das heißt, man kann sich nicht als Administrator
verbinden, wenn ein Passwort gefordert ist). Auf dieses Verhalten
sollte man sich jedoch nicht verlassen, und das System lieber
korrekt konfigurieren.
|
|
|