Magento Open Source 2.4.x lässt sich am saubersten mit Composer 2 direkt aus dem offiziellen Repository installieren. Diese Anleitung führt Sie durch eine frische Installation der Version 2.4.8 auf einem Debian 12 (Bookworm) Server, der mit Virtualmin verwaltet wird. Sie ersetzt unsere alte Anleitung von 2017 (PHP 5, MySQL 5.6) vollständig durch einen aktuellen, abgesicherten Stack.
Voraussetzungen
- Debian 12 mit Root- bzw.
sudo-Zugriff, verwaltet über Virtualmin - PHP 8.3 (von Magento 2.4.8 empfohlen und unterstützt) inklusive FPM
- Composer 2 – global oder pro virtuellem Server installiert
- MariaDB 10.6+ oder MySQL 8.0 als Datenbank
- OpenSearch 2.x als Pflicht-Suchmaschine (ersetzt Elasticsearch)
- Gültige Authentifizierungs-Keys (Public/Private Key) aus dem Magento Marketplace
- Mindestens 4 GB RAM (mehr für
setup:di:compileempfohlen) und ein gültiges TLS-Zertifikat
Hinweis zu Virtualmin
Legen Sie zuerst über Virtualmin einen virtuellen Server (Domain) an. Installieren Sie Magento anschließend nicht direkt im public_html-Wurzelverzeichnis, sondern in einem Unterordner, und richten Sie das tatsächliche DocumentRoot auf dessen pub/-Verzeichnis. So liegen sensible Dateien außerhalb des öffentlich erreichbaren Bereichs.
Installation Schritt für Schritt
-
PHP 8.3 und benötigte Erweiterungen installieren. Debian 12 liefert PHP 8.2; für PHP 8.3 binden Sie das verbreitete Sury-Repository ein oder nutzen die von Virtualmin bereitgestellten Pakete.
sudo apt update sudo apt install -y php8.3-fpm php8.3-gd php8.3-curl php8.3-intl \ php8.3-soap php8.3-xsl php8.3-bcmath php8.3-mbstring \ php8.3-zip php8.3-xml php8.3-mysql -
Wichtige PHP-Einstellungen anpassen. Magento benötigt großzügige Limits. Passen Sie diese in der FPM-Konfiguration an:
memory_limit = 2G max_execution_time = 1800 zlib.output_compression = On -
Datenbank und Datenbankbenutzer anlegen. Verwenden Sie MariaDB 10.6+ oder MySQL 8.0:
CREATE DATABASE myDatabaseName CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci; CREATE USER 'myDatabaseUser'@'localhost' IDENTIFIED BY 'myStrongPassword'; GRANT ALL PRIVILEGES ON myDatabaseName.* TO 'myDatabaseUser'@'localhost'; FLUSH PRIVILEGES; -
OpenSearch 2.x installieren und starten. Magento 2.4.8 setzt eine laufende Suchmaschine zwingend voraus. Installieren Sie OpenSearch 2.x lokal oder verbinden Sie eine externe Instanz und merken Sie sich Host und Port (Standard
9200).curl -s https://localhost:9200 -u admin:myOpenSearchPassword -k -
Composer 2 prüfen. Stellen Sie sicher, dass Composer in Version 2 vorliegt:
composer --version -
In das Zielverzeichnis wechseln und Magento per Composer beziehen. Beim ersten Zugriff auf
repo.magento.comfragt Composer nach Benutzername und Passwort – tragen Sie hier Ihren Public Key als Benutzernamen und Ihren Private Key als Passwort ein (aus dem Magento Marketplace unter Access Keys). Diese werden inauth.jsongespeichert.cd ~/domains/your-domain.tld/magento composer create-project --repository-url=https://repo.magento.com/ \ magento/project-community-edition:2.4.8 . -
Magento installieren. Führen Sie
setup:installmit Ihren Datenbank- und OpenSearch-Parametern aus. Passen Sie alle Platzhalter an:bin/magento setup:install \ --base-url=https://your-domain.tld/ \ --db-host=localhost \ --db-name=myDatabaseName \ --db-user=myDatabaseUser \ --db-password=myStrongPassword \ --admin-firstname=Admin \ --admin-lastname=User \ --admin-email=your@email.domain \ --admin-user=myAdminUser \ --admin-password=myStrongAdminPass1 \ --language=de_DE \ --currency=EUR \ --timezone=Europe/Berlin \ --use-rewrites=1 \ --search-engine=opensearch \ --opensearch-host=localhost \ --opensearch-port=9200 \ --opensearch-index-prefix=magento2 \ --opensearch-enable-auth=1 \ --opensearch-username=admin \ --opensearch-password=myOpenSearchPassword -
Produktionsmodus setzen und Assets kompilieren. Für einen Live-Shop:
bin/magento deploy:mode:set production bin/magento setup:di:compile bin/magento setup:static-content:deploy de_DE en_US fr_FR bin/magento indexer:reindex bin/magento cache:flush -
Dateirechte korrekt setzen. Schreibrechte nur dort vergeben, wo Magento sie benötigt:
find var generated vendor pub/static pub/media app/etc -type f -exec chmod g+w {} + find var generated vendor pub/static pub/media app/etc -type d -exec chmod g+ws {} + chmod u+x bin/magento
Virtualmin-spezifische Anpassungen
Auf Virtualmin-Servern ist aus Sicherheitsgründen häufig FollowSymLinks deaktiviert. Magento liefert in seinen .htaccess-Dateien Direktiven, die symbolische Links voraussetzen. Ersetzen Sie daher in den relevanten .htaccess-Dateien (im Wurzelverzeichnis sowie in pub/) die Direktive:
Options +FollowSymLinks
durch die für Virtualmin passende, eigentümergebundene Variante:
Options +SymLinksIfOwnerMatch
Um zu verhindern, dass der Inhalt der Medienverzeichnisse über Verzeichnislisten einsehbar ist, deaktivieren Sie das Verzeichnis-Listing zusätzlich in pub/media/.htaccess:
Options -Indexes
Abschluss und Tipps
- Richten Sie den Magento-Cronjob ein (
bin/magento cron:install), da Indexer, E-Mails und Reindexierung darauf angewiesen sind. - Erzwingen Sie durchgängig HTTPS und prüfen Sie Ihr TLS-Zertifikat regelmäßig.
- Halten Sie Magento, PHP und OpenSearch mit Sicherheits-Patches aktuell.
Sie kommen nicht weiter oder möchten Installation und Wartung in erfahrene Hände geben? Kontaktieren Sie uns – wir unterstützen Sie gerne.