Verwendete Technik
Wir setzen auf weltweit millionenfach bewährte Standards bei der Umsetzung von KCCM. Die Grundlage der Software ist das PHP-Framework Symfony©, mit über 600.000 Entwicklern weltweit eines der bewährtesten und sichersten Frameworks, die zur Verfügung stehen.
Frontend-Widgets
Die Frontend-Widgets werden durch pures Javascript realisiert, ohne Rückgriff auf Frameworks wie z.B. jquery, vue oder react, um mögliche Inkompatibilitäten so weit es möglich ist zu vermeiden.
Sicherheit
KCCM nutzt intensiv Content Security Policy (CSP) mit regulär folgenden Einschränkungen:
Content-Security-Policy:
default-src 'self';
connect-src 'self' https://update.KCCM.de;
script-src 'self' 'unsafe-inline';
style-src 'self' 'unsafe-inline';
img-src 'self' data:;
frame-ancestors 'self';
form-action 'self'
Speicherung ohne Datenbank
Alle Daten werden im JSON-Format lokal im gesicherten Bereich von KCCM gespeichert. Wenn Sie die Downloadvariante nutzen finden Sie die Daten im Verzeichnis /var Ihrer Installation.
Die Speicherung und Verarbeitung ist so effizient, dass auch mehrere Millionen Aufrufe pro Tag problemlos gehändelt werden können.
Speicherung mit Datenbank
KCCM nutzt alternativ MongoDB ab Version 4.0. In dieser Variante werden alle Daten in der Datenbank gespeichert.
Das /var-Verzeichnis wird in diesem Fall noch für Caching-Zwecke genutzt, muss also weiterhin beschreibbar sein.
KCCM benötigt Multi-Document-Transactions. Diese werden nur in Replica-Sets und (ab MongoDB-Version 4.2) in Sharded Clusters unterstützt. Es ist also in der Regel notwendig, auch bei 1-Server-Konfigurationen ein Replica-Set einzurichten. Weitere spezielle Einstellungen werden nicht benötigt.
Beta-Phase
Vor der Veröffentlichung führen wir diverse Tests durch um typische Fehler zu finden und zu korrigieren. Weiterhin gibt es eine ausgedehnte Beta Phase an der viele Kunden teilnehmen und uns Feedback vor der endgültigen Veröffentlichung geben.
Systemvoraussetzungen für Download-Variante
Die Self-Service / Download Version von KCCM benötigt lediglich
- Linux oder ein anderes POSIX-kompatibles Betriebssystem
- PHP ab Version 7.2
- Apache httpd 2.2+ oder nginx
- Und im Falle der Nutzung der Datenbank MongoDB ab Version 4
Apache httpd
Als Server empfehlen wir einen LAMP-Server – wobei das M für MySQL nicht notwendig ist, und alternativ durch MongoDB ersetzt wird.
Beim Betrieb mit Apache httpd werden folgende Module benötigt:
- mod_rewrite
- mod_headers (optional)
- mod_expires (optional)
KCCM ist mit dem Caching-Modul mod_cache vollständig kompatibel. Zusätzlich empfiehlt es sich die Performance des Apache httpd zu optimieren. Wie man das macht, dazu verweisen wir auf die zahllosen Tutorials die es auf anderen Seiten gibt.
nginx
Sollte ihr Webserver nginx verwenden, sind unter Umständen Anpassungen an der Serverkonfiguration nötig, damit KCCM zufriedenstellend läuft, nachdem Sie den ersten Schritt der Installation durchgeführt haben.
Bringen Sie zunächst den Pfad zur Konfigurationsdatei des nginx-Servers für Ihre (Sub-)Domain (üblicherweise /etc/nginx/nginx.conf oder /etc/nginx/conf.d/domainname.conf) und den Socket-Pfad für das installierte PHP-FPM-Modul (häufig unix:/run/php/php7.2-fpm.sock o.ä.) bei Ihrem Provider oder Server-Administrator in Erfahrung.
Notieren Sie bitte weiterhin den absoluten Pfad zum public-Verzeichnis der KCCM-Installation und den gewünschten URL-Pfad zu KCCM (z.B. /KCCM).
Die hier aufgeführte Beispiel-Konfigurationsdatei finden Sie im Downloadpaket im Verzeichnis www/examples/ - hier wird KCCM in einem Unterverzeichnis installiert.
Beispiel:
# Fügen Sie den Inhalt dieser Datei Ihrer nginx-Konfiguration innerhalb eines
# server-Blocks hinzu, wenn Sie KCCM in einem Unterverzeichnis betreiben wollen.
# Dazu wird das PHP-FPM-Modul mit mindestens PHP 7.2 benötigt.
#
# Sie müssen folgende Anpassungen vornehmen:
# - "/KCCM" durch den URL-Pfad ersetzen unter dem KCCM erreichbar sein soll,
# - "/path/to/ccm/public" durch den Pfad zum public-Verzeichnis in Ihrer
# KCCM-Installation (ohne / am Ende!) ersetzen,
# - "unix:/run/php/php7.2-fpm.sock" je nach Serverkonfiguration durch den
# Socket-Pfad zu Ihrem PHP-FPM-Modul ersetzen.
set $KCCM_urlpath /KCCM;
set $KCCM_realpath /path/to/ccm/public;
location ~ /KCCM(/.*) {
root $KCCM_realpath;
try_files $1 @KCCM;
}
location ^~ /KCCM/index.php {
return 403;
}
location @KCCM {
root $KCCM_realpath;
fastcgi_index index.php;
fastcgi_split_path_info ^(/KCCM)(/.*)$;
set $path_info $fastcgi_path_info;
fastcgi_param SCRIPT_FILENAME $document_root/index.php;
fastcgi_param SCRIPT_NAME $KCCM_urlpath/index.php;
fastcgi_param PATH_INFO $path_info;
fastcgi_param HTTP_PROXY "";
fastcgi_param QUERY_STRING $query_string;
fastcgi_param REQUEST_METHOD $request_method;
fastcgi_param CONTENT_TYPE $content_type;
fastcgi_param CONTENT_LENGTH $content_length;
fastcgi_param REQUEST_URI $request_uri;
fastcgi_param DOCUMENT_URI $document_uri;
fastcgi_param DOCUMENT_ROOT $document_root;
fastcgi_param SERVER_PROTOCOL $server_protocol;
fastcgi_param REQUEST_SCHEME $scheme;
fastcgi_param HTTPS $https if_not_empty;
fastcgi_param GATEWAY_INTERFACE CGI/1.1;
fastcgi_param SERVER_SOFTWARE nginx/$nginx_version;
fastcgi_param REMOTE_ADDR $remote_addr;
fastcgi_param REMOTE_PORT $remote_port;
fastcgi_param SERVER_ADDR $server_addr;
fastcgi_param SERVER_PORT $server_port;
fastcgi_param SERVER_NAME $server_name;
fastcgi_pass unix:/run/php/php7.2-fpm.sock;
}