PostgreSQL mit DarwinPorts - aber bitte komfortabel!
Thursday, July 21st, 2005Ich 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


