YouTube-Video-Kurztipp: PostgreSQL-Upgrade von 13 auf 14 unter FreeBSD

Auch ein Datenbankserver sollte ab und an mal ein Update oder ein Upgrade bekommen. In diesem Video zeige ich, wie einfach es ist, von PostgreSQL-Version 13 auf 14 zu aktualisieren.

Systemadministration: PostgreSQL-Upgrade - Von Version 13 auf 14 unter FreeBSD
Systemadministration: PostgreSQL-Upgrade – Von Version 13 auf 14 unter FreeBSD

Kurz skizziert:

service postgresql stop

mv /server/database/postgres /server/database/postgres.13
mkdir /server/database/postgres
chown -R postgres:postgres /server/database/postgres

pkg create postgresql13-server
mkdir /tmp/pg-upgrade
tar xf postgresql13-server-13.7_1.pkg -C /tmp/pg-upgrade

pkg delete -f postgresql13-server postgresql13-client

pkg install postgresql14-server

service postgresql initdb

su -l postgres -c "pg_upgrade -b /tmp/pg-upgrade/usr/local/bin/ -d /server/database/postgres.13/ -B /usr/local/bin/ -D /server/database/postgres -U postgres"

cp /server/database/postgres.13/pg_hba.conf /server/database/postgres/pg_hba.conf
cp /server/database/postgres.13/postgresql.conf /server/database/postgres/postgresql.conf
Übersicht des Upgrades
Übersicht des Upgrades

Hier geht es zum Video.

Redmine-Reihe 2 von 3: Redmine für Administratoren

Willkommen zum dreiteiligen Workshop: Redmine 4. In diesem zweiten Teil geht es um “Redmine für Administratoren”.

Das Video erklärt einige grundsätzliche Informationen auf der administrativen Seite im Backend von Redmine.

Redmine für Administratoren

Folgende Dinge werden erklärt:

  • Adminkonto bearbeiten
  • Projekte erstellen, konfigurieren und verwalten
  • Benutzerverwaltung
  • Gruppenverwaltung
  • Rollen und Rechte
  • Trackerverwaltung
  • Ticket-Status-Verwaltung
  • Workflow
  • Benutzerdefinierte Felder
  • Aufzählungen
  • Redmine konfigurieren

Hier geht es zum Video.

Hier geht es zur Playlist.

Hier geht es zu Redmine installieren.

Redmine-Reihe 1 von 3: Redmine 4 installieren (auf FreeBSD 13)

Willkommen zum dreiteiligen Workshop: Redmine 4. Ich habe mir überlegt, ich mache einen kleinen Redmine-Einsteigerkurs. Dieser geht über drei Kapitel:

  • Redmine 4 installieren (in meinem Fall auf FreeBSD 13)
  • Redmine 4 für Administratoren (GUI)
  • Redmine 4 für Benutzer (GUI)
Redmine - Installation
Redmine – Installation

In diesem Video und Blog-Artikel geht es darum, wie man Redmine einfach installieren kann. Ich setze dafür folgendes voraus:

  • Du hast ein lauffähiges und vollständig gepatchtes FreeBSD 13 (oder neuer)
  • Du hast einen lauffähigen PostgreSQL-Server (wie das geht, erfährst du hier und hier)
  • Nameservereinträge sind bereits vorhanden (in meinem Fall heißt mein Host redmine.gug-it.gg, welchen ich hier auch in der Beschreibung überall nutze. Das musst du natürlich anpassen!)

So wird es gemacht

Erstelle einen Datenbankbenutzer. Wie das bei deiner PostgreSQL-Version geht, entnimmst du den Manuals. Achte darauf, dem Benutzer ein verschlüsseltes Kennwort zu geben. Ich habe noch ein (uraltes) PostgreSQL 9.5 auf meiner Testmaschine laufen (du solltest hoffentlich was neueres haben), und da geht es so:

createuser -E -P redmine

Dann erstellst du noch die Datenbank, was bei mir so geht:

createdb -E unicode -O redmine redmine

und vergisst natürlich nicht den Eintrag in der pg_hba.conf

host redmine redmine 192.168.0.168/24 password

Denke daran, Datenbanknamen, Datenbankbenutzer und IP anzupassen!

Ich nutze Apache in der Version 2.4. Wenn du was anderes benutzt, dann musst du leider schauen, wie du es ans Rennen bekommst. Ich installiere also alle benötigten Pakete:

pkg install redmine4 apache24 ap24-mod_fastcgi fcgi-devkit postgresql14-client

In der httpd.conf (/usr/local/etc/apache24) setzt du, wenn du es noch nicht getan hast, den Servernamen sowie die E-Mail-Adresse (wobei die auch im VHost eingerichtet wird). Weiterhin entfernst du bei den Zeilen:

LoadModule rewrite_module libexec/apache24/mod_rewrite.so
LoadModule fastcgi_module libexec/apache24/mod_fastcgi.so
Include etc/apache24/extra/httpd-vhosts.conf

die Raute (#) vorne, so dass die Zeilen genutzt werden innerhalb der Konfiguation. Und der aufmerksame Leser weiß es: ich nutze hier jetzt im Beispiel kein SSL! Bitte mache das, und mache das auf jeden Fall, wenn Redmine im Internet hängt! Das wäre jetzt einfach nur zu aufwendig für das Tutorial.

Server-Kram liegt bei mir unter /server. Web-Kram dementsprechend unter /server/web/<sld>/<t(hird)ld>. Passe die Konfiguration bei dir an. Dementsprechend richte ich das Verzeichnis folgendermaßen ein:

mkdir -p /server/web/gug-it && chown -R www:www /server/web/gug-it
ln -s /usr/local/www/redmine /server/web/gug-it/

Dann bearbeite ich die Datei /usr/local/etc/apache24/extra/httpd-vhosts.conf (du hoffentlich /usr/local/etc/apache24/extra/httpd-ssl.conf). Da füge ich folgenden Eintrag hinzu:

<VirtualHost *:80>
        ServerName redmine.gug-it.gg
        ServerAdmin thorsten@tgeppert.de

        DocumentRoot "/server/web/gug-it/redmine/public"

        FastCgiServer /server/web/gug-it/redmine/public/dispatch.fcgi -idle-timeout 120 -initial-env RAILS_ENV=production -initial-env PATH=/usr/local/bin -processes 2

        <Directory /server/web/gug-it/redmine/public>
                AddHandler fastcgi-script fcgi
                Require all granted
                AllowOverride all
                Options +FollowSymLinks +ExecCGI
                RewriteEngine On
                RewriteCond %{REQUEST_FILENAME} !-f
                RewriteRule ^(.*)$ dispatch.fcgi
        </Directory>

        ErrorLog "/var/log/redmine.gug-it.gg-error_log"
        CustomLog "/var/log/redmine.gug-it.gg-access_log" common
</VirtualHost>

Dann kopiere ich noch die dispatch.fcgi (wir nutzen FastCGI) an die richtige Stelle und mache sie ausführbar:

cp /usr/local/www/redmine/public/dispatch.fcgi.example /usr/local/www/redmine/public/dispatch.fcgi
chmod +x /usr/local/www/redmine/public/dispatch.fcgi

Jetzt geht es an die Netzwerkkonfiguration. Die Daten dazu liegen dir hoffentlich vor.

cp /usr/local/www/redmine/config/database.yml.sample /usr/local/www/redmine/config/database.yml

Die bearbeiten wir dann mit dem Editor unserer Wahl und geben die richtigen Daten ein:

production:
  adapter: postgresql
  database: redmine
  host: thorsten.jails.gug-it.gg
  username: redmine
  password: "redmine"
  # Use "utf8" instead of "utfmb4" for MySQL prior to 5.7.7
  encoding: utf8

Nicht vergessen, ich nutze PostgreSQL. Wenn du MySQL oder anderes nutzt, musst du das natürlich beachten! Mein Datenbankserver liegt auf “thorsten.jails.gug-it.gg”.

Als nächstes müssen wir noch ein paar Module zu unserem Redmine hinzufügen. Wir erstellen im Verzeichnis /usr/local/www/redmine die Datei Gemfile.local mit folgendem Inhalt:

gem 'pg'
gem 'fcgi'

und führen dann folgende Befehle aus:

bundle install
rake generate_secret_token
setenv RAILS_ENV production
rake db:migrate
rake redmine:load_default_data

Um Dateiuploads durchführen zu können, müssen wir noch die Datei configuration.yml anlegen. Dazu kopieren wir die Example-Datei einfach:

cp /usr/local/www/redmine/config/configuration.yml.example /usr/local/www/redmine/config/configuration.yml

und setzen dort den attachments_storage_path auf ein sinnvolles Verzeichnis, in meinem Fall “/server/files/redmine”. Ich lege das Verzeichnis an:

mkdir -p /server/files/redmine
chown -R www:www /server/files/redmine

und trage dann in usr/local/www/redmine/config/configuration.yml folgendes ein:

attachments_storage_path: /server/files/redmin

Ich lasse an dieser Stelle die E-Mail-Konfiguration mal aus, weil das recht spezifisch ist. Kommt ganz darauf an, was du brauchst, aber schau dir die Konfigurationsdatei einmal an und du wirst schnell verstehen, wie das funktioniert.

Wenn wir dann Apache starten (oder neustarten), können wir auf Redmine zugreifen. Die Standardzugangsdaten lauten:

Benutzername: admin, Kennwort: admin

Du wirst direkt aufgefordert, dein Kennwort zu ändern. Jetzt kannst du direkt loslegen.

Hier geht es zum Video.

Hier geht es zur Playlist.

Hier geht es zu Redmine für Administratoren.

YouTube-Video – Kurztipp: Installation von PostgreSQL auf FreeBSD

Ich dachte mir, ich mache mal ein Video zum Thema: wie installiere ich PostgreSQL auf FreeBSD. Hier ist der Link.

Titelbild PostgreSQL auf FreeBSD installieren
PostgreSQL auf FreeBSD installieren

In dieser Anleitung gehe ich davon aus, dass wir ein frisch installiertes FreeBSD 13 auf dem Rechner haben. Schauen wir uns erst einmal an, welche PostgreSQL-Versionen zur Verfügung stehen:

# pkg search postgresql | grep server

Neben Version 9.6 und 10 bis 13 gibt es bei mir in den Packages die Version 14. Genau diese möchten wir auch installieren:

# pkg install postgresql14-server

Wir bestätigen die Installation des Pakets sowie dessen Abhängigkeiten mit [y] gefolgt von [Enter]. Je nach Internetgeschwindigkeit kann das Herunterladen ein wenig dauern. Bei mir werden, auf einem frischen FreeBSD, 167MB heruntergeladen.

Nach der Installation fügen wir folgende Zeilen in die /etc/rc.conf ein:

postgresql_enable="YES"
postgresql_data="/server/database/postgres"
postgresql_flags="-s"
postgresql_initdb_flags="--encoding=utf-8 --lc-collate=C"

Zeile 1 bedeutet, dass PostgreSQL beim Starten des Betriebssystems automatisch gestartet werden soll und sich auch mit „service“ und „start“ starten lässt (anstelle mit onestart).

Zeile 2 legt fest, wo im Dateisystem die Datenbanken liegen sollen. In meinem Fall lautet der Pfad „/server/database/postgresql“. Den müssen wir aber erst erstellen und ihm die richtigen Rechte zuweisen. Wenn du möchtest, dass deine Daten woanders liegen, musst du den Pfad anpassen:

# mkdir -p /server/database/postgres && chown -R postgres:postgres /server/database/postgres

Zeile 3 beinhaltet einige Flags für den Start von PostgreSQL (-s bedeutet „silent“, es werden nur Fehlermeldungen ausgegeben).

In Zeile 4 wird das Standardencoding auf Unicode 8 gestellt.

Ist das alles erledigt, muss zunächst die Datenbank initialisiert werden:

# service postgresql initdb

Wir möchten jetzt aber von außen z.B. mit unserer eigenen Software oder per pgAdmin4 oder mit anderen Datenbanktools auf die Datenbank zugreifen.

Zuerst müssen wir die Datei „/server/database/postgres/postgresql.conf“ bearbeiten und die Zeile mit „listen_addresses“ auf * setzen (oder auf die IP, auf die PostgreSQL lauschen soll).

Dann müssen wir die Datei „/server/database/postgres/pg_hba.conf“ bearbeiten und unter „IPv4 local connections“ eine Zeile anlegen:

Host all all 192.168.0.0/24 password

Hier liegt allerdings der Hund der Sicherheit begraben. Wir sagen damit, dass alle Hosts in dem Netzwerk 192.168.0.0/24 (ihr müsst eure IP natürlich dementsprechend anpassen) mit allen Benutzern auf alle Datenbanken zugreifen können. Das ist schlecht, deshalb überlegt euch ein vernünftiges Sicherheitskonzept! Darum geht es hier allerdings nicht.

Als nächstes können wir PostgreSQL schon starten:

# service postgresql start

Jetzt legen wir noch einen Benutzer an. Nennen wir ihn „Kalle“ und geben ihm auch als Kennwort „Kalle“. Er soll SuperUser sein und Datenbanken anlegen, aber auch löschen können.

# su – postgres

$ createuser -s -P Kalle

Jetzt könnt ihr euch auf euren PostgreSQL-Server verbinden. Achtet darauf, dass dazu der PostgreSQL-Port (Standard 5432) in eurer Firewall freigeschaltet sein muss.

Hier geht’s zum Video.