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:
sudo apt update
sudo apt install -y postgresql nginx php-fpm php-cli php-pgsql
Anschliessend werden die Dienste aktiviert und gestartet:
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:
sudo -u postgres psql
Danach werden ein eigener Datenbankbenutzer und die Projektdatenbank erstellt:
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:
\c psqlplayground
3. Tabelle für Beiträge erstellen
Die Anwendung verwendet eine Tabelle namens posts:
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:
GRANT SELECT, INSERT, UPDATE, DELETE
ON TABLE posts TO psqlplayground;
4. nginx mit PHP-FPM konfigurieren
Als Webroot ist im Projekt folgendes Verzeichnis vorgesehen:
/var/www/html/psql-playground
Die Beispielkonfiguration für nginx lautet:
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:
sudo nginx -t
Wenn die Prüfung erfolgreich ist, kann nginx die Konfiguration neu laden:
sudo systemctl reload nginx
5. Datenbankverbindung testen
Die Anmeldung mit dem Anwendungsbenutzer wird separat geprüft:
psql -h localhost -U psqlplayground -d psqlplayground
Innerhalb von psql lässt sich anschliessend die Tabelle abfragen:
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.