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:

Jasper Anmeldung

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:

JasperReports Dashboard

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.

Das könnte dich auch interessieren …