Manuelle Installation
Webserver (Apache2)
Webserver installieren
Als Webserver kommt Apache2 zum Einsatz. Da die Applikation in der Programmiersprache PHP geschrieben ist, muss zudem der korrekte Interpreter installiert werden. Damit Sivver korrekt funktioniert, sollte mindestens PHP7.0 verwendet werden. Zudem müssen alle Paketabhängigkeiten erfüllt sein.
apt-get install curl ssh openssl zip unzip ghostscript pdftk libgs-dev
apt-get install apache2 php php-curl php-mysql php-pdo php-bz2 php-gd php-geoip php-imagick php-imap php-mbstring php-snmp php-soap php-ssh2 php-xml php-zip php-apcu
Abhängig von der PHP Version wird zudem php-mcrypt benötigt. Dieses Verschlüsselungsmodul wird nur unterhalb der PHP Version 7.2 benötigt.
apt-get install php-mcrypt
Module aktivieren
Damit die Applikation problemlos läuft müssen mindestens die Module rewrite und ssl aktiviert werden. Dies erlaubt der Applikation die korrekte Pfadabbildung und die Verschlüsselung zwischen Webserver und Besucher.
a2enmod rewrite
a2enmod ssl
a2enmod remoteip
vHost konfigurieren
Um die Applikation korrekt nutzen zu können, wird ein Catch-All vHost, ähnlich der Vorgabe aus der Datei /etc/apache2/sites-available/000-default.conf, benötigt. Die Datei default-ssl.conf im selben Verzeichnis wird nicht benötigt. Um die Installation einfach zu halten, empfehlen wir die Datei 000-default.conf entsprechend den Vorgaben abzuändern.
<VirtualHost *:80>
RemoteIPHeader CF-Connecting-IP
RewriteEngine On
RewriteCond %{HTTPS} !=on
RewriteRule ^ https://%{HTTP_HOST}%{REQUEST_URI} [L,R=301]
</VirtualHost>
<VirtualHost _default_:443>
DocumentRoot /var/www/html
<Directory /var/www/html>
Options FollowSymLinks MultiViews
AllowOverride All
Require all granted
</Directory>
RemoteIPHeader CF-Connecting-IP
ErrorLog /var/log/apache2/production.error.log
LogLevel warn
CustomLog /var/log/apache2/production.access.log combined
ServerSignature off
SSLEngine On
SSLCertificateFile /etc/ssl/certs/ssl-cert-snakeoil.pem
SSLCertificateKeyFile /etc/ssl/private/ssl-cert-snakeoil.key
</VirtualHost>
Die o.g. Konfiguration bedient sich dem Cloudflare Reverse Proxy. Wird dieser nicht verwendet, kann auf die Zeile RemoteIPHeader CF-Connecting-IP
und das Apache2 Modul remoteip
verzichtet werden. Die genannten Snakeoil Zertifikate generieren Debian Systeme in der Regel eigenständig. Hier sollten valide SSL-Zertifikate eines zertifizierten Herausgebers genutzt werden, damit Zertifikatsfehler vermieden werden. Bei Bedarf kann ein eigener Reverse-Proxy vorgeschaltet werden.
Composer
Sivver baut auf verschiene PHP Libraries auf. Diese werden ab v4.1.22 nicht mehr mit dem Installationspaket ausgeliefert. Sie müssen diese selbst installieren. Für die Installation der Abhängigkeiten muss auf dem Zielsystem Composer installiert sein.
Composer installieren
apt-get update
apt-get install composer
Composer Pakete installieren
Zur Installation der Composer-Packages der Anwendung wechseln Sie in den Ordner, in dem sich Sivver befindet. Dort wird folgender Befehl ausgeführt.
composer install
Die Konfigurationsdatei composer.json
setzt die Anwesenheit aller nötigen PHP Module voraus. Stellen Sie also unbedingt sicher, dass die Installation der PHP Module zu diesem Zeitpunkt bereits erfolgt ist.
NodeJS
Sivver benötigt NodeJS und den Node-Package-Manager (npm), um mittels Webpack CSS und JS Assets zu bauen. Diese werden ab v4.1.22 nicht als Bundle ausgeliefert. So können Sie Änderungen einfacher vornehmen und müssen nicht eine riesige Datei ohne Formatierung durchsuchen.
NodeJS & NPM installieren
Zunächst muss NodeJS installiert werden. Da die Pakete nodejs
und npm
aus den Paketquellen des Systems nicht zwingend kompatibel sind, bedienen wir uns den Quellen von nodesource.com.
curl -sL https://deb.nodesource.com/setup_14.x | sudo -E bash -
apt-get install -y nodejs
NPM Pakete installieren
Zur Installation der Composer-Packages der Anwendung wechseln Sie in den Ordner, in dem sich Sivver befindet. Dort werden folgende Befehle ausgeführt.
npm install
npm run watch-production
Sollten Sie den Build-Vorgang im Zuge einer Entwicklungsumgebung ausführen, können Sie npm run watch
nutzen, um die webpack.js Bundles ohne Post-Compilation Scripts zu bauen.
SQL Server (mySQL)
SQL Server installieren
Die Software setzt einen PDO-kompatiblen Datenbankserver mit einem relationalen Datenmodell voraus. Wir empfehlen mysql-server
oder mariadb-server
. Die Installation des Paketes kann über den Paketmanager APT abgeschlossen werden.
apt-get update
apt-get install mysql-server
Nach der Installation folgt die initiale Konfiguration. Die Konfiguration wird durch das Installationsscript automatisch gestartet. Abhängig vom Server-Typ können die nötigen Grundkonfigurationen abweichen.
SQL Server konfigurieren
Der Datenbankserver sollte entsprechend vor externen Zugriffen geschützt werden. Die einfachste Variante, dies zu bewerkstelligen ist die eingebaute mysql_secure_installation
. Das zugehörige Script führt alle nötigen Schritte durch, um den Root-Benutzer mit einem Passwort zu sichern und den externen Zugriff auf den Server zu verhindern.
mysql_secure_installation
Die nächsten Schritte erfordern Zugriff auf das Commandline-Interface (CLI) des Datenbankservers. In der Regel führt der Datenbankserver die Authentifizierung des root-Benutzers an Hand der Sitzung des Linux-Benutzers durch. Es muss also kein Passwort angegeben werden, sogleich der Server eines anfordern kann. Wurde bereits bei der Installation des Datenbankservers ein Passwort für den Root-Benutzer festgelegt, so kann das System an dieser Stelle nach diesem verlangen und eine Passwortauthentifizierung in Einzelfällen von Nöten sein.
mysql -u root -p
Zunächst wird ein Benutzer und eine Datenbank für den Hauptmandanten angelegt. Der neue Benutzer erhält Superuser-Rechte. Diese werden benötigt, damit die Applikation später weiterführende Datenbankübergreifende Wartungsvorgänge durchführen kann. Im Folgenden wird zunächst ein neuer Benutzer angelegt, der alle Standardrechte auf alle Datenbanken erhält. Im Anschluss werden ihm die Superuser-Rechte zugewiesen.
mysql> CREATE USER 'username'@'localhost' IDENTIFIED BY 'password';
mysql> GRANT ALL PRIVILEGES ON *.* TO 'username'@'localhost';
mysql> FLUSH PRIVILEGES;
mysql> UPDATE mysql.user SET Grant_priv='Y', Super_priv='Y' WHERE User='username';
mysql> CREATE DATABASE sivver;
Datenbank-Backup einspielen (manuelle Installation)
Die Dateien der Software enthalten den Ordner sql. In diesem befindet die Datei sivver.sql. Diese enthält die Befehle für die Erstellung und Füllung aller nötigen Tabellen. Wenn eine manuelle Installation durchgeführt wird, wird ein administrativer Benutzer sivver mit dem Passwort default angelegt. Funktioniert das Passwort nicht, muss es zunächst zurückgesetzt werden. Dies ist im Wesentlichen von den vorliegenden Verschlüsselungsmechanismen abhängig.
mysql -u username -p sivver < sivver.sql
Große Datei-Uploads ermöglichen
Sivver legt sämtliche Dateien des Datenarchivs in der Datenbank ab. Wenn Sie ermöglichen wollen, größere Dateien hochzuladen, passen Sie bitte folgenden Parameter im Absatz [mysqld]
der Datei my.cnf an.
[mysqld]
key_buffer_size = 200M
max_allowed_packet = 200M
Die Datei befindet sich, je nach System, an einem der folgenden Orte:
/etc/my.cnf
/etc/mysql/my.cnf
/usr/etc/my.cnf
~/.my.cnf
Hinweis für neue Datenbankserver Versionen
Neue Versionen von Datenbankservern (z.B. MariaDB 10.1.7 und neuer) nutzen inkompatible SQL_MODE Parameter. Sind diese aktiv, schlagen einige Queries am Datenbankserver fehl, was zu ungewollten Verhaltensweisen der Applikation bei der Datenverarbeitung führen kann. Um die globale Konfiguration des SQL_MODE Parameters permanent abzuändern, nehmen Sie bitte folgende Parametrierung im Absatz [mysqld]
der Datei my.cnf vor. Existiert der Absatz nicht, muss jener am Ende der Datei angefügt werden.
[mysqld]
sql-mode = ''
Die Datei befindet sich, je nach System, an einem der folgenden Orte:
/etc/my.cnf
/etc/mysql/my.cnf
/usr/etc/my.cnf
~/.my.cnf
Im Anschluss muss der Datenbankserver neugestartet werden:
service mysql restart
Die erfolgreiche Konfiguration kann geprüft, indem eine SELECT-Query ausgeführt wird. Das Ergebnis der Datenselektion sollte nun eine leere Ergebnistabelle zur Folge haben.
SELECT @@SQL_MODE, @@GLOBAL.SQL_MODE;
+------------+-------------------+
| @@SQL_MODE | @@GLOBAL.SQL_MODE |
+------------+-------------------+
| | |
+------------+-------------------+
Sivver
Erstellen der Config.php (manuelle Installation)
Damit die Hauptinstanz auf ihre Datenbasis zugreifen kann, müssen die Verbindungsdaten für den Datenbankserver in die Datei app/Core/Config.php eingetragen werden. Eine vollständige Vorlage der Datei Config.php mit allen benötigten Parametern bietet die Datei Config_Prepared.php. Diese wird auch bei der Installation über den Webinstaller genutzt.
define('DB_TYPE', 'mysql');
define('DB_HOST', 'localhost');
define('DB_NAME', 'sivver');
define('DB_USER', 'username');
define('DB_PASS', 'password');
Neben der Datenbankverbindung sollte ein Lizenzschlüssel eingetragen werden. Ohne Lizenzschlüssel ist die Software nicht lauffähig.
define('LICENSE_KEY', 'A3FKI-58LZY-KRYBQ-853WX');
Um eine ordnungsgemäße Verschlüsselung von kritischen Daten bewerkstelligen zu können, muss zudem ein entsprechender AES Schlüssel festgelegt werden.
define('AES_KEY', 'AKE73KI09TRYC01L');
Auf die zusätzlichen Parameter gehen wir im Zuge dieser Anleitung nicht ein.
Installationsroutine (geleitete Installation)
Die geleitete Installation wird automatisch ausgeführt, wenn die Datei Config.php nicht vorhanden ist. Der Installationsvorgang fragt alle nötigen Parameter ab und initialisiert im Anschluss den Hauptmandanten, sodass das System im Anschluss genutzt werden kann. Bitte konfigurieren Sie das Grundsystem vorab entsprechend den Systemvoraussetzungen.
Erweiterte Parametrierung
Die Software ist in der Regel nach der Installation sofort einsatzbereit. Es sollten allerdings einige Grundeinstellungen im Mitarbeiter-/Adminbereich vorgenommen werden. Das gilt auch für die manuelle Installation Ist die Applikation hier nicht vollständig parametriert, kann es in Einzelfällen zu Laufzeitfehlern kommen. Die einzelne Modulkonfiguration ist in den zugehörigen Wiki-Artikeln entsprechend dargelegt.