Wie man Joomla mit Nginx auf einem Ubuntu 24.04 Server installiert
Joomla ist ein flexibles und quelloffenes Content-Management-System für die Erstellung von Websites und Online-Publikationen. Es basiert auf PHP und kann für eine Vielzahl von Szenarien eingesetzt werden, z. B. für Foren, Fotogalerien, E-Commerce und andere webbasierte Anwendungen.
In dieser Anleitung zeigen wir dir, wie du Joomla auf einem Ubuntu 24.04 Server installierst. Du wirst Joomla mit Nginx als Webserver, MariaDB als Datenbankserver und PHP-FPM betreiben. Außerdem wirst du Joomla mit HTTPS absichern.
Voraussetzungen
Um diese Anleitung durchzuführen, musst du folgende Voraussetzungen erfüllen:
- Einen Ubuntu 24.04 Server.
- Einen Nicht-Root-Benutzer mit Administrator-Rechten.
- Einen Domainnamen, der auf eine Server-IP-Adresse zeigt.
Installieren der Abhängigkeiten
Joomla ist ein PHP-basiertes Content Management System. Um es zu installieren, musst du PHP auf deinem System installieren. In diesem Abschnitt installierst du den LEMP Stack (Linux, Nginx, MariaDB und PHP-FPM) als Abhängigkeiten für Joomla.
Führe zunächst den folgenden Befehl aus, um den Paketindex deines Ubuntu-Systems zu aktualisieren.
sudo apt update
Installiere die LEMP Stack-Abhängigkeiten mit dem unten stehenden Befehl. Gib„Y“ ein, um die Installation zu bestätigen.
sudo apt install nginx mariadb-server php-fpm php-curl php-common php-json php-intl php-xml php-gd php-mysql php-imagick php-mbstring php-zip
Nachdem die Installation abgeschlossen ist, überprüfe den Status des Nginx-Dienstes mit folgendem Befehl:
sudo systemctl is-enabled nginx sudo systemctl status nginx
Du kannst sehen, dass der Nginx-Dienst läuft.
Überprüfe nun den MariaDB-Dienst, um sicherzustellen, dass der Dienst läuft und aktiviert ist, indem du den folgenden Befehl eingibst:
sudo systemctl is-enabled mariadb sudo systemctl status mariadb
Führen Sie schließlich den folgenden Befehl aus, um den PHP-FPM-Dienst zu überprüfen. Der PHP-FPM sollte standardmäßig in der sock-Datei laufen.
sudo systemctl is-enabled php8.3-fpm sudo systemctl status php8.3-fpm
PHP-FPM konfigurieren
Nachdem der LEMP Stack installiert ist, konfigurierst du die PHP-FPM-Installation und änderst einige Standardkonfigurationen, die du für Joomla benötigst.
Öffne die PHP-FPM-Konfiguration„/etc/php/8.3/fpm/php.ini“ mit dem Editor„nano„.
sudo nano /etc/php/8.3/fpm/php.ini
Ändere die Standardkonfiguration wie folgt:
memory_limit=512M upload_max_filesize=64M post_max_size=64M max_execution_time=120 output_buffering = Off extension=intl
Speichere die Datei und beende den Editor.
Starte nun den PHP-FPM-Dienst neu, um deine Änderungen zu übernehmen.
sudo systemctl restart php8.3-fpm
Abschließend kannst du die PHP-Sock-Datei für den PHP-FPM-Dienst mit dem folgenden Befehl überprüfen.
ss -pl | grep php
Wie du unten siehst, befindet sich die Sock-Datei für PHP-FPM im Verzeichnis„/var/run/php/php8.3-fpm.sock„.
MariaDB-Server konfigurieren
In diesem Abschnitt sicherst du die Installation des MariaDB-Servers und erstellst eine neue Datenbank und einen neuen Benutzer für Joomla. Du verwendest die „mariadb-secure-installation“, um den MariaDB-Server zu sichern, und dann den „mariadb“-Client, um eine neue Datenbank und einen neuen Benutzer anzulegen.
Um den MariaDB-Server zu sichern, führst du den unten stehenden Befehl„mariab-secure-installation“ aus.
sudo mariadb-secure-installation
Nun wirst du aufgefordert, den MariaDB-Server wie folgt einzurichten:
- Bei der Standardinstallation des MariaDB-Servers ohne Root-Passwort drückst du ENTER, wenn du nach dem Passwort gefragt wirst.
- Die lokale Authentifizierung für MariaDB-Root-Benutzer ist standardmäßig gesichert. Gib „n“ ein, wenn du die Authentifizierungsmethode auf „unix_socket“ ändern möchtest.
- Gib „Y“ ein, um ein neues MariaDB Root-Passwort zu erstellen. Gib dann das sichere Passwort für deinen MariaDB-Root-Benutzer ein und wiederhole den Vorgang.
- Wenn du gefragt wirst, ob du die Fernauthentifizierung für den MariaDB-Root-Benutzer deaktivieren willst, gibst du „Y“ ein, um zuzustimmen.
- Die Standardinstallation des MariaDB-Servers enthält die Datenbank „test“ und erlaubt einem anonymen Benutzer den Zugriff auf diese Datenbank.
- Gib für beide Einstellungen „Y“ ein, um die Standarddatenbank „test“ zu entfernen und das anonyme Recht zu löschen.
- Gib abschließend „Y“ ein, um das erneute Laden der Tabellenrechte zu bestätigen.
Sobald die MariaDB gesichert ist, erstellst du eine neue Datenbank und einen neuen Benutzer für Joomla.
Melde dich mit dem unten stehenden Befehl„mariadb“ am MariaDB-Server an. Gib dein MariaDB Root-Passwort ein, wenn du dazu aufgefordert wirst.
sudo mariadb -u root -p
Führe nun die folgenden Abfragen aus, um eine neue Datenbank„joomladb“ und einen neuen Benutzer„joomla“ mit dem Passwort„p4ssword“ zu erstellen.
CREATE DATABASE joomladb; CREATE USER joomla@localhost IDENTIFIED BY 'p4ssword'; GRANT ALL PRIVILEGES ON joomladb.* TO joomla@localhost; FLUSH PRIVILEGES;
Als Nächstes führst du die folgende Abfrage aus, um die Berechtigungen des Benutzers„joomla“ zu überprüfen. Du wirst sehen, dass der Benutzer„joomla“ auf die Datenbank„joomladb“ zugreifen kann.
SHOW GRANTS FOR joomla@localhost;
Zum Schluss gibst du„quit“ ein, um den MariaDB-Server zu verlassen.
Herunterladen des Joomla-Quellcodes
An dieser Stelle hast du die Abhängigkeiten für Joomla installiert und konfiguriert. Jetzt lädst du den Joomla-Quellcode herunter und richtest das document-root/webroot-Verzeichnis für die Joomla-Installation ein.
Gehe in das Verzeichnis „/var/www“ und lade den Joomla-Quellcode mit dem unten stehenden „wget“-Befehl herunter. Schaue auf der Joomla Download-Seite nach und hole dir den Link für die neueste Version.
cd /var/www/ wget https://downloads.joomla.org/cms/joomla5/5-1-4/Joomla_5-1-4-Stable-Full_Package.zip
Führe nun den Befehl „unzip“ aus, um den Joomla-Quellcode in das Verzeichnis „joomla“ zu entpacken.
unzip Joomla_5-1-4-Stable-Full_Package.zip -d joomla
Zum Schluss führst du den Befehl „chmod“ aus, um die Rechte am Verzeichnis „/var/www/joomla“ auf den Benutzer „www-data“ zu ändern.
sudo chown -R www-data:www-data /var/www/joomla
Nginx-Serverblock einrichten
Jetzt erstellst du eine neue Nginx-Serverblock-Konfiguration für den Betrieb von Joomla. Stelle also sicher, dass du deinen Domainnamen bereit hast und auf die IP-Adresse des Servers verweist.
Erstelle eine neue Nginx-Serverdatei„/etc/nginx/sites-available/joomla“ mit dem folgenden„nano„-Editor.
sudo nano /etc/nginx/sites-available/joomla
Füge die unten stehende Konfiguration ein und ändere die Option„server_name“ mit deinem Domainnamen.
server { listen 80; server_name howtoforge.local; server_name_in_redirect off; access_log /var/log/nginx/localhost.access_log; error_log /var/log/nginx/localhost.error_log info; root /var/www/joomla; index index.php index.html index.htm default.html default.htm; # Support API location /api/ { try_files $uri $uri/ /api/index.php?$args; } # Support Clean (aka Search Engine Friendly) URLs location / { try_files $uri $uri/ /index.php?$args; } # add global x-content-type-options header add_header X-Content-Type-Options nosniff; # deny running scripts inside writable directories location ~* /(images|cache|media|logs|tmp)/.*\.(php|pl|py|jsp|asp|sh|cgi)$ { return 403; error_page 403 /403_error.html; } location ~ \.php$ { fastcgi_pass unix:/var/run/php/php8.3-fpm.sock; fastcgi_index index.php; include fastcgi_params; fastcgi_param SCRIPT_FILENAME $document_root$fastcgi_script_name; include /etc/nginx/fastcgi.conf; } # caching of files location ~* \.(ico|pdf|flv)$ { expires 1y; } location ~* \.(js|css|png|jpg|jpeg|gif|swf|xml|txt)$ { expires 14d; } }
Speichere die Datei und beende den Editor.
Führe nun den folgenden Befehl aus, um den„joomla„-Serverblock zu aktivieren und deine Nginx-Konfiguration zu überprüfen. Wenn du die Nginx-Einstellungen richtig vorgenommen hast, bekommst du die Meldung„Syntax ist OK„.
sudo ln -s /etc/nginx/sites-available/joomla /etc/nginx/sites-enabled/ sudo nginx -t
Zum Schluss führst du den Befehl „systemctl“ aus, um den Nginx-Dienst neu zu starten und deine Änderungen zu übernehmen.
sudo systemctl restart nginx
Joomla mit HTTPS absichern
In dieser Anleitung wirst du Joomla mit HTTPS absichern. Wenn du die öffentliche Domain verwendest, kannst du Joomla mit SSL/TLS-Zertifikaten über Certbot und Letsencerypt sichern.
Installiere „Certbot“ und das Certbot Nginx Plugin mit dem unten stehenden „apt“-Befehl. Gib „Y“ ein, um die Installation zu bestätigen.
sudo apt install certbot python3-certbot-nginx
Nachdem die Installation abgeschlossen ist, führe den folgenden „Certbot“-Befehl aus, um SSL/TLS-Zertifikate zu erzeugen und deine Joomla-Installation mit HTTPS zu sichern. Achte darauf, dass du den Domänennamen und die E-Mail-Adresse mit deinen Daten änderst.
sudo certbot --nginx --agree-tos --redirect --hsts --staple-ocsp --email kyrie@howtoforge.local -d howtoforge.local
Wenn du fertig bist, ist deine Joomla-Installation durch SSL/TLS-Zertifikate von Letsencrypt mit HTTPS gesichert.
Joomla installieren
Öffne deinen Webbrowser und rufe deinen Joomla-Domainnamen auf, z.B. https://howtoforge.local/. Es wird der Joomla-Installationsassistent angezeigt.
Wähle deine Standardsprache und gib den Namen deiner Website ein.
Gib den neuen Admin-Benutzer, die E-Mail-Adresse und das Passwort für Joomla ein.
Gib die Details deiner MariaDB-Datenbank und des Benutzers ein und klicke dann auf„Joomla installieren„, um mit der Installation fortzufahren.
Nach Abschluss der Installation klickst du auf„Seite öffnen„, um die Standard-Homepage zu öffnen, oder auf„Administrator öffnen„, um auf das Joomla-Administrations-Dashboard zuzugreifen.
Auf der Standard-Joomla-Homepage siehst du das folgende Bild.
Gib nun deinen Admin-Benutzer und dein Passwort ein und klicke auf„Anmelden„.
Wenn du den richtigen Benutzer und das richtige Passwort hast, siehst du das folgende Joomla-Administrations-Dashboard.
Fazit
Herzlichen Glückwunsch! Du hast Joomla auf dem Ubuntu 24.04 Server installiert. Du hast Joomla mit dem Nginx-Webserver, dem MariaDB-Datenbankserver und PHP-FPM zum Laufen gebracht. Außerdem hast du Joomla mit HTTPS über Certbot und Letsencrypt abgesichert.