Deutsch

LAMP-Stack auf einem Ubuntu-24.04-Linux-VPS installieren

2 min
VPS/VDS-Hosting

Ein LAMP-Stack (Linux, Apache, MariaDB, PHP) ist die klassische Grundlage für WordPress, Laravel und die meisten PHP-Anwendungen. In dieser Anleitung bauen Sie ihn Schritt für Schritt auf einem frischen VPS Linux Infrawire mit Ubuntu 24.04 auf, mit eigenem Virtual Host und einer Firewall, die nur das Nötige freigibt.

📋 Voraussetzungen

  • Ein KVM-VPS mit Ubuntu 24.04 (IP und Root-Passwort finden Sie in Ihrem Kundenbereich)
  • SSH-Zugang als root oder als Benutzer mit sudo-Rechten
  • Eine Domain example.com, deren A- (und AAAA-)Einträge auf VPS_IP zeigen

Die folgenden Befehle gehen davon aus, dass Sie root sind. Andernfalls setzen Sie sudo davor.

1. System aktualisieren

Bash
apt update && apt upgrade -y

2. Apache installieren

Bash
apt install -y apache2 systemctl enable --now apache2 apache2 -v

Der Dienst startet sofort und wird beim Booten automatisch gestartet.

3. MariaDB installieren

MariaDB steckt in den Ubuntu-Repositories und ersetzt MySQL ohne Anpassungen. Wenn Sie Oracle MySQL bevorzugen, installieren Sie stattdessen mysql-server, aber niemals beide auf demselben Server.

Bash
apt install -y mariadb-server systemctl enable --now mariadb mysql_secure_installation

Behalten Sie im Assistenten die unix_socket-Authentifizierung für root bei, vergeben Sie bei Nachfrage ein starkes Passwort, entfernen Sie anonyme Benutzer, verbieten Sie den Remote-Root-Login und löschen Sie die Testdatenbank. Legen Sie anschließend eine Datenbank und einen eigenen Benutzer für Ihre Anwendung an:

Bash
mariadb
SQL
1CREATE DATABASE appdb CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci; 2CREATE USER 'appuser'@'localhost' IDENTIFIED BY 'STRONG_PASSWORD'; 3GRANT ALL PRIVILEGES ON appdb.* TO 'appuser'@'localhost'; 4FLUSH PRIVILEGES; 5EXIT;

4. PHP 8.3 installieren

Ubuntu 24.04 liefert PHP 8.3 in den Standard-Repositories mit, ein zusätzliches PPA ist nicht nötig.

Bash
apt install -y php libapache2-mod-php php-mysql php-cli php-curl php-gd php-mbstring php-xml php-zip php-intl php -v

Das Paket libapache2-mod-php stellt Apache automatisch auf das MPM prefork um und lädt das PHP-Modul.

5. Virtual Host anlegen und mod_rewrite aktivieren

Bash
mkdir -p /var/www/example.com/public_html chown -R www-data:www-data /var/www/example.com nano /etc/apache2/sites-available/example.com.conf
Apache
1<VirtualHost *:80> 2 ServerName example.com 3 ServerAlias www.example.com 4 DocumentRoot /var/www/example.com/public_html 5 6 <Directory /var/www/example.com/public_html> 7 AllowOverride All 8 Require all granted 9 </Directory> 10 11 ErrorLog ${APACHE_LOG_DIR}/example.com-error.log 12 CustomLog ${APACHE_LOG_DIR}/example.com-access.log combined 13</VirtualHost>

AllowOverride All aktiviert .htaccess-Dateien, auf die die schönen URLs von WordPress oder Laravel angewiesen sind. Aktivieren Sie nun Modul und Site und deaktivieren Sie die Standardseite:

Bash
a2enmod rewrite a2ensite example.com.conf a2dissite 000-default.conf apache2ctl configtest systemctl reload apache2

configtest muss Syntax OK melden, bevor Sie neu laden.

6. Firewall konfigurieren

Erlauben Sie zuerst SSH, sonst sperren Sie sich beim Aktivieren der Firewall selbst aus.

Bash
ufw allow OpenSSH ufw allow 'Apache Full' ufw enable ufw status

Das Profil Apache Full öffnet die Ports 80 und 443. Öffnen Sie Port 3306 nicht: MariaDB muss nur lokal lauschen.

7. PHP testen und die Testdatei löschen

Bash
echo '<?php phpinfo();' > /var/www/example.com/public_html/info.php curl -sI http://example.com/info.php | head -n 1

Sie sollten HTTP/1.1 200 OK erhalten. Öffnen Sie http://example.com/info.php im Browser, um die PHP-Konfigurationsseite zu sehen. Eine phpinfo()-Seite verrät Versionen, Pfade und Module, löschen Sie sie daher sofort:

Bash
rm /var/www/example.com/public_html/info.php

Prüfen Sie auch die übrigen Komponenten:

Bash
apache2ctl -M | grep -E 'rewrite|php' php -m | grep -E 'mysqli|pdo_mysql' systemctl is-active apache2 mariadb

🛠️ Fehlerbehebung

Die Apache-Standardseite erscheint weiterhin. Die Standard-Site ist noch aktiv oder der DNS-Eintrag ist noch nicht propagiert. Führen Sie a2dissite 000-default.conf aus, laden Sie Apache neu und testen Sie mit curl -I -H 'Host: example.com' http://VPS_IP/.

403 Forbidden. Prüfen Sie, ob das Verzeichnis Require all granted enthält, ob www-data die Dateien lesen kann (ls -ld /var/www/example.com/public_html) und werfen Sie einen Blick in /var/log/apache2/example.com-error.log.

Der Browser lädt die PHP-Datei herunter, statt sie auszuführen. Das PHP-Modul ist nicht geladen. Führen Sie apache2ctl -M | grep php und danach systemctl restart apache2 aus. Erscheint nichts, installieren Sie libapache2-mod-php neu.

Rewrite-Regeln werden ignoriert (404 bei schönen URLs). Stellen Sie sicher, dass a2enmod rewrite ausgeführt wurde und Ihr <Directory>-Block AllowOverride All enthält.


🎉 Ihr LAMP-Stack läuft: Apache, MariaDB und PHP 8.3 sind bereit für Ihre erste Website.

Bleiben Sie über die neuesten Angebote, Rabatte und Sonderaktionen informiert.

Aktionen ansehen

Wir verwenden Cookies

Wir verwenden Analyse-Cookies, um Ihre Erfahrung auf unserer Website zu verbessern. Es werden keine Daten an Dritte verkauft. Mehr erfahren Sie in unserer Datenschutzerklärung.