Skip to the content
Documentation
Help Start
Reading in:
  • German: 9,059 of 9,059 pages
About the help in other languages
All help pages

PostgreSQL einrichten

Wie Sie PostgreSQL für eine Exponential-Website vorbereiten - der Benutzer und eine UTF8-Datenbank, deren Eigentümer er ist, die Erweiterung pgcrypto, die der Treiber für MD5 braucht, der Einstellungsblock, die…

Download as PDF

Address: https://doc.exponential.earth/learninminutes/exphelp/viewer/help/database-administrators/postgresql-setup.md

On this page

This page is a translation. Read the English original

PostgreSQL einrichten

Diese Seite richtet sich an Datenbankadministratoren, die PostgreSQL, den empfohlenen Datenbankserver des Projekts, für eine Exponential-Website vorbereiten. Sie beantwortet: wie Sie das Konto und die Datenbank anlegen, warum das Konto Eigentümer der Datenbank sein muss, warum pgcrypto gebraucht wird und wie Sie es bereitstellen, wie die Einstellungen aussehen und wie Sie den Installer ausführen. Quelle: 9.4 PostgreSQL; Treiber lib/ezdb/classes/ezpostgresqldb.php.

Inhalt

  1. Anforderungen
  2. Den Benutzer und die Datenbank anlegen
  3. pgcrypto
  4. Die Verbindung erlauben
  5. Die Einstellungen
  6. Installieren
  7. Erste Prüfungen
  8. Checkliste

Anforderungen

  • PostgreSQL 13 oder neuer (der Assistent akzeptiert 8.0, aber pgcrypto ist erst ab 13 eine vertrauenswürdige Erweiterung, und darauf verlässt sich der Installer). Die CI des Projekts verwendet PostgreSQL 15; der Entwicklungsserver 13.
  • Die PHP-Erweiterung pgsql in jedem PHP, das die Website verwendet (PHP-Erweiterungen je Engine).
  • Das Contrib-Paket von PostgreSQL Ihrer Distribution, das pgcrypto enthält, falls der Server es noch nicht hat.

Den Benutzer und die Datenbank anlegen

sudo -u postgres createuser --pwprompt exponential
sudo -u postgres createdb --owner=exponential --encoding=UTF8 --template=template0 exponential
  • Der Eigentümer ist wichtig. Ab PostgreSQL 15 dürfen gewöhnliche Benutzer im Schema public einer Datenbank, deren Eigentümer sie nicht sind, keine Tabellen mehr anlegen. Macht man das Konto der Website zum Eigentümer, erhält es, was der Installer und jede spätere Update-Datei brauchen, und nicht mehr.
  • --template=template0 lässt Sie die Kodierung unabhängig vom Standard des Servers wählen.
  • --pwprompt fragt nach dem Passwort, statt es von der Kommandozeile zu nehmen.

Keiner der Installer legt die Datenbank oder den Benutzer an; legen Sie sie zuerst an.

pgcrypto

Der Treiber berechnet MD5 mit encode(digest(..., 'md5'), 'hex'), und digest() kommt aus pgcrypto. Der Installer führt CREATE EXTENSION IF NOT EXISTS pgcrypto aus, wenn der Server die Erweiterung mitbringt; als vertrauenswürdige Erweiterung darf der Eigentümer der Datenbank sie anlegen. Fehlt sie auf dem Server, installieren Sie das Contrib-Paket und dann, als Eigentümer oder Superuser:

sudo -u postgres psql -d exponential -c 'CREATE EXTENSION IF NOT EXISTS pgcrypto;'

Fehlt sie, meldet der Einrichtungsassistent: "The 'digest' function is not available in your database, and Exponential cannot run without it." Legen Sie die Erweiterung an und klicken Sie erneut auf Weiter. Auch die Update-Dateien brauchen digest() (11.3 Hinweise je Datenbank).

Die Verbindung erlauben

"Connection refused" oder ein Authentifizierungsfehler bei der ersten Verbindung liegt meist an der eigenen Konfiguration des Servers:

  • listen_addresses in postgresql.conf muss die Adresse enthalten, mit der sich die Webserver verbinden (für eine Datenbank auf derselben Maschine genügt localhost);
  • pg_hba.conf braucht eine Zeile, die dem Benutzer der Website von den Adressen der Webserver aus den Zugriff auf die Datenbank der Website mit einer Passwortmethode erlaubt.

Laden Sie PostgreSQL nach einer Änderung neu. Maßgeblich ist das Kapitel Client Authentication von PostgreSQL.

Die Einstellungen

In settings/override/site.ini.append.php (die Installer schreiben sie):

[DatabaseSettings]
DatabaseImplementation=ezpostgresql
Server=localhost
# 5432 is the server's default
Port=5432
User=exponential
Password=<the password>
Database=exponential
# enabled: pg_pconnect instead of pg_connect
UsePersistentConnection=disabled

Die Aliase postgresql und pgsql nennen denselben Treiber.

Installieren

EXP_INSTALL_DB_PASSWORD='<the password>' php bin/php/console exp:install --apply --db=pgsql \
    --db-host=127.0.0.1 --db-name=exponential --db-user=exponential --allow-root-user

exp:install nimmt das Passwort aus EXP_INSTALL_DB_PASSWORD, sodass es nicht in der Prozessliste erscheint. --db=postgresql und --db=postgres werden ebenfalls akzeptiert. Der Einrichtungsassistent füllt Port 5432 und Benutzer postgres vor (settings/setup.ini DefaultPort_pgsql, DefaultUser_pgsql); ersetzen Sie den Benutzer durch das Konto der Website. Der Kickstarter nimmt [database_choice] Type=pgsql.

Erste Prüfungen

psql -U exponential -d exponential -c '\dx'                       # pgcrypto is listed
psql -U exponential -d exponential -c "SELECT name, value FROM ezsite_data WHERE name LIKE 'ezpublish-%';"
psql -U exponential -d exponential -c '\dt' | wc -l               # the kernel's tables are there

Öffnen Sie dann Setup > Systeminformationen: Die Karte Datenbank zeigt PostgreSQL, die Serverversion und UTF8.

Checkliste

  • To do: PostgreSQL 13 oder neuer, ein Release mit Sicherheitsunterstützung.
  • To do: Das Konto der Website ist Eigentümer der Datenbank; die Datenbank ist UTF8.
  • To do: pgcrypto existiert in der Datenbank der Website.
  • To do: pg_hba.conf erlaubt nur die Webserver, mit einer Passwortmethode.
  • To do: Das Konto ist kein Superuser.
  • To do: Sicherungen mit pg_dump -Fc sind eingeplant (Sicherungen je Engine).

Verwandte Seiten

Werden Sie Exponential-Partner

Partner teilen ihre Informationen, stellen Mittel bereit, geben Beiträge zurück und entwickeln die Produkte mit uns, und so wächst Exponential. Eine Partner-Website und ein Dashboard sind für Mitte 2027 geplant: Werden Sie noch heute Partner, damit wir schneller wachsen und neue Funktionen früher liefern.

Something wrong on this page? Report an error

Documentation license

This documentation is free documentation, licensed under the GNU Free Documentation License 1.3 or later.

Exponential Copyright © 1998-2026 Exponential Foundation and 7x