Für die Installation von Movable Type auf OpenBSD brauchte ich eine Datenbank. Die Wahl fiel auf PostgreSQL. Hier ist was ich tat, um PostgreSQL nach meinen Vorstellungen zu konfigurieren.
Diese Anleitung ist an einigen Stellen OpenBSD-spezifisch. Bei Linux muß logrotate statt newsyslog benutzt werden.
Zuerst muß man den Quelltext herunterladen und an geeigneter Stelle extrahieren. Den Quelltext kompilieren und die fertigen Programme zu installieren funktioniert mit dem üblichen GNU-Dreisatz: (die letzte Zeile sollte man als root aufrufen)
./configure—prefix=/usr/local—with-perl—with-openssl=/usr make make install
Damit hat man schon mal alle nötigen Programme installiert. PostgreSQL braucht aber noch einige Vorarbeit, um zu funktionieren. PostgreSQL möchte unter einem eigenen Benutzer laufen. Die folgenden Zeilen legen diesen Benutzer samt passender Gruppe an. (natürlich als root)
groupadd -g 164 pgsql useradd -c “PostgreSQL Admin User” -d /var/pgsql -g 164 -u 164 -s /bin/sh pgsql
Nun fehlt noch das Datenbankverzeichnis, in dem PostgreSQL seine Daten ablegt. Dieses Verzeichnis sollte dem PostgreSQL-Benutzer gehören.
mkdir /var/pgsql chown pgsql:pgsql /var/pgsql chmod 755 /var/pgsql
Jetzt muß die Datenbank initialisiert werden. Da alle Dateien im Datenbankverzeichnis dem PostgreSQL-Benutzer gehören sollten, sollte dies als der PostgreSQL-Benutzer geschehen.
su pgsql /usr/local/bin/initdb -D /var/pgsql/data
Damit ist die Datenbank im Grunde fertig und kann benutzt werden. Es fehlen aber noch einige Kleinigkeiten, damit das alles rund läuft.
Zuerst soll PostgreSQL beim Booten gestartet werden. Die nächsten Zeilen sollten an passender Stelle in die /etc/rc.local
aufgenommen werden: (wieder als root)
if [ -x /usr/local/bin/pg_ctl ]; then su -l pgsql -c “/usr/local/bin/pg_ctl start \ -D /var/pgsql/data -l /var/pgsql/logfile” echo -n ‘ postgresql’ fi
Natürlich soll PostgreSQL beim Herunterfahren von OpenBSD sauber beendet werden, um inkonsistenzen in der Datenbank zu verhindern. Dies erledigen diese Zeilen in der /etc/rc.shutdown
:
if [ -f /var/pgsql/data/postmaster.pid ]; then su -l pgsql -c “/usr/local/bin/pg_ctl stop \ -D /var/pgsql/data” echo -n ‘ postgresql’ fi
PostgreSQL soll über syslogd(8)
loggen. Das macht es einfacher, auf einem zentralen Logging-Host zu loggen. Hier müssen in der /var/pgsql/data/postgresql.conf
3 Zeilen angepasst werden. Die Zeilen stehen schon in der Datei drin, sind jedoch auskommentiert.
syslog = 2 # range 0-2; 0=stdout; 1=both; 2=syslog syslog_facility = ‘LOCAL0’ syslog_ident = ‘postgres’
Selbverständlich muß der syslogd(8)
auch wissen, was er mit den Daten anfangen soll. Darum kümmert sich diese Zeile in der /etc/syslog.conf
:
local0.* /var/log/pgsql
Bevor der syslogd(8) nun restarted wird, damit er anfangen kann zu loggen, sollte noch ein leeres Logfile angelegt werden, da der syslogd(8) dies in der Regel nicht tut. Mit touch /var/log/pgsql
entsteht ein leeres Logfile an. Schicke ein SIGHUP an syslogd(8)
um ihn zu restarten.
Die Logfiles sollten noch in regelmäßigen Abständen rotiert werden, damit das Dateisystem nicht überläuft. Bei OpenBSD kümmert sich newsyslog(8)
um das Rotieren von Logfiles. Eine Zeile in der /etc/newsyslog.conf
erledigt dies:
/var/log/pgsql 640 7 * 168 Z
Damit ist PostgreSQL nun bereit zum Einsatz. Um den Server nun endlich zu starten, kann der gleiche Code benutzt werden, wie er auch in der /etc/rc.local
steht. Viel Spaß mit PostgreSQL.