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
- Kategorisierung
Joomla 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 Speicherplatz
PHP-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-json
Installation
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 joomla
Nginx-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 nginx
Apache-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ßen
Installation-Ordner entfernen
rm -rf /var/www/joomla/installation
Konfiguration
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/administrator
Wichtige 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 & Installieren
Empfohlene 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 → Customize
Template-Overrides
/templates/cassiopeia/html/
├── com_content/
│ └── article/
│ └── default.php
├── mod_menu/
│ └── default.php
└── layouts/
└── joomla/
└── content/
└── info_block.php
SEO-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/.htaccess
System → Konfiguration → Site → Metadaten
- Site Meta-Beschreibung: Beschreibung der Website
- Robots: Index, Follow
Mehrsprachigkeit
Sprachen installieren
System → Sprachen installieren → Deutsch auswählen
Sprachfilter aktivieren
System → Plugins → System - Sprachfilter → Aktivieren
Menü pro Sprache
Menüs → Menüs verwalten → Neues Menü
- Menü für DE
- Menü für EN
Sicherheit
Administrator-Pfad ändern
// plugins/system/admintools/admintools.php
// Oder mit Admin Tools Pro
Zwei-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.php
Updates
Über Admin
System → Joomla aktualisieren → Updates installieren
Per CLI
cd /var/www/joomla
php cli/joomla.php core:update
Erweiterungen aktualisieren
System → Aktualisieren → Erweiterungen
Backup
Akeeba Backup
1. Erweiterung installieren
2. Komponenten → Akeeba Backup
3. Backup jetzt erstellen
Manuelles 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 -delete
Caching aktivieren
System → Konfiguration → System → Cache
- Cache: Konservativer Cache
- Cache-Handler: Dateisystem
- Cache-Zeit: 15 Minuten
Gzip-Kompression
System → Konfiguration → Server → Gzip: Ja
CSS/JS optimieren
Mit JCH Optimize Plugin:
- CSS kombinieren
- JavaScript kombinieren
- Lazy Loading für Bilder
Troubleshooting
Weißer Bildschirm
// configuration.php
public $error_reporting = 'maximum';
public $debug = 1;
Cache leeren
System → Cache leeren → Alle
Datenbank reparieren
Erweiterungen → Verwalten → Datenbank → Reparieren
Berechtigungsprobleme
chown -R www-data:www-data /var/www/joomla
chmod -R 755 /var/www/joomla
chmod 444 /var/www/joomla/configuration.php
Zusammenfassung
| 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.