System vorbereiten #
Diese Anleitung wurde unter Debian erstellt. Verwenden Sie eine andere Distribution, können die jeweiligen Schritte abweichen.
Benutzer anlegen #
groupadd -g 161 projectfacts && useradd -r -u 161 -g projectfacts projectfacts
Benötigte Standard Pakete #
apt update && apt upgrade -y && apt install vim unzip htop libtcnative-1 bash-completion net-tools iptables-persistent -y
Docker Installation #
Abhängigkeiten installieren #
apt update && apt install apt-transport-https ca-certificates curl gnupg2 software-properties-common libxml-xpath-perl zip mariadb-server apache2 certbot
Docker über das Repository installieren #
apt install docker.io docker-compose
Docker manuell Installieren #
Für die Docker Installation verwenden Sie folgende Anleitung: https://docs.docker.com/engine/install/debian/
Für die Docker-Compose Installation verwenden Sie folgende Anleitung: https://docs.docker.com/compose/install/linux/
MariaDB einrichten #
Datenbankbenutzer: projectfacts oder teamspace
Datenbankname: proejctfacts oder teamspace
Passwort: frei wählbar
Host Adresse: 172.17.0.%
Hinweis: Docker legt ein 172.17.0.0/16 Netzwerk an. Die Datenbank ist für den Container unter 172.17.0.1 erreichbar. Um die Datenbank einspielen zu können, benötigen Sie eine Datenbankvorlage. Hierfür melden Sie sich bei uns.
Anlegen des tmpfs #
Erstellen Sie den tmpfs Ordner
mkdir -p /var/log/mysql/tmp
Fügen Sie in die »/etc/fstab« folgenden Inhalt hinzu, damit das »tmpfs« Reboot fest ist:
# MariaDB Konfig anpassen (tmpfs mit 3GB ggf. verkleinern, falls nicht genug RAM verfügbar ist. Muss dann auch in der MySQL Konfig angepasst werden!)
tmpfs /var/log/mysql/tmp tmpfs defaults,size=3G 0 0
Um das Verzeichnis zu Mounten führen Sie folgenden Befehl aus:
mount -a
Prüfen Sie anschließend mit »df -h« ob das tmpfs Verzeichnis gemountet ist.
Anlegen der innodb_tmpdir #
Legen Sie den Ordner »/mnt/userfiles/tmp« an und führen Sie folgenden Befehl aus:
mkdir -p /mnt/userfiles/tmp && chmod 1777 /mnt/userfiles/tmp
Eine genauere Erläuterung finden Sie hier: Update auf 2024.1
MariaDB Anpassung #
Imponieren Sie die aktuelle »Zeitzone« in die MariaDB mysql Datenbank:
mysql_tzinfo_to_sql /usr/share/zoneinfo | mysql -u root mysql
Erstellen Sie eine Datei unter /etc/mysql/mariadb.conf.d/51-projectfacts.cnf. Fügen Sie folgenden Inhalt hinzu:
[mysqld]
bind-address = 0.0.0.0
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
innodb_tmpdir = /mnt/userfiles/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
Hinweis: Die Zeitzone der Datenbank muss mit dem Betriebssystem übereinstimmen, auf dem der Tomcat läuft. Wenn die Datenbank zusammen mit dem Tomcat auf einem System installiert wurden, ist das i. d. R. gegeben. Unter Linux können Sie die Zeitzone mit cat /etc/timezone einsehen.
Starten Sie die MariaDB neu:
systemctl restart mariadb
projectfacts/teamspace einrichten #
Ab der Tomcat Version 9.0.92 oder höher müssen Sie Ihr projectfacts/teamspace auf folgende Versionen aktualisieren. Ansonsten erhalten Sie eine Fehlermeldung.
- Ab 2024.2.68
- Ab 2024.1.72
Hinweis: In der Anleitung wird immer der projectfacts Name verwenden. Haben Sie teampsace können Sie den Namen ersetzen.
1. Legen Sie folgende Ordner an:
- /srv/projectfacts
- /srv/projectfacts/logs
- /srv/projectfacts/logs/tomcat
- /srv/projectfacts/webapp
- /mnt/userfiles/<Kundenname>
2. Kopieren Sie die »deploy-war-docker.sh« und die »projectfacts-20XX.X.XX.war« in das Verzeichnis »/srv/projectfacts«
3. Führen Sie »chmod +x deploy-war-docker.sh« aus, um das Script ausführbar zu machen. Führen Sie »./deploy-war-docker.sh« aus, damit das Script die »projectfacts-20XX.X.XX.war« entpackt.
Hinweis: Prüfen Sie vorher die Pfade in der »deploy-war-docker.sh«.
4. Kopieren Sie die »userfiles.tar.gz2« in das »/mnt/userfiles/<Kundenname>« Verzeichnis und entpacken Sie mit »tar -xf userfiles.tar.gz2« die Userfiles.
Damit im Ordner »/srv/projectfacts/logs/tomcat« Logs geschrieben werden können, müssen Sie die Ordner Rechte anpassen:
chown projectfacts:projectfacts /srv/projectfacts/logs/tomcat/
Dockerfile anlegen #
Legen Sie ein »Dockerfile« unter »/srv/projectfacts/Dockerfile« ab. Das Dockerfile wird benötigt, um das Image zu erstellen:
FROM tomcat:9-jdk17-temurin-focal
RUN groupadd -g 161 projectfacts && \
useradd -r -u 161 -g projectfacts projectfacts && \
rm -r /usr/local/tomcat/webapps && mkdir /usr/local/tomcat/webapps && \
chown -R projectfacts:projectfacts "/usr/local/tomcat"
USER projectfacts
Image erstellen #
Legen Sie ein »Dockerfile« unter »/srv/projectfacts/Dockerfile« ab. Das Dockerfile wird benötigt, um das Image zu erstellen:
docker build -t projectfacts:jdk17 .
web.xml anpassen #
Passen Sie in der Datei »/srv/projectfacts/webapp/WEB-INF/web.xml« folgende Zeilen an:
Damit der Mailversand & -empfang funktioniert, darf in der »timer.mailfetcher« in der param-value keine 0 stehen. Hier wird in Sekunden gezählt. Soll der Mailversand & -empfang deaktiviert werden, kann hier eine 0 gesetzt werden.
timer.mailfetcher
30
Ändern Sie in der »mail.positive_mail_list« den param-value Wert von .*5point.de in .* damit der Mailversand nicht mehr eingeschränkt wird.
mail.positive_mail_list
.*
Passen Sie in der »server.url« unter param-value ihre Domain an.
server.url
https://projectfacts.mycompany.de
webdav.url
https://projectfacts.mycompany.de
Unter »oauth2Gateway.url« geben Sie die URL an, für die OAuth 2.0 Umleitung. Haben Sie projectfacts lautet die URL »https://www.projectfacts.de« und wenn Sie teamspace haben lautet die URL »https://www.teamspace.de«.
oauth2Gateway.url
https://www.projectfacts.de
Um den PDF-Verarbeitungsdienst nutzen zu können, müssen Sie einen Server einrichten. Dies kann auf demselben Server gesehen, wo aus projectfacts/teamspace installiert wurde. Eine Anleitung finden Sie hier: PDF-Verarbeitungsdienst installieren
Verwenden Sie diesen Dienst nicht, müssen hier keine Anpassungen gemacht werden.
pdfConvertService.url
context.xml anpassen #
Öffnen Sie die Datei »/srv/projectfacts/META-INF/context.xml« und bearbeiten Sie folgende Zeilen:
username=“projectfacts„
password=“projectfacts„
url=“jdbc:mysql://localhost:3306/projectfacts?useUnicode=true&useSSL=false&serverTimezone=Europe/Berlin„
Da hier Docker verwendet wird, muss unter localhost folgende IP-Adresse eingetragen werden: 172.17.0.1. Hierbei handelt es sich um das Docker Netzwerk. Der Tomcat greift über das Docker Netzwerk auf die MariaDB zu.
Weiter Informationen können Sie hier entnehmen: Update auf 2023.4
Hinweis: Die Zeitzone der Datenbank muss mit dem Betriebssystem übereinstimmen, auf dem der Tomcat läuft. Wenn die Datenbank zusammen mit dem Tomcat auf einem System installiert wurden, ist das i. d. R. gegeben. Unter Linux können Sie die Zeitzone mit cat /etc/timezone einsehen.
Schriftart hinzufügen (Jasper-Font) #
Legen Sie die »jasper-font-default-1.2.0.jar« in das »/srv/projectfacts/webapp/WEB-INF/lib/« Verzeichnis ab.
iptables anpassen #
Damit die MariaDB von außerhalb geschützt ist, werden iptables Regeln erstellt. Zusätzlich wird der Port 8080 des Tomcat Servers nur für localhost erlaubt.
SSH Zugriff erlaubten, ansonsten sperrt man sich vom Server aus:
iptables -A INPUT -p tcp -m tcp --dport 22 -j ACCEPT
Regel für 172.17.0.0/16:
iptables -A INPUT -s 172.17.0.0/16 -p tcp -m tcp --dport 3306 -j ACCEPT
Regel für 127.0.0.1/32:
iptables -A INPUT -s 127.0.0.1/32 -p tcp -m tcp --dport 3306 -j ACCEPT
Zugriff von außen Blocken:
iptables -A INPUT -p tcp -m tcp --dport 3306 -j DROP
iptables Regeln speichern:
iptables-save > /etc/iptables/rules.v4
docker-compose.yml #
Legen sie unter »/srv/projectfacts« eine »docker-compose.yml« mit folgendem Inhalt an:
version: '2.3'
services:
tomcat:
container_name: "projectfacts"
image: projectfacts:jdk17
logging:
options:
max-file: "5"
max-size: "10m"
volumes:
- "/srv/projectfacts/webapp:/usr/local/tomcat/webapps/ROOT"
- "/srv/projectfacts/logs/tomcat:/usr/local/tomcat/logs"
- "/mnt/userfiles/:/srv/projectfacts/userfiles"
ports:
- "127.0.0.1:8080:8080"
restart: unless-stopped
cpus: 4
stop_grace_period: 30s
network_mode: bridge
environment:
TZ: "Europe/Berlin"
CATALINA_OPTS: "-Djava.awt.headless=true -Xmx1024m -XX:ParallelGCThreads=2 -XX:ConcGCThreads=2"
Passen Sie unter den Volumes »/mnt/userfiles/<Kundenname>« den Pfad an.
Passen Sie ggf. die Zeile »TZ: „Europe/Berlin“« für die Zeitzone an.
In der Zeile »CATALINA_OPTS: „-Djava.awt.headless=true -Xmx1024m -XX:ParallelGCThreads=2 -XX:ConcGCThreads=2″« in Rot Makiert können Sie den Arbeitsspeicher anpassen.
Legen Sie unter »/srv/projectfacts/logs« ein Ordner Tomcat an. Setzen Sie die Rechte mit dem Befehl:
chmod projectfacts:projectfacts /srv/projectfacts/logs/tomcat
Nützliche Docker befehle #
In einen Container wechseln:
docker exec -it /bin/bash
Logs des Containers ausgeben lassen:
docker logs
Container neu erstellen, falls sich die docker-compose.yml geändert hat, ohne den Container zu starten. Die docker-compose muss immer im Ordner projectfacts ausgeführt werden.
docker-compose up --no-start
Docker Container löschen:
docker-compose down
oder
docker rm
Container starten:
docker-compose start
Container stoppen:
docker-compose stop
Container neu starten:
docker-compose restart
Docker Statistik anzeigen:
docker-compose stats
Laufende Docker Container anzeigen:
docker ps
Alle Docker Container anzeigen:
docker ps -a
Docker Images anzeigen:
docker images
Docker Image löschen:
docker rmi
Docker Container das erste Mal starten #
Um den Container das erste Mal zu starten, müssen Sie sich im Ordner »/srv/projectfacts« befinden. Anschließend führen Sie folgenden Befehl aus:
docker-compose up -d
Apache oder Ngnix Webserver einrichten #
Um den Apache Webserver einzurichten, finden Sie hier eine Anleitung: Apache Konfiguration
Um den Ngnix Webserver einzurichten, finden Sie hier eine Anleitung: Ngnix Konfiguration