Webserver unter Ubuntu 24.04 aufsetzen mit Apache2 oder Nginx

von | 16 Juni,2025 | Linux

Apache2 oder Nginx, PHP und MySQL, MariaDB oder PostgreSQL – Der große Praxis-Guide

In der heutigen digitalen Welt ist es für viele Projekte unerlässlich, einen eigenen Webserver zu betreiben. Egal, ob du einen Blog, ein CMS wie WordPress, eine eigene Anwendung oder einen kleinen Shop aufsetzen möchtest: Ein Webserver mit PHP und einer passenden Datenbank ist meist die Basis. In diesem Artikel zeige ich dir, wie du wahlweise Apache2 oder Nginx als Webserver und wahlweise MySQL, MariaDB oder PostgreSQL als Datenbank installierst – und das alles so, dass du als User einfach damit arbeiten kannst.

Diese Anleitung ist nur für eine Test-Umgebung im lokalen Netzwerk gedacht, nicht für eine Installation auf einem produktiven Server!

1. Die Komponenten im Überblick: Was brauchst du eigentlich?

a) Apache2 – Der Allrounder

Apache2 ist der älteste und am weitesten verbreitete Webserver der Welt.
Vorteile:

  • Sehr flexibel, viele Module

  • Riesige Community, viele Anleitungen

  • Fast alle Webanwendungen laufen „out of the box“

Nachteile:

  • Standardmäßig nicht so schnell wie Nginx

  • Etwas komplexere Konfiguration bei sehr hohen Lasten

b) Nginx – Der flinke Neue

Nginx (sprich: „Engine-X“) ist bekannt für seine Geschwindigkeit und Effizienz bei statischen Inhalten, wird aber auch als Reverse-Proxy und Application-Server genutzt.
Vorteile:

  • Sehr schnell, geringer Speicherverbrauch

  • Perfekt als Reverse Proxy

  • Statische Inhalte werden blitzschnell ausgeliefert

Nachteile:

  • Konfiguration für PHP/CGI ein wenig komplizierter (nutzt meist PHP-FPM)

  • Weniger .htaccess-Features (die viele aus Apache kennen)

c) PHP – Die Skriptsprache für Webanwendungen

PHP ist DIE Sprache für klassische dynamische Webseiten (WordPress, Joomla, Drupal etc.).
Es gibt viele Module, die für Datenbankanbindung, Uploads, Mail, uvm. gebraucht werden.

d) MySQL, MariaDB und PostgreSQL – Die Datenbanken

  • MySQL: Klassiker, weit verbreitet, besonders im LAMP-Stack (Linux, Apache, MySQL, PHP)

  • MariaDB: Fork von MySQL, schneller Release-Zyklus, vollständig Open Source, drop-in Replacement

  • PostgreSQL: Besonders leistungsfähig und „enterprise-tauglich“, ACID-konform, bietet Features wie JSON, räumliche Daten, Window-Functions

Vorteile von MySQL/MariaDB:

  • Sehr einfach, zuverlässig, breite Unterstützung
    Nachteile:

  • Teilweise weniger Features als PostgreSQL (z.B. bei komplexen Abfragen)

Vorteile von PostgreSQL:

  • Extrem leistungsfähig, komplexe Datenmodelle, viele Features
    Nachteile:

  • Anfangs komplexer, nicht immer von jedem CMS unterstützt

2. Schritt-für-Schritt: Installation und Konfiguration

Die folgenden Befehle funktionieren auf Ubuntu 22.04/24.04 und Debian 12. Für andere Distributionen ggf. leicht anpassen!

a) System vorbereiten

sudo apt update
sudo apt upgrade

b) Apache2 oder Nginx installieren

Apache2:

sudo apt install apache2

Starte und aktiviere Apache:

sudo systemctl enable apache2
sudo systemctl start apache2

Test: Öffne http://localhost/ im Browser. Du solltest die Apache-Startseite sehen.

Nginx:

sudo apt install nginx

Starte und aktiviere Nginx:

sudo systemctl enable nginx
sudo systemctl start nginx

Test: Öffne http://localhost/. Es erscheint die Nginx-Default-Page.

c) PHP und wichtige Module installieren

sudo apt install php libapache2-mod-php php-cli php-mysql php-pgsql php-sqlite3 php-xml php-gd php-curl php-zip php-mbstring php-intl php-ldap php-xmlrpc php-soap php-bcmath php-redis php-imagick

Für Nginx (nutzt PHP-FPM):

sudo apt install php-fpm php-cli php-mysql php-pgsql php-sqlite3 php-xml php-gd php-curl php-zip php-mbstring php-intl php-ldap php-xmlrpc php-soap php-bcmath php-redis php-imagick

Erläuterung der wichtigsten PHP-Module:

  • php-mysql, php-pgsql, php-sqlite3: Datenbankanbindung (je nach gewählter DB)

  • php-gd, php-imagick: Bildbearbeitung, Thumbnails

  • php-curl: HTTP-Anfragen aus PHP heraus

  • php-xml, php-xmlrpc: XML-Verarbeitung

  • php-zip: ZIP-Archive

  • php-mbstring, php-intl: Zeichenkodierung, Mehrsprachigkeit

  • php-bcmath: Mathematische Operationen mit großen Zahlen

  • php-soap: SOAP-Webdienste

  • php-redis: Anbindung an Redis-Server (Caching)

  • php-ldap: Anbindung an LDAP-Verzeichnisse

d) Datenbank wählen und installieren

MySQL:

sudo apt install mysql-server

Starte und sichere MySQL:

sudo systemctl enable mysql
sudo systemctl start mysql

Mit dem Befeh

sudo mysql_secure_installation

konfigurierst du bei MySQL und MariaDB auf Linux schnell und sicher die wichtigsten Grundeinstellungen deiner Datenbank – speziell in Bezug auf Sicherheit.

Hier ist eine Übersicht, was du mit diesem Tool einstellst:

1. Root-Passwort setzen oder ändern

  • Frage: „Would you like to setup VALIDATE PASSWORD component?“
    → Hier kannst du wählen, ob ein Passwort-Prüfmodul genutzt werden soll (optional).

  • Frage: „Please set the password for root here.“
    → Hier setzt du das Passwort für den Datenbank-Benutzer root (nicht zu verwechseln mit dem System-root!).

2. Unsichere Benutzer entfernen

  • Remove anonymous users:
    → Löscht alle Datenbank-User ohne Benutzernamen, die standardmäßig angelegt sind.

3. Root-Login beschränken

  • Disallow root login remotely:
    → Verhindert, dass sich der MySQL-root-Benutzer von anderen Rechnern aus anmelden kann (empfohlen für Server!).

4. Test-Datenbank löschen

  • Remove test database and access to it:
    → Löscht die „test“-Datenbank, die für jeden Benutzer offen ist – sie wird selten gebraucht, aber kann ein Sicherheitsrisiko sein.

5. Rechte neu laden

  • Reload privilege tables now?:
    → Aktiviert alle vorgenommenen Änderungen sofort.

Ablauf als Beispiel (interaktive Fragen):

Securing the MySQL server deployment.

VALIDATE PASSWORD COMPONENT can be used to test passwords...
Press y|Y for Yes, any other key for No: Y

Please set the password for root here.
New password: ******
Re-enter new password: ******

Remove anonymous users? (Press y|Y for Yes): Y

Disallow root login remotely? (Press y|Y for Yes): Y

Remove test database and access to it? (Press y|Y for Yes): Y

Reload privilege tables now? (Press y|Y for Yes): Y

Mit mysql_secure_installation konfigurierst du sehr schnell die wichtigsten Sicherheits- und Hygiene-Einstellungen einer MySQL- oder MariaDB-Instanz. Du solltest dieses Tool nach jeder Neuinstallation einmal ausführen!

MariaDB:

sudo apt install mariadb-server

Starte und sichere MariaDB:

sudo systemctl enable mariadb
sudo systemctl start mariadb
sudo mysql_secure_installation

Hinweis: mysql-Kommandos funktionieren für MariaDB identisch.

PostgreSQL:

udo apt install postgresql postgresql-contrib

Starte und aktiviere:

sudo systemctl enable postgresql
sudo systemctl start postgresql

Mit der Datenbank arbeiten:

sudo -u postgres psql

3. Schreibrechte & SetGID auf /var/www/html setzen

Standardmäßig gehört /var/www/html dem User root und der Gruppe www-data. Damit dein angemeldeter User Schreibrechte hat und Dateien im richtigen Kontext erstellt werden, gehst du so vor (ersetze username durch deinen Login):

sudo chown -R username:www-data /var/www/html
sudo chmod -R 2775 /var/www/html

Wichtig:

  • Das 2 vorne im Modus (2775) setzt das SetGID-Bit für das Verzeichnis.

  • Neue Dateien/Ordner in /var/www/html gehören dann automatisch der Gruppe www-data und sind schreibbar für User & Gruppe.

4. PHP für Apache2 oder Nginx konfigurieren

Apache2: Funktioniert nach Installation und Neustart direkt mit PHP!

sudo systemctl restart apache2

Teste mit einer info.php:

echo '<?php phpinfo(); ?>' | sudo tee /var/www/html/info.php

Rufe http://localhost/info.php im Browser auf.

Nginx: Du musst PHP-FPM einbinden. Öffne z.B. die Default-Site:

sudo nano /etc/nginx/sites-available/default

Füge im server-Block folgendes hinzu (falls noch nicht vorhanden):

location ~ \.php$ {
    include snippets/fastcgi-php.conf;
    fastcgi_pass unix:/run/php/php8.3-fpm.sock; # Version anpassen!
}

Speichern, schließen, dann Nginx neu laden:

sudo systemctl reload nginx

Auch hier mit info.php testen.

5. Zusatz: Datenbank anlegen und Benutzer vergeben

MySQL/MariaDB:

CREATE DATABASE meine_datenbank;
CREATE USER 'meinuser'@'localhost' IDENTIFIED BY 'meinpasswort';
GRANT ALL PRIVILEGES ON meine_datenbank.* TO 'meinuser'@'localhost';
FLUSH PRIVILEGES;

PostgreSQL:

sudo -u postgres psql

Im psql-Promt:

CREATE DATABASE meine_datenbank;
CREATE USER meinuser WITH ENCRYPTED PASSWORD 'meinpasswort';
GRANT ALL PRIVILEGES ON DATABASE meine_datenbank TO meinuser;
\q

6. Vor- und Nachteile im Überblick

Apache2

+ Maximale Kompatibilität, riesige Community, .htaccess
Weniger performant für statische Dateien, komplexer bei hoher Last

Nginx

+ Sehr schnell, niedrige RAM-Belastung, super als Proxy
Keine .htaccess, PHP-Integration komplexer, weniger für .htaccess‑basierte Anwendungen

MySQL

+ Einfache Bedienung, viele Anleitungen
Weniger Features als PostgreSQL, Teilweise proprietäre Tools

MariaDB

+ 100% Open Source, schneller Release-Zyklus, MySQL-kompatibel
Manchmal Inkompatibilitäten bei exotischen Features

PostgreSQL

+ „Enterprise“-Features, sehr robust, für komplexe Abfragen und große Projekte
Anfangs mehr Einarbeitung, komplexer Einstieg

7. Tipps für den Alltag

  • Backups! Lege regelmäßige Datenbank- und Webspace-Backups an.

  • Rechte! Prüfe die Rechte, besonders bei gemeinsam genutzten Servern.

  • Updates! Halte dein System und die Software aktuell (sudo apt upgrade).

  • Sicherheit! Setze sichere Passwörter und beschränke Datenbank-Zugriffe möglichst auf „localhost“.

8. Zusammenfassung: Der schnellste Weg

Hier nochmal als Kurz-Checkliste für Apache2+PHP+MariaDB:

sudo apt update
sudo apt install apache2 php libapache2-mod-php php-mysql mariadb-server
sudo systemctl enable apache2 mariadb
sudo systemctl start apache2 mariadb
sudo chown -R $USER:www-data /var/www/html
sudo chmod -R 2775 /var/www/html

Für Nginx + PHP-FPM + PostgreSQL (analog anpassen):

sudo apt update
sudo apt install nginx php-fpm php-pgsql postgresql
sudo systemctl enable nginx postgresql
sudo systemctl start nginx postgresql
sudo chown -R $USER:www-data /var/www/html
sudo chmod -R 2775 /var/www/html

9. Fazit

Mit diesen Anleitungen und Hintergrundinfos kannst du einen modernen Webserver auf Linux nach deinem Geschmack und deinen Projektanforderungen aufsetzen. Egal ob Apache2 oder Nginx, MySQL, MariaDB oder PostgreSQL: Die Open-Source-Landschaft bietet dir maximale Flexibilität und Kontrolle – du musst nur noch starten!