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
- Anforderungen
- Den Benutzer und die Datenbank anlegen
- pgcrypto
- Die Verbindung erlauben
- Die Einstellungen
- Installieren
- Erste Prüfungen
- Checkliste
Anforderungen
- PostgreSQL 13 oder neuer (der Assistent akzeptiert 8.0, aber
pgcryptoist 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
pgsqlin jedem PHP, das die Website verwendet (PHP-Erweiterungen je Engine). - Das Contrib-Paket von PostgreSQL Ihrer Distribution, das
pgcryptoenthä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
publiceiner 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=template0lässt Sie die Kodierung unabhängig vom Standard des Servers wählen.--pwpromptfragt 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_addressesinpostgresql.confmuss die Adresse enthalten, mit der sich die Webserver verbinden (für eine Datenbank auf derselben Maschine genügtlocalhost);pg_hba.confbraucht 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=disabledDie 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-userexp: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:
pgcryptoexistiert in der Datenbank der Website. - To do:
pg_hba.conferlaubt nur die Webserver, mit einer Passwortmethode. - To do: Das Konto ist kein Superuser.
- To do: Sicherungen mit
pg_dump -Fcsind eingeplant (Sicherungen je Engine).
Verwandte Seiten
- PostgreSQL betreiben: Sequenzen, Groß-/Kleinschreibung und Stolperfallen
- Datenbankkonten und Rechte
- PostgreSQL für Hoster
- Datenbanken und Benutzer in Hosting-Panels
- Freie Dokumentation: Diese Seite darf unter der GNU FDL 1.3 frei kopiert, übersetzt und verbessert werden.
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.