====== SVP-BW in openML 4/5====== Die folgende Beschreibung geht davon aus, dass die IP des Servers die 10.32.1.1 ist. ===== Server ===== ==== PostgreSQL 8.2/8.4 installieren ==== Als erster Schritt wird PostgreSQL 8.2 bzw. 8.4 parallel zur vorhandenen Version installiert. Parallel deshalb, weil zum einen diverse Dienste der LML die Postgres-Datenbank verwenden, und so gibt es dabei keine Konflikte; zum anderen, weil SVP zwingend diese Version verlangt. === LML 4 -- PostgreSQL 8.2 installieren === == Repository einbinden == Man erstellt eine neue Datei ''postgresql.list'' im Verzeichnis ''/etc/apt/sources.list.d'' mit folgendem Inhalt: # Repository für den Etch-Backport von PostgreSQL 8.2 # Datei /etc/apt/sources.list.d/postgresql.list deb http://www.bluegap.ch/debian etch-backports main contrib non-free == Installieren == Die eigentliche Installation geschieht durch die folgenden Kommandos: aptitude update aptitude install -t etch-backports postgresql-8.2 Dabei gibt es die eine oder andere Warnung wegen eines fehlenden Schlüssels, die man aber ignorieren bzw. bestätigen kann. == Repository wieder deaktivieren == Damit es bei den normalen Upgrades keine Versionskonflikte gibt, sollte man das Repository wieder deaktivieren, indem man ein Kommentarzeichen vor die entsprechende Zeile setzt: # Repository für den Etch-Backport von PostgreSQL 8.2 # Datei /etc/apt/sources.list.d/postgresql.list # deb http://www.bluegap.ch/debian etch-backports main contrib non-free === LML 5 -- PostgreSQL 8.4 installieren === Bei der LML 5 installiert man gleich PostgreSQL 8.4, für das es ein Installationspaket in den Backports gibt. Das muss jedoch zuerst aktiviert werden. Dazu legt man im Verzeichnis ''/etc/apt/sources.list.d'' eine neue Datel namens ''lenny-backports.list'' an, die lediglich folgende Zeilen enthält: # Datei /etc/apt/sources.list.d/lenny-backports.list # deb http://backports.debian.org/debian-backports lenny-backports main # Achtung, ab Februar 2012 wird lenny nicht mehr offiziell unterstützt, weshalb einzutragen ist: deb http://archive.debian.org/debian-backports lenny-backports main Nun kann man PostgreSQL 8.4 installieren: aptitude update aptitude install -t lenny-backports postgresql-8.4 Im Auslieferungszustand wird die geforderte Latin1-Kodierung für Datenbanken nicht unterstützt. Man legt deshalb den Datenbankcluster mit den entsprechenden Einstellungen neu an: pg_dropcluster --stop 8.4 main pg_createcluster -p 15432 --locale=C -e latin1 8.4 main Nun fehlt noch das Start-Script: cd /etc/init.d cp -a postgresql-8.3 postgresql-8.4 update-rc.d postgresql-8.4 defaults In der Datei ''/etc/init.d/postgresql-8.4'' ersetzt man noch an mehreren Stellen die Versionsnummer 8.3 durch 8.4, sonst musss man daran nichts verändern. ==== PostgreSQL konfigurieren ==== Die Konfiguration ist bei der Version 8.2 und 8.4 fast identisch. Bei den angegebenen Pfaden erstzt man ''8.X'' jeweils durch ''8.2'' bzw. ''8.4''. Folgende Konfigurationseinstellungen regeln den Zugang zur PostgreSQL-Datenbank: In der Datei ''/etc/postgresql/8.X/main/pg_hba.conf'' modifiziert man die Zeile für den PostgreSQL-Superuser-Zugang: # Vorher # local all postgres ident # Version 8.2 ändern zu: local all postgres ident postgres # Version 8.4 ändern zu: local all postgres ident map=postgres In derselben Datei erlaubt man durch die folgende neue Zeile unter IPv4 dem User ''svpuser'' den Zugriff auf die Datenbank ''svpbw10db'' aus dem Intranet (User und Datenbank werden später angelegt): host svpbw10db svpuser 10.32.1.1 255.240.0.0 md5 Ganz am Ende der Datei ''/etc/postgresql/8.X/main/pg_ident.conf'' fügt man folgende Zeilen an: postgres root postgres postgres postgres postgres Nun muss man noch in der Datei ''/etc/postgresql/8.X/main/postgresql.conf'' die Option ''listen_addresses'' suchen. Man entfernt das Kommentarzeichen und erlaubt den Zugang aus allen Netzen: listen_addresses = '*' Wenige Zeilen darunter ändert man gegebenenfalls den Port so ab, dass es mit Updates keine Probleme gibt: port = 15432 Damit ist PostgreSQL 8.X vollständig konfiguriert und wird neu gestaret: /etc/init.d/postgresql-8.2 restart bzw. /etc/init.d/postgresql-8.4 restart Allerdings blockiert noch die interne Firewall jeden Zugriff auf die Datenbank aus dem Intranet. Um dies zu ändern, sucht man in der Datei ''/etc/linuxmuster/allowed-ports'' die Zeile, die mit ''tcp'' beginnt, und hängt den Port 15432 an. Die Zeile könnte danach etwa so ausehen: tcp domain,ldap,ldaps,ipp,auth,sunrpc,netbios-ssn,microsoft-ds,1095:1125,webcache,15432 Anschließend wird die Firewall neu gestartet: /etc/init.d/linuxmuster-base restart ==== SVP-Datenbank erstellen ==== Im PostgreSQL-Cluster erzeugt man eine neue Datenbank ''svpbw10db'' und einen User ''svpuser'', der diese Datenbank verwaltet. Dies leisten die folgenden Kommandos: psql -p 15432 -U postgres CREATE USER svpuser PASSWORD '12345'; CREATE DATABASE svpbw10db OWNER svpuser ENCODING 'latin1'; \q (Man darf natürlich ein besseres Kennwort nehemen, Achtung Strichpunkte!) Den Erfolg kann man mit den Befehlen ''\l'' und ''\du'' kontrollieren (bevor man mit \q das Programm verlässt). ==== Backup einrichten ==== Selbstverständlich wird man im Verwaltugsnetz ein regelmäßiges Backup erstellen. Bei der LML wird dazu normalerweise Mondorescue verwendet. Dabei werden auch alle Dateien, die zum PostgreSQL-Datenbanksystem gehören, mitgesichert. Um jegliches Risiko etwaiger Datenbank-Inkonsistenzen zu vermeiden, ist es empfehlenswert, zusätzlich die SVP-Datenbank in einer Textdatei zu sichern. Dazu legt man zum Beispiel folgendes Skript als Datei ''/usr/local/sbin/svp_backup'' an (für die Version 8.2 muss man wieder den Pfad für ''pg_dump'' anpassen): # Datei /usr/local/sbin/svp_backup OUTFILE=/home/backup/postgres/svpbw10db_dump_$(date +%Y%m%d.%H:%M) /usr/lib/postgresql/8.4/bin/pg_dump -p 15432 -U postgres svpbw10db > $OUTFILE chown root:root $OUTFILE chmod 0600 $OUTFILE Diese Datei muss ausführbar sein. Außerdem muss der Pfad ''/home/backup/postgres'' existieren. Die zugehörigen Linux-Befehle sind: chmod 0600 /usr/local/sbin/svp_backup mkdir -p /home/backup/postgres chmod 0700 /home/backup/postgres Nun richtet man noch ein tägliches Backup ein, zum Beispiel um 23:17 Uhr. Dazu genügt es, folgende Datei ''/etc/cron.d/svp_backup'' anzulegen: # Cronjob für SVP-Backup # Datei /etc/cron.d/svp_backup 17 23 * * * root /usr/local/sbin/svp_backup > /dev/null 2>&1 ==== Backup zurückspielen ==== Ein Backup nützt natürlich nur etwas, wenn man es auch wieder zurückspielen kann. Man löscht dazu zunächst die gesamte Datenbank und legt sie dann neu leer an. Anschließend liest man das Backup in die leere Datenbank ein. Im Einzelnen: psql -p 15432 -U postgres DROP DATABASE svpbw10db; CREATE DATABASE svpbw10db OWNER svpuser ENCODING 'latin1'; \q cd /home/backup/postgres psql -p 15432 -U postgres -f svpbw10db_dump_20100224.23:17 svpbw10db Wenn auch das nichts hilft, dann löscht man den gesamten Datenbankcluster und legt ihn neu an: # Version 8.2: pg_dropcluster --stop 8.2 main pg_createcluster -p 15432 8.2 main # Version 8.4: pg_dropcluster --stop 8.4 main pg_createcluster -p 15432 --locale=C -e latin1 8.4 main Nun wiederholt man die gesamte PostgreSQL-Konfiguration und spielt dann das Backup zurück ==== Upgrade von LML 4 auf LML 5 ==== Beim Upgrade der Musterlösung auf die Version 5 ist folgende Vorgehensweise zu empfehlen: == Backup erstellen == Das folgende Kommando erstellt eine komplette Sicherung der SVP-Datenbank: mkdir -p /home/backup/postgresql /usr/lib/postgresql/8.2/bin/pg_dump -p 15432 -U postgres svpbw10db > /home/backup/postgresql/svpbw10db_dump == PostgreSQL 8.2 deinstallieren == Um Konflikte beim Upgrade zu vermeiden, deinstalliert man PostgreSQL komplett: aptitude purge postgresql-8.2 rm /etc/init.d/postgresql-8.2 rm -r /etc/postgresql/8.2 rm -r /var/lib/postgresql/8.2 == Upgrade auf die LML 5 durchführen == Nun kann man ohne Kollisionen das Upgrade auf die LML 5 durchführen. == PostgreSQL 8.4 neu installieren und konfigurieren == Als nächstes installiert man PostgreSQL 8.4 nach obiger Anleitung für die LML 5. Auch die Konfiguration wiederholt man komplett. == Backup zurückspielen == Bleibt noch, die Daten aus dem Backup zurückzuspielen: psql -p 15432 -U postgres -f /home/backup/postgresql/svpbw10db_dump svpbw10db ===== Client ===== Auf den Clients installiert man das SVP-Client-Programm (man kann es, wie auch die Updates, im BWL-Intranet herunterladen). Beim ersten Start wird die Datenbank auf dem Server neu eingerichtet. Man sollte danach ein paarmal starten. Anschließend spielt man der Reihe nach die Updates ein. Nach jedem Update startet man mehrmals das Programm, bis sich das Verhalten beim Programmstart stabilisiert. (So ein Verhalten schafft natürlich großes Vertrauen in die Zuverlässigkeit von SVP). Das Client-Programm sollte man nicht auf einem Netzlaufwerk, sondern lokal nach ''C:\Programme'' installieren. Beim ersten Start muss man angeben, wie die PostgreSQL-Datenbank auf dem Server erreichbar ist: * Server: 10.32.1.1 * Port: 15432 * Datenbank: svpbw10db * User: svpuser * Kennwort: 12345