Diese Anleitung führt dich durch eine vollständige Linux-Installation von projectfacts/teamspace unter Debian/Ubuntu. Die meisten Schritte benötigen Root-Rechte. Den Reverse Proxy (Apache oder Nginx) richtest du anschließend in einem eigenen Artikel ein.
In der Anleitung wird durchgängig der Name projectfacts verwendet. Hast du teamspace, ersetze den Namen entsprechend. Die jeweiligen Pfade können bei bestehenden Installationen abweichen.
1. Pakete installieren
Installiere die benötigte Software (Root-Rechte erforderlich):
apt update && apt upgrade -y && apt install mariadb-server tomcat10 openjdk-17-jdk-headless vim apache2 unzip htop libtcnative-1 bash-completion net-tools -y
2. Links und Pfade
| Zweck | Pfad |
|---|---|
| projectfacts | /srv/projectfacts |
| userfiles | /srv/projectfacts/userfiles |
Tomcat server.xml | /etc/tomcat10/server.xml |
MySQL my.cnf | /etc/mysql/my.cnf |
web.xml | /srv/projectfacts/webapp/WEB-INF/web.xml |
context.xml | /srv/projectfacts/webapp/META-INF/context.xml |
| Apache Ports | /etc/apache2/ports.conf |
| Apache SSL | /etc/apache2/ssl/ |
| Apache Sites | /etc/apache2/sites-available/ |
| Nginx | /etc/nginx |
3. Installation
- Lege folgende Ordner an:
/srv/projectfacts/srv/projectfacts/logs/srv/projectfacts/webapp/srv/projectfacts/userfiles/srv/projectfacts/jasper-font
- Kopiere die
deploy-war.shsowie dieprojectfacts.warin das Verzeichnis/srv/projectfacts. - Mache das Skript ausführbar und führe es aus – dabei wird die
.warentpackt:chmod +x deploy-war.sh ./deploy-war.sh - Kopiere die Datei
userfiles.tar.gz2nach/srv/projectfacts/userfilesund entpacke sie:tar -xf userfiles.tar.gz2
Prüfe in der
deploy-war.shden Pfad zu projectfacts. Du kannst ihn über die VariableBASEDIRanpassen. Läuft der Tomcat unter einem anderen Benutzer alstomcat10, passe zusätzlich daschownim Skript an.
4. web.xml anpassen
Öffne die web.xml und passe die Pfade an deine Installation an:
vim /srv/projectfacts/webapp/WEB-INF/web.xml
<context-param>
<param-name>path.htdocs.directory</param-name>
<param-value>/srv/projectfacts/webapp/htdocs/</param-value>
</context-param>
<context-param>
<param-name>path.data.directory</param-name>
<param-value>/srv/projectfacts/webapp/WEB-INF/data/</param-value>
</context-param>
<context-param>
<param-name>timer.mailfetcher</param-name>
<param-value>30</param-value>
</context-param>
<context-param>
<param-name>mail.positive_mail_list</param-name>
<param-value>.*</param-value>
</context-param>
<context-param>
<param-name>server.url</param-name>
<param-value>https://projectfacts.mycompany.de</param-value>
</context-param>
<context-param>
<param-name>webdav.url</param-name>
<param-value>https://projectfacts.mycompany.de</param-value>
</context-param>
timer.mailfetchergibt in Sekunden an, wie oft Mails abgeholt/versendet werden (hier alle 30 Sekunden). Eine0deaktiviert den Mailverkehr.mail.positive_mail_listmit dem Wert.*erlaubt den Versand an alle E-Mail-Adressen.server.urlundwebdav.urlauf deine Domain setzen.
5. MariaDB/MySQL konfigurieren
Datenbankbenutzer: projectfacts · Datenbankname: projectfacts · Passwort: frei wählbar. Der Benutzer benötigt vollen Zugriff auf die Datenbank.
Importiere zuerst die Zeitzonen – sonst startet der MySQL-Server nicht:
mysql_tzinfo_to_sql /usr/share/zoneinfo | mysql -u root mysql
Lege die Datei /etc/mysql/mariadb.conf.d/51-projectfacts.cnf an:
[mysqld]
bind-address = 127.0.0.1
skip-name-resolve
# projectfacts Optimierungen
default-time-zone = Europe/Berlin
lower_case_table_names = 1
innodb_buffer_pool_size = 1G
max_heap_table_size = 512M
tmp_table_size = 512M
innodb_log_file_size = 256M
group_concat_max_len = 4096
character-set-server = utf8mb4
collation-server = utf8mb4_unicode_ci
#tmpdir = /var/log/mysql/tmp
sql_mode = 'STRICT_TRANS_TABLES,NO_ZERO_IN_DATE,NO_ZERO_DATE,ERROR_FOR_DIVISION_BY_ZERO,NO_AUTO_CREATE_USER,NO_ENGINE_SUBSTITUTION'
# Optimierung für MariaDB 10.4+
#optimizer_switch = 'rowid_filter=off'
#query_cache_size = 0
#query_cache_type = 0
Starte den MariaDB/MySQL-Server anschließend neu.
Die Zeitzone der Datenbank muss mit dem Betriebssystem übereinstimmen, auf dem der Tomcat läuft. Unter Linux prüfst du sie mit
cat /etc/timezone.
Datenbank importieren
Kontaktiere uns für eine Vorlage der Datenbankstruktur, falls du noch keinen Dump besitzt.
context.xml anpassen
Damit die Datenbankverbindung zustande kommt, kopierst du die Datei webapp/META-INF/context.xml nach tomcat10/conf/Catalina/localhost/ROOT.xml. Das Verzeichnis wird automatisch erstellt, sobald der Tomcat das erste Mal gestartet wird. In der kopierten Datei passt du docBase, username, password und url an.
6. Tomcat konfigurieren
Ab Tomcat-Version 9.0.92 oder höher muss dein projectfacts/teamspace mindestens auf 2024.2.68 bzw. 2024.1.72 aktualisiert sein, sonst erhältst du eine Fehlermeldung.
Passe die Datei /etc/tomcat10/server.xml an:
<Listener className="org.apache.catalina.core.AprLifecycleListener" SSLEngine="off" />
[…]
<Host name="localhost" appBase="webapps" unpackWARs="false" autoDeploy="false">
Um dem Tomcat mehr Arbeitsspeicher zu geben, bearbeite /etc/defaults/tomcat10:
JAVA_OPTS="-Djava.awt.headless=true -Xmx2048m"
Nächtlicher Tomcat-Neustart
Melde dich als Root an, gib crontab -e ein und füge folgende Zeile hinzu (Neustart täglich um 04:00 Uhr):
00 4 * * * systemctl restart tomcat10 >/dev/null 2>&1
Tomcat 10 Read-Only-Filesystem-Fix
Dieses Problem tritt auf, wenn der Tomcat aus dem Repository folgender Systeme installiert wird: ab Ubuntu 18.04, ab Debian 9.
- Lege Ordner und Override-Datei an:
mkdir /etc/systemd/system/tomcat10.service.d/ && vim /etc/systemd/system/tomcat10.service.d/override.conf - Füge folgenden Inhalt ein und speichere:
[Service] ReadWritePaths=/srv/projectfacts/userfiles/ - Lade den Daemon neu und starte den Tomcat:
systemctl daemon-reload systemctl restart tomcat10
Schriftart hinzufügen (Jasper-Font)
- Lade die
jasper-font-default-1.2.0.jarvon teamspace-classic.de herunter und lege sie in/srv/projectfacts/jasper-font/ab. - Erstelle einen Symlink:
ln -s /srv/projectfacts/jasper-font/jasper-font-default-1.2.0.jar /usr/share/tomcat10/lib/jasper-font-default-1.2.0.jar - Starte den Tomcat neu.
Anpassung für PDF
Damit die PDF-Erzeugung sauber läuft, kommentiere eine Zeile in der Java-Accessibility-Konfiguration aus:
vim /etc/java-17-openjdk/accessibility.properties
Kommentiere folgende Zeile aus und speichere:
#assistive_technologies=org.GNOME.Accessibility.AtkWrapper
Starte den Tomcat anschließend neu.
Berechtigungen anpassen
chown -R tomcat10:tomcat10 /srv/projectfacts /srv/projectfacts/userfiles
systemctl start tomcat10.service
7. projectfacts-Update
Erstelle vor jedem Update ein Backup. Es darf immer nur eine
.war-Datei vorhanden sein, und ein Downgrade ist nicht zulässig.
- Lade die aktuelle
projectfacts-x.x.xx.waraus teamspace-classic (» Hauptordner → Aktuelle Version → UPDATE HINWEISE BEACHTEN! «) und beachte die Versionshinweise. - Kopiere die Datei nach
/srv/projectfacts/. - Stoppe den Tomcat und prüfe, ob er wirklich gestoppt ist:
systemctl stop tomcat10 - Führe im projectfacts-Verzeichnis das Deploy-Skript aus:
./deploy-war.sh - Starte den Tomcat wieder:
systemctl start tomcat10 - Prüfe in der
projectfacts.log(unter/var/log/tomcat/projectfacts.log), ob das Update erfolgreich war, und entferne danach die.waraus/srv/projectfacts/.
Das vollständige Vorgehen samt Update-Benachrichtigung steht in Update durchführen.
Typische Fragen & Anforderungen
| Du möchtest … | So geht’s |
|---|---|
| Mails sollen nicht nur an die eigene Domain gehen | In der web.xml mail.positive_mail_list auf .* setzen. |
| Mailabruf abschalten | In der web.xml timer.mailfetcher auf 0 setzen. |
| Dem Tomcat mehr RAM geben | In /etc/defaults/tomcat10 den Wert -Xmx in JAVA_OPTS erhöhen. |
| Tomcat startet nicht (Read-Only Filesystem) | Den Read-Only-Filesystem-Fix per override.conf anwenden. |
| MySQL startet nach der Konfiguration nicht | Vor der .cnf-Anpassung die Zeitzonen mit mysql_tzinfo_to_sql importieren. |
| Den Reverse Proxy einrichten | Mit Apache oder Nginx fortfahren. |
Verwandte Themen
- Apache als Reverse Proxy einrichten Installation Konfiguration
- Nginx als Reverse Proxy einrichten Installation Konfiguration
- So ist teamspace technisch aufgebaut Installation Konzept