Sollten Sie sich für die Bare Metal Lösung entschieden haben finden Sie hier alle wichtigen Informationen zur Installation der notwendigen Komponenten für Troi unter Ubuntu. Der Betrieb der Troi Software auf eigener Infrastruktur benötigt grundlegende Linux Kenntnisse, insbesondere im Umgang mit der Konsole.
Die Bare Metal Variante setzt Ubuntu 18.04 Headless LTS als Basissystem voraus. Troi läuft in der Theorie auch unter anderen *Nix Systemen, aber nur Ubuntu wird offiziell als Bare Metal System unterstützt.
Der eingesetzte Ubuntu Server sollte auf dem aktuellen Stand sein:
sudo apt update sudo apt dist-upgrade |
In einer Zeile bitte wie folgt:
sudo apt update && sudo apt dist-upgrade |
Bitte installieren Sie nicht das Standard LAMP Paket bei der Ubuntu Server Edition sondern folgende Pakete:
sudo apt install openjdk-8-jre-headless nginx-light php7.2-fpm php7.2-curl php7.2-gd php7.2-cli php7.2-mysql php7.2-mbstring php7.2-zip php7.2-sqlite3 php7.2-bcmath php7.2-xml php-redis redis-server |
Installation des Datenbankservers: Hier kann zwischen MySQL 5.7 oder MariaDB (mind. 10.3) gewählt werden. In unserem Beispiel hier setzen wir auf MySQL:
sudo apt install mysql-server mysql-client |
Der FOPServer kann über folgenden Link heruntergeladen werden: https://dist.troi.software/fopserver/fopserver-v2.3.tar.gz
Download und Installation per Shell:
cd /tmp wget https://dist.troi.software/fopserver/fopserver-v2.3.tar.gz mkdir -p /opt/troi /var/troi/fopserver/log tar -C /opt/troi -xzf fopserver-v2.3.tar.gz rm /tmp/fopserver-v2.3.tar.gz chown -R www-data:www-data /var/troi /opt/troi |
Anschließend wird der Dienst noch bei Systemd registriert: /etc/systemd/system/troi-fopserver.service
[Unit] Description = Troi FOPServer After = NetworkManager-wait-online.service network.target network-online.target Wants = NetworkManager-wait-online.service network-online.target [Service] ExecStart = /bin/sh -c '/usr/bin/java -jar /opt/troi/fopserver/fopserver.jar >> /var/troi/fopserver/log/fopserver.log 2>&1' Restart = on-abort User = www-data StartLimitInterval = 60 StartLimitBurst = 10 [Install] WantedBy = multi-user.target |
systemctl enable troi-fopserver.service systemctl start troi-fopserver.service |
Logrorate kümmert sich um die anfallenden Logs: /etc/logrotate.d/troi-fopserver
/var/troi/fopserver/log/fopserver.log { rotate 12 daily copytruncate missingok notifempty compress delaycompress } |
Der FOPServer kann über folgenden Link heruntergeladen werden: https://dist.troi.software/jobscheduler/jobscheduler-linux.tar.gz
Download und Installation per Shell:
cd /tmp wget https://dist.troi.software/jobscheduler/jobscheduler-linux.tar.gz mkdir -p /opt/troi /var/troi/jobscheduler/log tar -C /opt/troi -xzf jobscheduler-linux.tar.gz rm /tmp/jobscheduler-linux.tar.gz ln -s /var/troi/jobscheduler/log/ /opt/troi/jobscheduler/log chown -R www-data:www-data /var/troi /opt/troi |
Anschließend wird der Dienst noch bei Systemd registriert: /etc/systemd/system/troi-jobscheduler.service
[Unit] Description = Troi Jobscheduler [Service] User = www-data Group = www-data Type = simple ExecStart = /opt/troi/jobscheduler/jobscheduler RestartSec = 10s Restart = on-failure KillMode = process [Install] WantedBy = multi-user.target |
systemctl enable troi-jobscheduler.service systemctl start troi-jobscheduler.service |
Logrorate kümmert sich um die anfallenden Logs: /etc/logrotate.d/troi-jobscheduler
/var/troi/jobscheduler/log/general.log { rotate 12 daily copytruncate missingok notifempty compress delaycompress } /var/troi/jobscheduler/log/error.log { rotate 12 daily copytruncate missingok notifempty compress delaycompress } |
Bevor die Installation von Troi selbst durchgeführt werden kann, ist die Konfiguration der Dienste notwendig.
Der Datenbankserver benötigt folgende Konfiguration (es empfiehlt sich, die Konfiguration in eine eigene Konfigurationsdatei abzulegen (z.B. /etc/mysql/mysql.conf.d/troi.cnf) um Änderungen bei Systemupdates vorzubeugen) :
[mysqld] explicit_defaults_for_timestamp = Off sql_mode = |
MariaDB ab Version 10.4 benötigt eine zusätzliche Änderung, um die Performance unter Troi zu verbessern:
[mysqld] optimizer_switch=rowid_filter=off |
Unter MariaDB 10.3 sollte der Parameter `join_buffer_size` nicht angepasst werden, da dieser die Performance stark beeinträchtigen kann. |
Es empfiehlt sich, die Konfiguration in eine eigene Konfigurationsdatei abzulegen (z.B. /etc/php/7.2/fpm/conf.d/99-troi.ini) um Änderungen bei Systemupdates vorzubeugen.
memory_limit = 1G upload_max_filesize = 20M max_execution_time = 120 cgi.fix_pathinfo = 0 max_input_vars = 16000 post_max_size = 21M display_errors = Off display_startup_errors = Off allow_url_fopen = On error_reporting = E_COMPILE_ERROR|E_RECOVERABLE_ERROR|E_ERROR|E_CORE_ERROR |
Es empfiehlt sich, die Konfiguration in eine eigene Konfigurationsdatei abzulegen (z.B. /etc/php/7.2/fpm/pool.d/troi.conf) um Änderungen bei Systemupdates vorzubeugen.
[troi] user = www-data group = www-data listen = /var/run/php-fpm-troi.sock listen.owner = www-data listen.group = www-data pm = ondemand pm.max_children = 75 pm.process_idle_timeout = 10s pm.max_requests = 500 catch_workers_output = yes chdir = /var/www php_admin_value[openssl.cafile] = /etc/ssl/certs/ca-certificates.crt php_admin_value[openssl.capath] = /etc/ssl/certs php_flag[display_errors] = off php_admin_value[error_reporting] = E_COMPILE_ERROR|E_RECOVERABLE_ERROR|E_ERROR|E_CORE_ERROR listen.backlog = 5000 |
Es empfiehlt sich, die Konfiguration in eine eigene Konfigurationsdatei abzulegen (z.B. /etc/php/7.2/fpm/pool.d/troi.conf) um Änderungen bei Systemupdates vorzubeugen.
server { listen 80; server_name troi.lan; root /var/www/troi/public; index index.html index.htm index.php; location = /config { return 301 /; } location = /config/ { return 301 /; } index index.html index.htm index.php; rewrite_log on; ## Frontend rewrite ^/app(.*)$ /dist/index.html?$1 last; ## APIv1 location /api/v1/rest { set $rewrite_real_path "/api/v1/rest/troi.php?auth=$http_authorization&$query_string"; try_files $uri /index.php$is_args$args; } ## APIv2 location /api/v2/rest { set $rewrite_real_path "/api/v2/rest/troi.php?auth=$http_authorization&$query_string"; try_files $uri /index.php$is_args$args; } ## Caldav location /caldav { set $rewrite_real_path "/caldav/index.php?auth=$http_authorization&$query_string"; try_files $uri /index.php$is_args$args; } ## Carddav location /carddav { set $rewrite_real_path "/carddav/addressbookserver.php?$query_string"; try_files $uri /index.php$is_args$args; } ## frontend assets rewrite ^/assets/(.*)$ /dist/assets/$1 last; location / { # try to serve file directly, fallback to index.php try_files $uri /index.php$is_args$args; } # assets, media location ~* \.(?:css(\.map)?|js(\.map)?|jpe?g|png|gif|ico|cur|heic|webp|tiff?|mp3|m4a|aac|ogg|midi?|wav|mp4|mov|webm|mpe?g|avi|ogv|flv|wmv)$ { expires 7d; access_log off; } # svg, fonts location ~* \.(?:svgz?|ttf|ttc|otf|eot|woff2?)$ { add_header Access-Control-Allow-Origin "*"; expires 7d; access_log off; } # robots.txt location = /robots.txt { allow all; access_log off; add_header Content-Type text/plain; return 200 "User-agent: *\nDisallow: /\n"; } # deny dot-files location ~ /\. { deny all; access_log off; log_not_found off; } location ~ ^/(index\.php(/|$)|site/includes/roundcubemail/index\.php(/|$)|site/includes/roundcubemail/(/|$)) { fastcgi_split_path_info ^(.+\.php)(/.*)$; if (!-f $document_root$fastcgi_script_name) { return 404; } fastcgi_pass unix:/var/run/php-fpm-troi.sock; fastcgi_index index.php; fastcgi_param SCRIPT_FILENAME $realpath_root$fastcgi_script_name; fastcgi_param DOCUMENT_ROOT $realpath_root; fastcgi_param REWRITE_REAL_PATH $rewrite_real_path; include fastcgi_params; fastcgi_buffer_size 128k; fastcgi_buffers 256 16k; fastcgi_busy_buffers_size 256k; fastcgi_temp_file_write_size 256k; fastcgi_read_timeout 3600; } } |
Nach dem alle Dienste konfiguriert und neu gestartet wurden, gilt es die Datenbank sowie die Benutzer vorzubereiten.
In diesem Beispiel lautet das Passwort für den MySQL Troi Benutzer "nopass". Bitte ändern Sie das Kennwort anschließend auf Ihrer Seite.
CREATE USER 'troi'@'%' IDENTIFIED BY 'nopass'; GRANT USAGE ON * . * TO 'troi'@'%' IDENTIFIED BY 'nopass' WITH MAX_QUERIES_PER_HOUR 0 MAX_CONNECTIONS_PER_HOUR 0 MAX_UPDATES_PER_HOUR 0 MAX_USER_CONNECTIONS 0; GRANT ALL PRIVILEGES ON `troi\_%` . * TO 'troi'@'%'; CREATE DATABASE troi_live CHARACTER SET utf8 COLLATE utf8_general_ci; |
Die Troi Installationsdaten erhalten Sie vom Troi Team. Diese bestehen aus 2 Komponenten: Datenbank und Applikation inklusive Konfiguration und Storage (Alle hochgeladenen Dateien von Troi sind hier vorzufinden).
Die Troi Datenbank wird als MySQL Datenbankdump per GZIP Komprimiert ausgeliefert. Der Import erfolgt wie:
zcat troi.sql.gz | mysql -u troi -p troi_live --default-character-set=utf8 |
Eventuell tritt ein Fehler beim Import auf: |