Wie installiere ich JasperReports mit Nginx Proxy auf Ubuntu 22.04
JasperReports ist eine kostenlose und quelloffene Java-Reporting-Engine und Klassenbibliothek, die Entwicklern dabei hilft, ihre Anwendungen um Berichtsfunktionen zu erweitern. Es handelt sich um einen eigenständigen und einbettbaren Berichtsserver, der Berichts- und Analysefunktionen bietet. Mit JasperReports kannst du professionelle Berichte erstellen, die auch Bilder, Tabellen und Diagramme enthalten. Mit diesem Tool kannst du außerdem umfangreiche Inhalte auf den Bildschirm, den Drucker und in verschiedene Dateiformate schreiben, darunter HTML, PDF, XLS, RTF, CSV, XML, ODT und TXT.
In diesem Beitrag zeigen wir dir, wie du JasperReports Server auf Ubuntu 22.04 installierst.
Voraussetzungen
- Ein Server, auf dem Ubuntu 22.04 läuft.
- Ein gültiger Domain-Name ist mit der IP deines Servers verbunden.
- Ein Root-Passwort ist auf dem Server konfiguriert.
Java JDK installieren
JasperReports basiert auf Java, daher musst du das Java JDK auf deinem Server installieren. Du kannst es installieren, indem du den folgenden Befehl ausführst:
apt install default-jdk unzip wget -y
Sobald Java installiert ist, kannst du die Java-Version mit folgendem Befehl überprüfen:
java --version
Du erhältst die Java-Version in der folgenden Ausgabe:
openjdk 11.0.16 2022-07-19 OpenJDK Runtime Environment (build 11.0.16+8-post-Ubuntu-0ubuntu122.04) OpenJDK 64-Bit Server VM (build 11.0.16+8-post-Ubuntu-0ubuntu122.04, mixed mode, sharing)
MariaDB-Datenbank installieren und konfigurieren
Du musst auch den MariaDB-Datenbankserver auf deinem System installieren. Du kannst ihn mit dem folgenden Befehl installieren:
apt install mariadb-server -y
Sobald MariaDB installiert ist, melde dich mit dem folgenden Befehl bei MariaDB an:
mysql
Wenn du eingeloggt bist, erstelle einen Benutzer und lege ein Passwort mit dem folgenden Befehl fest:
MariaDB [(none)]> grant all on *.* to master@localhost identified by 'password';
Anschließend löschst du die Berechtigungen und verlässt die MariaDB-Shell mit folgendem Befehl:
MariaDB [(none)]> flush privileges; MariaDB [(none)]> exit;
Tomcat Server installieren
JasperReports läuft auf dem Tomcat-Server. Du musst ihn also auf deinem Server installieren.
Erstelle zunächst mit dem folgenden Befehl einen eigenen Benutzer und eine eigene Gruppe für Tomcat:
groupadd tomcat useradd -s /bin/bash -g tomcat -d /opt/tomcat tomcat
Als Nächstes erstellst du ein Tomcat-Verzeichnis mit dem folgenden Befehl:
mkdir /opt/tomcat
Als Nächstes lädst du Tomcat 8 mit folgendem Befehl von der offiziellen Website herunter:
wget https://dlcdn.apache.org/tomcat/tomcat-8/v8.5.82/bin/apache-tomcat-8.5.82.tar.gz
Entpacke dann die heruntergeladene Datei in das Verzeichnis /opt/tomcat:
tar -xzvf apache-tomcat-8.5.82.tar.gz -C /opt/tomcat --strip-components=1
Als Nächstes legst du die richtigen Berechtigungen und Eigentümer für das Tomcat-Verzeichnis fest:
chown -R tomcat: /opt/tomcat sh -c 'chmod +x /opt/tomcat/bin/*.sh'
Erstelle eine Systemd-Dienstdatei für Tomcat
Als Nächstes musst du eine systemd-Dienstdatei erstellen, um den Tomcat-Dienst zu verwalten. Du kannst sie mit dem folgenden Befehl erstellen:
nano /etc/systemd/system/tomcat.service
Füge die folgenden Zeilen hinzu:
[Unit] Description=Tomcat webs servlet container After=network.target [Service] Type=forking User=tomcat Group=tomcat RestartSec=10 Restart=always Environment="JAVA_HOME=/usr/lib/jvm/java-1.11.0-openjdk-amd64" Environment="JAVA_OPTS=-Djava.awt.headless=true -Djava.security.egd=file:/dev/./urandom" Environment="CATALINA_BASE=/opt/tomcat" Environment="CATALINA_HOME=/opt/tomcat" Environment="CATALINA_PID=/opt/tomcat/temp/tomcat.pid" Environment="CATALINA_OPTS=-Xms1024M -Xmx2048M -server -XX:+UseParallelGC" ExecStart=/opt/tomcat/bin/startup.sh ExecStop=/opt/tomcat/bin/shutdown.sh [Install] WantedBy=multi-user.target
Speichere und schließe die Datei und lade dann den systemd-Daemon neu, um die Änderungen zu übernehmen:
systemctl daemon-reload
Starte dann den Tomcat-Dienst mit dem folgenden Befehl:
systemctl start tomcat
Du kannst den Status des Tomcat-Dienstes auch mit dem folgenden Befehl überprüfen:
systemctl status tomcat
Du erhältst die folgende Ausgabe:
? tomcat.service - Tomcat webs servlet container Loaded: loaded (/etc/systemd/system/tomcat.service; disabled; vendor preset: enabled) Active: active (running) since Sun 2022-09-04 06:06:39 UTC; 6s ago Process: 6867 ExecStart=/opt/tomcat/bin/startup.sh (code=exited, status=0/SUCCESS) Main PID: 6874 (java) Tasks: 29 (limit: 4579) Memory: 118.4M CPU: 4.427s CGroup: /system.slice/tomcat.service ??6874 /usr/lib/jvm/java-1.11.0-openjdk-amd64/bin/java -Djava.util.logging.config.file=/opt/tomcat/conf/logging.properties -Djav> Sep 04 06:06:39 ubuntu2204 systemd[1]: Starting Tomcat webs servlet container... Sep 04 06:06:39 ubuntu2204 startup.sh[6867]: Tomcat started. Sep 04 06:06:39 ubuntu2204 systemd[1]: Started Tomcat webs servlet container.
JasperReports installieren und konfigurieren
Wechsle zunächst den Benutzer zu Tomcat und lade die JasperReports-Datei mit dem folgenden Befehl herunter:
su - tomcat wget https://sourceforge.net/projects/jasperserver/files/JasperServer/JasperReports%20Server%20Community%20edition%208.0.0/TIB_js-jrs-cp_8.0.0_bin.zip
Sobald der Download abgeschlossen ist, entpackst du die heruntergeladene Datei mit dem folgenden Befehl:
unzip TIB_js-jrs-cp_8.0.0_bin.zip
Als Nächstes kopierst du die MySQL-Eigenschaftsdatei mit dem folgenden Befehl:
cp jasperreports-server-cp-8.0.0-bin/buildomatic/sample_conf/mysql_master.properties jasperreports-server-cp-8.0.0-bin/buildomatic/default_master.properties
Als Nächstes bearbeitest du die MySQL-Eigenschaftsdatei mit dem folgenden Befehl:
nano jasperreports-server-cp-8.0.0-bin/buildomatic/default_master.properties
Definiere den Tomcat-Pfad und die Details der Datenbankkonfiguration wie unten gezeigt:
CATALINA_HOME = /opt/tomcat CATALINA_BASE = /opt/tomcat dbHost=localhost dbUsername=master dbPassword=password encrypt = true
Speichere und schließe die Datei und installiere JasperReports mit dem folgenden Befehl:
cd jasperreports-server-cp-8.0.0-bin/buildomatic/ ./js-install-ce.sh
Sobald die Installation abgeschlossen ist, erhältst du die folgende Ausgabe:
[echo] Found Groovy in import lib directory deploy-webapp-datasource-configs: [echo] --- (app-server.xml:deploy-webapp-datasource-configs) --- [echo] jsEdition = ce [echo] warFileDistSourceDir = /opt/tomcat/jasperreports-server-cp-8.0.0-bin/buildomatic/../jasperserver.war [echo] warTargetDir = /opt/tomcat/webapps/jasperserver [echo] webAppName = jasperserver [echo] webAppNameCE = jasperserver [echo] webAppNamePro = jasperserver-pro [echo] webAppNameSrc = jasperserver [echo] webAppNameDel = jasperserver, warTargetDirDel = /opt/tomcat/webapps/jasperserver [copy] Copying 9 files to /opt/tomcat/webapps/jasperserver scalableAdhoc-refinement: deploy-webapp-ce: install-normal-ce: [echo] Installation successfully completed! BUILD SUCCESSFUL Total time: 1 minute 26 seconds Checking Ant return code: OK ----------------------------------------------------------------------
Als Nächstes bearbeitest du die Konfigurationsdatei der Tomcat-Richtlinie:
nano /opt/tomcat/conf/catalina.policy
Füge die folgenden Zeilen hinzu:
grant codeBase "file:/groovy/script" { permission java.io.FilePermission "${catalina.home}${file.separator}webapps${file.separator} jasperserver-pro${file.separator}WEB-INF${file.separator}classes${file.separator}-", "read"; permission java.io.FilePermission "${catalina.home}${file.separator}webapps${file.separator} jasperserver-pro${file.separator}WEB-INF${file.separator}lib${file.separator}*", "read"; permission java.util.PropertyPermission "groovy.use.classvalue", "read"; };
Speichere und schließe die Datei und bearbeite dann die Anwendungskonfigurationsdatei:
nano /opt/tomcat/webapps/jasperserver/WEB-INF/applicationContext.xml
Füge die folgenden Zeilen hinzu:
<bean id="reportsProtectionDomainProvider" class="com.jaspersoft.jasperserver.api. engine.jasperreports.util.PermissionsListProtectionDomainProvider"> <property name="permissions"> <list> <bean class="java.io.FilePermission"> <constructor-arg value="${catalina.home}${file.separator}webapps ${file.separator}jasperserver-pro${file.separator} WEB-INF${file.separator}classes${file.separator}-"/> <constructor-arg value="read"/> </bean> <bean class="java.io.FilePermission"> <constructor-arg value="${catalina.home}${file.separator}webapps ${file.separator}jasperserver-pro${file.separator}WEB-INF ${file.separator}lib${file.separator}*"/> <constructor-arg value="read"/> </bean> </list> </property> </bean>
Speichere und schließe die Datei und beende dann den Tomcat-Benutzer:
exit
Starte anschließend den Tomcat-Dienst neu, um die Änderungen zu übernehmen.
systemctl restart tomcat
Zugriff auf die JasperReports Web UI
Jetzt ist JasperReports installiert und konfiguriert. Du kannst nun über die URL http://YOUR_SERVER_IP_ADDRESS:8080/jasperserver/ darauf zugreifen . Du solltest die Anmeldeseite von JasperReports sehen:
Gib den Benutzernamen: jasperadmin und das Passwort: jasperadmin ein und klicke auf die Schaltfläche Anmelden. Auf der folgenden Seite solltest du das JasperReports-Dashboard sehen:
Nginx als Reverse Proxy für JasperReports konfigurieren
Installiere zunächst das Nginx-Webserverpaket mit dem folgenden Befehl:
apt install nginx
Als Nächstes erstellst du mit dem folgenden Befehl eine Konfigurationsdatei für den virtuellen Nginx-Host:
nano /etc/nginx/conf.d/jasperreports.conf
Füge die folgenden Konfigurationen hinzu:
upstream tomcat { server 127.0.0.1:8080 weight=100 max_fails=5 fail_timeout=5; } server { server_name jasper.example.com; location = / { return 301 http://jasper.example.com/jasperserver/; } location / { proxy_set_header X-Forwarded-Host $host; proxy_set_header X-Forwarded-Server $host; proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for; proxy_pass http://tomcat/; } }
Speichere und schließe die Datei und überprüfe dann die Nginx-Konfiguration:
nginx -t
Du erhältst die folgende Ausgabe:
nginx: the configuration file /etc/nginx/nginx.conf syntax is ok nginx: configuration file /etc/nginx/nginx.conf test is successful
Als Nächstes lädst du den Nginx-Dienst neu, um die Konfigurationsänderungen zu übernehmen:
systemctl restart nginx
Du kannst den Nginx-Status mit folgendem Befehl überprüfen:
systemctl status nginx
Du solltest die folgende Ausgabe sehen:
? nginx.service - A high performance web server and a reverse proxy server Loaded: loaded (/lib/systemd/system/nginx.service; enabled; vendor preset: enabled) Active: active (running) since Sun 2022-09-04 14:51:10 UTC; 7s ago Docs: man:nginx(8) Process: 7644 ExecStartPre=/usr/sbin/nginx -t -q -g daemon on; master_process on; (code=exited, status=0/SUCCESS) Process: 7645 ExecStart=/usr/sbin/nginx -g daemon on; master_process on; (code=exited, status=0/SUCCESS) Main PID: 7646 (nginx) Tasks: 3 (limit: 4579) Memory: 3.3M CPU: 45ms CGroup: /system.slice/nginx.service ??7646 "nginx: master process /usr/sbin/nginx -g daemon on; master_process on;" ??7647 "nginx: worker process" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" ??7648 "nginx: worker process" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" Sep 04 14:51:10 ubuntu2204 systemd[1]: Starting A high performance web server and a reverse proxy server... Sep 04 14:51:10 ubuntu2204 systemd[1]: Started A high performance web server and a reverse proxy server.
Du kannst jetzt über die URL http://jasper.example.com auf deine JasperReports zugreifen.
Fazit
In diesem Beitrag hast du gelernt, wie du JasperReports auf Ubuntu 22.04 installierst. Du hast auch gelernt, wie du Nginx als Reverse Proxy für JasperReports konfigurierst. Jetzt kannst du dieses Tool nutzen, um Berichte zu erstellen und in Java- oder Nicht-Java-Anwendungen einzubetten.