Zum Inhalt

19. Okt. 2026 · Webentwicklung · 4 Min. Lesezeit

PostgreSQL Playground mit PHP und nginx

Eine einfache PHP-Anwendung mit PostgreSQL auf Debian einrichten: Pakete installieren, Datenbank vorbereiten und nginx mit PHP-FPM konfigurieren.

Ein Playground für PHP und PostgreSQL

Der PostgreSQL Playground ist eine einfache PHP-Anwendung mit einer PostgreSQL-Datenbank. nginx übernimmt die Webserver-Konfiguration, PHP-FPM verarbeitet die PHP-Anfragen.

Das Projekt dient als Grundlage, um die Verbindung zwischen einer Webanwendung und einer Datenbank nachzuvollziehen.

Verwendete Technologien

  • Debian Stable als Betriebssystem
  • nginx als Webserver
  • PHP-FPM für die Verarbeitung von PHP
  • PostgreSQL als Datenbank
  • PDO_PGSQL für den Datenbankzugriff aus PHP

1. Pakete installieren

Zuerst werden die Paketinformationen aktualisiert und die benötigten Pakete installiert:

bash
sudo apt update
sudo apt install -y postgresql nginx php-fpm php-cli php-pgsql

Anschliessend werden die Dienste aktiviert und gestartet:

bash
sudo systemctl enable --now postgresql nginx php8.4-fpm

Die Projektkonfiguration verwendet PHP 8.4. Der Dienstname und der PHP-FPM-Socket müssen zur tatsächlich installierten PHP-Version passen.

2. Datenbank und Benutzer erstellen

Die PostgreSQL-Konsole wird mit dem administrativen Benutzer geöffnet:

bash
sudo -u postgres psql

Danach werden ein eigener Datenbankbenutzer und die Projektdatenbank erstellt:

sql
CREATE USER psqlplayground WITH PASSWORD 'YOUR_PASSWORD';
CREATE DATABASE psqlplayground OWNER psqlplayground;

YOUR_PASSWORD ist ein Platzhalter und muss durch ein eigenes Passwort ersetzt werden.

Mit folgendem Befehl wird innerhalb von psql zur Projektdatenbank gewechselt:

sql
\c psqlplayground

3. Tabelle für Beiträge erstellen

Die Anwendung verwendet eine Tabelle namens posts:

sql
CREATE TABLE posts (
    id BIGINT GENERATED ALWAYS AS IDENTITY PRIMARY KEY,
    title TEXT NOT NULL,
    body TEXT NOT NULL,
    created_at TIMESTAMP DEFAULT CURRENT_TIMESTAMP
);

Die Tabelle enthält folgende Felder:

  • id: automatisch erzeugte ID des Beitrags
  • title: Titel des Beitrags
  • body: Inhalt des Beitrags
  • created_at: Zeitpunkt der Erstellung

Tabellenberechtigungen vergeben

Falls erforderlich, erhält der Anwendungsbenutzer die Berechtigungen zum Lesen, Erstellen, Ändern und Löschen von Beiträgen:

sql
GRANT SELECT, INSERT, UPDATE, DELETE
ON TABLE posts TO psqlplayground;

4. nginx mit PHP-FPM konfigurieren

Als Webroot ist im Projekt folgendes Verzeichnis vorgesehen:

text
/var/www/html/psql-playground

Die Beispielkonfiguration für nginx lautet:

nginx
server {
    listen 80;
    server_name postgres.local;

    root /var/www/html/psql-playground;
    index index.php index.html;

    location / {
        try_files $uri $uri/ =404;
    }

    location ~ \.php$ {
        include snippets/fastcgi-php.conf;
        fastcgi_pass unix:/run/php/php8.4-fpm.sock;
    }
}

postgres.local ist der Beispielhostname aus der Projektkonfiguration. Die Konfiguration muss zum eigenen Setup passen.

Konfiguration testen

Nach der Anpassung wird die nginx-Konfiguration geprüft:

bash
sudo nginx -t

Wenn die Prüfung erfolgreich ist, kann nginx die Konfiguration neu laden:

bash
sudo systemctl reload nginx

5. Datenbankverbindung testen

Die Anmeldung mit dem Anwendungsbenutzer wird separat geprüft:

bash
psql -h localhost -U psqlplayground -d psqlplayground

Innerhalb von psql lässt sich anschliessend die Tabelle abfragen:

sql
SELECT * FROM posts;

Wichtige Punkte für die Anwendung

Zur Projektdokumentation gehören auch folgende Vorgaben:

  • Datenbankzugangsdaten nicht im Quellcode hinterlegen.
  • Benutzereingaben mit Prepared Statements verarbeiten.
  • HTML-Ausgaben mit htmlspecialchars() maskieren.
  • Die Datenbank regelmässig sichern.

Stand der Dokumentation

Dieser Eintrag dokumentiert die Server- und Datenbankeinrichtung. Der PHP-Anwendungscode und die Bedienoberfläche sind nicht Bestandteil dieser Anleitung.