PostgreSQL mit DarwinPorts - aber bitte komfortabel!

Ich benutze DarwinPorts als Paketmanager und installiere Software wenn möglich über dieses System - so auch PostgreSQL.

So weit, so gut. Bei der Installation gibt es zwei kleinere Probleme: Zum einem warnt einen DarwinPorts nicht, dass man noch ein paar Schritte zu gehen hat, bis der PostgreSQL server läuft und zum anderen habe ich für Daemons gerne sogenannte StartupItems, also Skripten, über die man Hintergrundprogramme komfortabel starten und beenden kann. Davon ganz zu schweigen, dass sie auch beim Start von Mac Os X automatisch geladen werden.

Der Worte sind genug gewechselt, lasst uns nun endlich Taten sehen. Für die Installation installiere ich erstmal PostgreSQL mit dem ports Kommando:

$> sudo ports install postgresql

Danach richte ich einen neuen Benutzer postgres und eine neue Gruppe postgres ein. Der Server soll dann unter diesem Benutzer laufen. Das ist unter Os X ein bisschen trickreich: Ich benutze die Kommandozeilenversion vom NetInfo Manager: niutil. Ich erstelle den Benutzer und die Gruppe mit der Nummer 401 und würde eine andere nehmen, wenn die Nummer schon belegt wäre.

$> sudo niutil -create /groups/postgres
$> sudo niutil -createprop /groups/postgres gid 401
$> sudo niutil -create /users/postgres
$> sudo niutil -createprop /users/postgres uid 401
$> sudo niutil -createprop /users/postgres gid 401
$> sudo niutil -createprop /users/postgres home /opt/local/var/pgsql

Nun erstelle ich die nötigen Verzeichnisse und vergebe die korrekten Berechtigungen:

$> sudo mkdir -p /opt/local/var/postgres/data
$> sudo chown -R postgres:postgres /opt/local/var/postgres
$> sudo chmod -R ug=rwx /opt/local/var/postgres
$> sudo chmod -R o-rwx /opt/local/var/postgres
$> sudo mkdir -p /var/log/postgres
$> sudo chown -R postgres:postgres /var/log/postgres
$> sudo touch /var/log/postgres/logfile
$> sudo chmod -R ug=rwx /var/log/postgres
$> sudo chmod -R o-rwx /var/log/postgres

Als nächstes initialisiere ich die PostgreSQL Datenbank in /opt/local/var/pgsql/data:

$> su - postgres \
  -c "/opt/local/bin/initdb /opt/local/var/pgsql/data"

Nun installiere ich das StartupItem von Marc Liyanage.

Dann modifiziere ich die Datei /Library/StartupItems/PostgreSQL/ PostgreSQL noch ein wenig. Das Ergebnis ist hinter diesem Link zu finden.

Fertig, ich kann PostgreSQL nun komfortabel starten und anhalten:

$> /Library/StartupItems/PostgreSQL/PostgreSQL start
Starting PostgreSQL database server
postmaster successfully started
$> /Library/StartupItems/PostgreSQL/PostgreSQL stop
Stopping PostgreSQL database services
waiting for postmaster to shut down……done
postmaster successfully shut down

Leave a Reply