Neuinstallation (am Beispiel derVersion 7.3.4)

Voraussetzungen

Postgres läuft unter verschiedenen UNIX-Varianten, z.B. Linux, HP-UX oder MacOS X. Wir empfehlen für den Einstieg Linux[3]. Vor der Installation unter Linux sollte die Locale-Umgebungsvariable $LANG auf de_DE@euro oder eine andere deutsche Locale (meist in /usr/lib/locale)  stehen ? die aktuelle Locale wird bei der Installation von Postgres berücksichtigt und sorgt dafür, dass Datums- und Währungsformate korrekt sind.
Bei SuSE Linux 7.x bis 10.x ist es für ein Kompilieren der Postgres-Quellen erforderlich, dass die Pakete gcc, glibc, gettext, gettext-devel, readline, readline-devel, zlib und zlib-devel installiert sind.

Erzeugen Sie zunächst den User postgres mit dem Homeverzeichnis der Postgres-Installation (z.B. unter Linux mit useradd -g users -d /usr/local/pgsql postgres).

In der Postgres-7.2-Version ist es wichtig, den Datenbankserver für internationale Sprachumgebungen zu konfigurieren, deshalb bietet es sich an, die Installation nicht als Binary- sondern als Quell-Installation vorzunehmen[4]. Bei höheren Versionen von Postgres ist dies nicht mehr nötig.

In der Download-Version von Postgres wird Postgres standardmäßig nach /usr/local/pgsql installiert. Als DBSpace muss man ein oder mehrere Verzeichnisse anlegen und mit initdb vorbereiten. Die SuperX-Datenbank läßt sich dann in einem eigenen DBSpace ablegen.

Zunächst müssen Sie sich als root anmelden. Wir gehen im folgenden davon aus, dass Die Quellen von Postgres im Verzeichnis
/usr/src/packages/SOURCES

liegen (das Archiv z.B. von postgresql-7.3.4.tar.gz muss hier entpackt werden).

Dann gehen Sie in das Verzeichnis postgresql-7.3.4, und führen folgende Befehle aus:

 

Postgres 7.3.-8.x
Installation
"in short"

./configure --enable-locale --enable-nls

make

make install

mkdir /usr/local/pgsql/data

chown postgres /usr/local/pgsql/data

Wenn Sie Postgres 7.2.x installieren, müssen beim ./configure der Parameter --enable-multibyte=LATIN1 gesetzt werden, in Postgres 7.3 oder höher ist dies defaultmäßig bereits eingebaut sind.

Damit sind die Schritte, die als root auszuführen sind, beendet. Wir wechseln nun zur Kennung postgres mit
su - postgres

Vor der Initalisierung des DBSPACE sollte die Sprachumgebung des Users postgres korrekt sein.  Für die bash wird in den meisten Distributionen die Umgebung generell in der Datei .bashrc im Homeverzeichnis des Users postgres gesetzt; dort geben Sie den Pfad für das data-Verzeichnis an, und legen die Ausführprogramme von Postgres in den Datenpfad:

 

.bashrc

...
export LANG=de_DE@euro

#Zur Sicherheit für Postgres auch einzeln:

export LC_CTYPE='de_DE@euro'

export LC_COLLATE='de_DE@euro'

export LC_TIME='de_DE@euro'

export LC_NUMERIC='de_DE@euro'

export LC_MONETARY='de_DE@euro'

export LC_MESSAGES='de_DE@euro'

 

PATH=$PATH:/usr/local/pgsql/bin

export PGDATA=/usr/local/pgsql/data
export PGLIB=/usr/local/pgsql/lib
...

Wenn die Sprachumgebung stimmt, dann wird der DBSPACE vom User postgres initialisiert.

Initialisierung des DBSPACE

/usr/local/pgsql/bin/initdb -D $PGDATA

 

 

Durch initdb wird der DBSpace erzeugt.  Wenn die Umgebung stimmt, dann wird Postgres für die deutsche Locale vorbereitet (Sortierung von Zeichen, Datums- und Währungsformate etc).

 

Ausgabe von
 initdb

/usr/local/pgsql/bin/initdb -D $PGDATA
The files belonging to this database system will be owned by user "postgres".
This user must also own the server process.

The database cluster will be initialized with locale de_DE@euro.
This locale setting will prevent the use of indexes for pattern matching
operations.  If that is a concern, rerun initdb with the collation order
set to "C".  For more information see the Administrator's Guide.

 

 

Hinweis für SuSE-Anwender

Wenn Sie Postgres als Binärpaket aus der Distribution von SuSE 8.x - 10.x verwenden, müssen Sie beachten, dass der DBSPACE beim ersten Start des Postmaster automatisch in /var/lib/pgsql/data angelegt wird. Wenn dabei die Umgebungsvariablen nicht auf die deutsche Locale gesetzt sind, wird ein amerikanischer Zeichensatz benutzt (Default-Einstellung). Bevor Sie also das Init-Script z.B. im Runlevel-Editor des YAST starten, sollten Sie mit dem Sysconfig-Editor (im Yast: System->Editor für Sysconfig-Dateien) die Variable POSTGRES_LANG (im Yast: Suche nach "POSTGRES") auf die deutsche Locale de_DE@euro setzen. Außerdem sollten Sie dann die Variable POSTGRES_OPTIONS=-i
setzen.
Noch ein Fallstrick in SuSE 9.1: Wegen eines Bugs im Yast funktioniert die Suche im Sysconfig-Editor nur im Textmodus.

 

 

Dann müssen Sie die ip-Nummer des Rechners mit dem SuperX-Webserver (sowie von allen anderen Clients, die direkt auf die Datenbank zugreifen sollen) in die Datei /usr/local/pgsql/data/pg_hba.conf eintragen. In der Datei $PGDATA/pg_hba.conf stehen die Verbindungsberechtigungen für der Server; hier müssen Sie mindestens dem User superx die Verbindungsrechte geben, z.B. mit folgender Zeile:

 

Auszug aus pg_hba.
conf

host    all         all         127.0.0.1/32         trust
host    all         all         192.168.0.16/32      trust

Die obige Zeile gibt dem User superx Verbindungsrechte für alle Datenbanken auf dem lokalen Rechner 192.168.0.16.

Bitte beachten Sie, dass die Standardvorgabe nach der Installation von Postgres die ist, dass alle User auf dem aktuellen Rechner mit dem Datenbankserver verbinden dürfen. Dies sollten Sie natürlich ändern.

Weitere Parameter werden in der Konfigurationsdatei postgresql.conf definiert; wichtig ist die Einstellung, dass Postgres einen TCP-IP-Socket öffnet (Parameter tcpip_socket=true bei Postgres 7.x, listen_addresses=<<IP-Nr.>> bei Postgres 8.0 oder höher) sowie der TCP-IP-Port (port = 5432 ist die Standardvorgabe). Die Anzahl der gleichzeitig offnenen Verbindungen muss kleiner sein als die Anzahl, die Sie für das SuperX-Servlet definieren. Weitere Details zur Einrichtung von Postgres-Runtime-Parametern finden Sie im Admin-Handbuch der Postgres-Distribution. Außerdem sollen Sie beim Betriebssystem SuSE 9.1 oder höher den IPV6-Eintrag für "localhost" (::1)  in /etc/hosts auskommentieren.

Danach wird der Datenbankserver gestartet mit dem Befehl postmaster.
/usr/local/pgsql/bin/postmaster -i -D /usr/local/pgsql/data

Wir empfehlen, die Ausgabe von dem Prozeß in eine Logdatei zu schreiben, z.B. nach /var/log/postgresql.log. Legen Sie diese Datei als User root an, und machen Sie dann den User postgres zum Eigentümer. Ein Beispielscript ist folgendes (im Kernmodul zu finden unter $SUPERX_DIR/db/install):

 

pgsql_start.x
Ein Beispielscript zum Start von Postgres

#!/bin/sh
PG_HOME=/usr/local/pgsql
export PG_HOME
PGDATA=$PG_HOME/data
export PGDATA
PGPORT=5432
export PGPORT
$PG_HOME/bin/pg_ctl -D $PGDATA -l /var/log/postgresql.log -o -i start

Um zu testen, ob die Locale richtig ist, gehen Sie als User postgres in die Shell:

 

Prüfen der Locale

Öffnen Sie mit
psql template1
die Datenbank; dann geben Sie ein:
select 'aaa' union select 'bbb' union select 'äää' order by 1;

Bei richtiger Locale lautet die Ausgabe:

?column?
----------
 aaa
 äää
 bbb
(3 rows)

 

Im Verzeichnis $SUPERX_DIR/db/install befindet sich ein Shellscript check_sortierung_pg.x, das prüft, ob die aktuell in der Umgebung festgelegten Variablen zu korrekter Darstellung von Umlauten und Sortierung unter Postgres der gewünschte Ergebnis bringen. Das Script legt einen temporären DBSPACE an, führt darin einen Testselect aus und löscht den DBSPACE wieder, in der Logdatei check_sortierung.log steht dann das Ergebnis. In dem Script muss die Variable PG_HOME korrekt gesetzt sein, der Rest wird automatisch geprüft.

Dann erzeugen Sie den User superx für Postgres:
createuser superx

Dieser User muss Datenbanken erzeugen dürfen, braucht aber, wenn Sie als SuperUser bereits die Prozedursprache plpgsql in template1 installiert haben, kein Super-User sein bzw. bei Postgres 7.4 das Recht haben, andere User erzeugen zu dürfen [5]. Aus Sicherheitsgründen empfehlen wir, den User superx, der standardmäßig auch der User ist, mit der die Webapplikation auf die Datenbank zugreift, nicht zum Super-User zu machen.

SuperX benötigt die Prozedursprache plpgsql. Wenn Sie als SuperUser die Prozedursprache installieren wollen, geben Sie in der Shell ein:

createlang plpgsql

Damit ist Postgres installiert und für die SuperX-Installation konfiguriert. Bei dieser Gelegenheit sollten Sie den Datenbankserver gleich als Dienst beim Systemstart einrichten.


Zur Superx-Homepage SuperX ist auch ein CampusSource-Projekt. Zur CampusSource-Homepage | Powered by FreeMarker Seite 27 / 277
Letzter Update: 18.08.2008
Impressum