Joomla ist ein leistungsfähiges Open-Source Content Management System. Es eignet sich für Unternehmenswebseiten, Portale und komplexe Webanwendungen.
Joomla-Übersicht
Features
- Mehrsprachigkeit integriert
- Benutzer- und Rechteverwaltung
- Erweiterbare Architektur
- SEO-Funktionen
- Template-System
- Medienverwaltung
- Kontaktformulare
- KategorisierungJoomla vs WordPress
| Aspekt | Joomla | WordPress | |--------|--------|-----------| | Komplexität | Mittel-Hoch | Niedrig | | Mehrsprachig | Integriert | Plugin | | Benutzerrollen | Umfangreich | Begrenzt | | Lernkurve | Steiler | Flacher | | Community | Groß | Sehr groß |
Voraussetzungen
Systemanforderungen
- PHP 8.1+ (8.2 empfohlen)
- MySQL 8.0+ oder MariaDB 10.4+
- Apache/Nginx
- 256 MB RAM (512 MB empfohlen)
- 100 MB SpeicherplatzPHP-Erweiterungen
apt install php8.2-fpm php8.2-mysql php8.2-xml php8.2-mbstring php8.2-zip php8.2-gd php8.2-curl php8.2-intl php8.2-jsonInstallation
Datenbank erstellen
CREATE DATABASE joomla CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci;
CREATE USER 'joomla'@'localhost' IDENTIFIED BY 'sicheres_passwort';
GRANT ALL ON joomla.* TO 'joomla'@'localhost';
FLUSH PRIVILEGES;Joomla herunterladen
cd /var/www
wget https://downloads.joomla.org/cms/joomla5/5-0-3/Joomla_5-0-3-Stable-Full_Package.zip
mkdir joomla
unzip Joomla_5-0-3-Stable-Full_Package.zip -d joomla
chown -R www-data:www-data joomla
chmod -R 755 joomlaNginx-Konfiguration
# /etc/nginx/sites-available/joomla
server {
listen 80;
server_name example.de www.example.de;
return 301 https://$host$request_uri;
}
server {
listen 443 ssl http2;
server_name example.de www.example.de;
ssl_certificate /etc/letsencrypt/live/example.de/fullchain.pem;
ssl_certificate_key /etc/letsencrypt/live/example.de/privkey.pem;
root /var/www/joomla;
index index.php index.html;
# Logging
access_log /var/log/nginx/joomla.access.log;
error_log /var/log/nginx/joomla.error.log;
# Security Headers
add_header X-Frame-Options "SAMEORIGIN" always;
add_header X-Content-Type-Options "nosniff" always;
location / {
try_files $uri $uri/ /index.php?$args;
}
# PHP
location ~ \.php$ {
include snippets/fastcgi-php.conf;
fastcgi_pass unix:/run/php/php8.2-fpm.sock;
fastcgi_param SCRIPT_FILENAME $document_root$fastcgi_script_name;
}
# Sicherheit - Zugriff blockieren
location ~* /(\.git|cache|bin|logs|backup|tests)/.*$ { deny all; }
location ~* \.(htaccess|htpasswd|ini|log|sh|sql)$ { deny all; }
# Statische Dateien cachen
location ~* \.(jpg|jpeg|png|gif|ico|css|js|woff|woff2)$ {
expires 1y;
add_header Cache-Control "public, immutable";
}
}ln -s /etc/nginx/sites-available/joomla /etc/nginx/sites-enabled/
nginx -t && systemctl reload nginxApache-Konfiguration
<VirtualHost *:443>
ServerName example.de
DocumentRoot /var/www/joomla
SSLEngine on
SSLCertificateFile /etc/letsencrypt/live/example.de/fullchain.pem
SSLCertificateKeyFile /etc/letsencrypt/live/example.de/privkey.pem
<Directory /var/www/joomla>
Options -Indexes +FollowSymLinks
AllowOverride All
Require all granted
</Directory>
<FilesMatch \.php$>
SetHandler "proxy:unix:/run/php/php8.2-fpm.sock|fcgi://localhost"
</FilesMatch>
</VirtualHost>Web-Installation
1. https://example.de aufrufen
2. Sprache wählen: Deutsch
3. Site-Name und Admin-Daten eingeben
4. Datenbank-Verbindung konfigurieren:
- Typ: MySQLi
- Host: localhost
- Benutzer: joomla
- Passwort: sicheres_passwort
- Datenbank: joomla
- Präfix: jos_ (oder zufällig)
5. Beispieldaten (optional)
6. Installation abschließenInstallation-Ordner entfernen
rm -rf /var/www/joomla/installationKonfiguration
configuration.php
<?php
class JConfig {
public $offline = false;
public $offline_message = 'Diese Website wird gewartet.';
public $display_offline_message = 1;
public $sitename = 'Meine Website';
public $editor = 'tinymce';
public $captcha = '0';
public $list_limit = 20;
public $access = 1;
// Datenbank
public $dbtype = 'mysqli';
public $host = 'localhost';
public $user = 'joomla';
public $password = 'sicheres_passwort';
public $db = 'joomla';
public $dbprefix = 'jos_';
public $dbencryption = 0;
// Pfade
public $log_path = '/var/www/joomla/administrator/logs';
public $tmp_path = '/var/www/joomla/tmp';
// Server
public $live_site = '';
public $secret = 'xxxxxxxxxxxxxxxx';
public $gzip = false;
public $error_reporting = 'default';
public $helpurl = 'https://help.joomla.org/';
public $ftp_host = '';
public $ftp_port = '';
public $ftp_user = '';
public $ftp_pass = '';
public $ftp_root = '';
public $ftp_enable = 0;
// Session
public $lifetime = 15;
public $session_handler = 'database';
public $shared_session = false;
// Cache
public $caching = 0;
public $cache_handler = 'file';
public $cachetime = 15;
public $cache_platformprefix = false;
// Mail
public $mailer = 'smtp';
public $mailfrom = 'noreply@example.de';
public $fromname = 'Meine Website';
public $smtpauth = 1;
public $smtpuser = 'user@example.de';
public $smtppass = 'mail_passwort';
public $smtphost = 'smtp.example.de';
public $smtpsecure = 'tls';
public $smtpport = 587;
}Administrator-Bereich
Zugriff
https://example.de/administratorWichtige Bereiche
| Menü | Funktion | |------|----------| | System | Dashboard, Konfiguration | | Benutzer | Benutzerverwaltung | | Menüs | Navigation erstellen | | Inhalt | Beiträge, Kategorien | | Komponenten | Erweiterungen | | Erweiterungen | Installation |
Erweiterungen
Arten von Erweiterungen
| Typ | Beschreibung | |-----|--------------| | Komponenten | Komplexe Funktionen | | Module | Widgets, Blöcke | | Plugins | Funktionserweiterungen | | Templates | Design | | Sprachen | Übersetzungen |
Installation
Erweiterungen → Installieren → Hochladen & InstallierenEmpfohlene Erweiterungen
- Akeeba Backup (Backup)
- JCE Editor (WYSIWYG)
- Admin Tools (Sicherheit)
- sh404SEF (SEO)
- Yootheme Pro (Template)Templates
Standard-Templates
- Cassiopeia (Frontend, Joomla 4/5)
- Atum (Administrator)Template anpassen
System → Site Templates → Cassiopeia → CustomizeTemplate-Overrides
/templates/cassiopeia/html/
├── com_content/
│ └── article/
│ └── default.php
├── mod_menu/
│ └── default.php
└── layouts/
└── joomla/
└── content/
└── info_block.phpSEO-Konfiguration
Globale Einstellungen
System → Konfiguration → Site
- Suchmaschinenfreundliche URLs: Ja
- URL-Rewriting nutzen: Ja
- Suffix an URL anfügen: Nein
- Unicode-Aliasse: Nein.htaccess aktivieren
cp /var/www/joomla/htaccess.txt /var/www/joomla/.htaccessMetadaten
System → Konfiguration → Site → Metadaten
- Site Meta-Beschreibung: Beschreibung der Website
- Robots: Index, FollowMehrsprachigkeit
Sprachen installieren
System → Sprachen installieren → Deutsch auswählenSprachfilter aktivieren
System → Plugins → System - Sprachfilter → AktivierenMenü pro Sprache
Menüs → Menüs verwalten → Neues Menü
- Menü für DE
- Menü für ENSicherheit
Administrator-Pfad ändern
// plugins/system/admintools/admintools.php
// Oder mit Admin Tools ProZwei-Faktor-Authentifizierung
Benutzer → Benutzer verwalten → Admin-Benutzer bearbeiten
→ Zweistufige Authentifizierung aktivieren.htaccess-Schutz
# Administrator-Bereich schützen
<FilesMatch "administrator">
AuthType Basic
AuthName "Restricted"
AuthUserFile /etc/apache2/.htpasswd-joomla
Require valid-user
</FilesMatch>Berechtigungen
# Verzeichnisse
find /var/www/joomla -type d -exec chmod 755 {} \;
# Dateien
find /var/www/joomla -type f -exec chmod 644 {} \;
# configuration.php
chmod 444 /var/www/joomla/configuration.phpUpdates
Über Admin
System → Joomla aktualisieren → Updates installierenPer CLI
cd /var/www/joomla
php cli/joomla.php core:updateErweiterungen aktualisieren
System → Aktualisieren → ErweiterungenBackup
Akeeba Backup
1. Erweiterung installieren
2. Komponenten → Akeeba Backup
3. Backup jetzt erstellenManuelles Backup
#!/bin/bash
# /usr/local/bin/joomla-backup.sh
DATE=$(date +%Y-%m-%d)
BACKUP_DIR=/backup/joomla
mkdir -p $BACKUP_DIR
# Datenbank
mysqldump -u joomla -p joomla > $BACKUP_DIR/db-$DATE.sql
# Dateien
tar -czf $BACKUP_DIR/files-$DATE.tar.gz /var/www/joomla
# Alte Backups löschen
find $BACKUP_DIR -name "*.sql" -mtime +30 -delete
find $BACKUP_DIR -name "*.tar.gz" -mtime +30 -deletePerformance
Caching aktivieren
System → Konfiguration → System → Cache
- Cache: Konservativer Cache
- Cache-Handler: Dateisystem
- Cache-Zeit: 15 MinutenGzip-Kompression
System → Konfiguration → Server → Gzip: JaCSS/JS optimieren
Mit JCH Optimize Plugin:
- CSS kombinieren
- JavaScript kombinieren
- Lazy Loading für BilderTroubleshooting
Weißer Bildschirm
// configuration.php
public $error_reporting = 'maximum';
public $debug = 1;Cache leeren
System → Cache leeren → AlleDatenbank reparieren
Erweiterungen → Verwalten → Datenbank → ReparierenBerechtigungsprobleme
chown -R www-data:www-data /var/www/joomla
chmod -R 755 /var/www/joomla
chmod 444 /var/www/joomla/configuration.phpZusammenfassung
| Verzeichnis | Inhalt | |-------------|--------| | /administrator | Backend | | /components | Komponenten | | /modules | Module | | /plugins | Plugins | | /templates | Templates | | /media | Medien | | /images | Bilder |
| Datei | Funktion | |-------|----------| | configuration.php | Hauptkonfiguration | | .htaccess | URL-Rewriting | | index.php | Einstiegspunkt |
| Befehl (CLI) | Funktion | |--------------|----------| | core:update | Joomla aktualisieren | | extension:install | Erweiterung installieren | | cache:clear | Cache leeren | | config:get | Konfiguration anzeigen |
Fazit
Joomla ist ein mächtiges CMS für anspruchsvolle Projekte. Die integrierte Mehrsprachigkeit und das umfangreiche Rechtesystem machen es ideal für Unternehmenswebsites. Die Lernkurve ist steiler als bei WordPress, aber die Flexibilität ist größer. Mit den richtigen Erweiterungen lassen sich komplexe Webanwendungen realisieren. Regelmäßige Updates und Backups sind für die Sicherheit essentiell.