Ricerca nel sito web

Come installare JasperReports con Nginx Proxy su Ubuntu 22.04


Su questa pagina

  1. Prerequisiti
  2. Installa Java JDK
  3. Installa e configura il database MariaDB
  4. Installa Tomcat Server
  5. Crea un file di servizio Systemd per Tomcat
  6. Installa e configura JasperReports
  7. Accedi all'interfaccia utente Web di JasperReports
  8. Configura Nginx come proxy inverso per JasperReports
  9. Conclusione

JasperReports è un motore di reporting Java gratuito e open source e una libreria di classi che aiuta gli sviluppatori ad aggiungere funzionalità di reporting alle loro applicazioni. È un server di report autonomo e incorporabile che fornisce funzionalità di report e analisi. Con JasperReports puoi generare report professionali, incluse immagini, diagrammi e grafici. Questo strumento ti aiuta anche a scrivere contenuti ricchi sullo schermo, sulla stampante e su diversi formati di file. inclusi HTML, PDF, XLS, RTF, CSV, XML, ODT e TXT.

In questo post, ti mostreremo come installare JasperReports Server su Ubuntu 22.04.

Prerequisiti

  • Un server che esegue Ubuntu 22.04.
  • Un nome di dominio valido viene indicato con l'IP del tuo server.
  • Sul server è configurata una password di root.

Installa Java JDK

JasperReports è basato su Java, quindi dovrai installare Java JDK sul tuo server. Puoi installarlo eseguendo il seguente comando:

apt install default-jdk unzip wget -y

Una volta installato Java, puoi verificare la versione di Java utilizzando il seguente comando:

java --version

Otterrai la versione Java nel seguente output:

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)

Installa e configura il database MariaDB

Dovrai anche installare il server del database MariaDB sul tuo sistema. Puoi installarlo con il seguente comando:

apt install mariadb-server -y

Una volta installato MariaDB, accedi a MariaDB con il seguente comando:

mysql

Una volta effettuato l'accesso, creare un utente e impostare una password con il seguente comando:

MariaDB [(none)]> grant all on *.* to  identified by 'password';

Successivamente, svuota i privilegi ed esci dalla shell MariaDB con il seguente comando:

MariaDB [(none)]> flush privileges;
MariaDB [(none)]> exit;

Installa il server Tomcat

JasperReports viene eseguito sul server Tomcat. Quindi dovrai installarlo sul tuo server.

Innanzitutto, crea un utente e un gruppo dedicati per Tomcat utilizzando il seguente comando:

groupadd tomcat
useradd -s /bin/bash -g tomcat -d /opt/tomcat tomcat

Quindi, crea una directory Tomcat con il seguente comando:

mkdir /opt/tomcat

Successivamente, scarica Tomcat 8 dal loro sito Web ufficiale utilizzando il seguente comando:

wget https://dlcdn.apache.org/tomcat/tomcat-8/v8.5.82/bin/apache-tomcat-8.5.82.tar.gz

Successivamente, estrai il file scaricato nella directory /opt/tomcat:

tar -xzvf apache-tomcat-8.5.82.tar.gz -C /opt/tomcat --strip-components=1

Successivamente, imposta l'autorizzazione e la proprietà appropriate per la directory Tomcat:

chown -R tomcat: /opt/tomcat
sh -c 'chmod +x /opt/tomcat/bin/*.sh'

Crea un file di servizio Systemd per Tomcat

Successivamente, dovrai creare un file di servizio systemd per gestire il servizio Tomcat. Puoi crearlo con il seguente comando:

nano /etc/systemd/system/tomcat.service

Aggiungi le seguenti righe:

[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

Salva e chiudi il file, quindi ricarica il demone systemd per applicare le modifiche:

systemctl daemon-reload

Successivamente, avvia il servizio Tomcat con il seguente comando:

systemctl start tomcat

Puoi anche controllare lo stato del servizio Tomcat con il seguente comando:

systemctl status tomcat

Otterrai il seguente output:

? 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.

Installa e configura JasperReports

Innanzitutto, passa l'utente a Tomcat e scarica il file JasperReports con il seguente comando:

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

Una volta completato il download, decomprimere il file scaricato con il seguente comando:

unzip TIB_js-jrs-cp_8.0.0_bin.zip

Successivamente, copia il file delle proprietà MySQL con il seguente comando:

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

Successivamente, modifica il file delle proprietà MySQL utilizzando il seguente comando:

nano jasperreports-server-cp-8.0.0-bin/buildomatic/default_master.properties

Definisci il tuo percorso Tomcat e i dettagli di configurazione del database come mostrato di seguito:

CATALINA_HOME = /opt/tomcat
CATALINA_BASE = /opt/tomcat

dbHost=localhost
dbUsername=master
dbPassword=password
encrypt = true

Salva e chiudi il file, quindi installa JasperReports con il seguente comando:

cd jasperreports-server-cp-8.0.0-bin/buildomatic/
./js-install-ce.sh

Una volta completata l'installazione, otterrai il seguente output:

     [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
----------------------------------------------------------------------

Successivamente, modifica il file di configurazione dei criteri Tomcat:

nano /opt/tomcat/conf/catalina.policy

Aggiungi le seguenti righe:

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";
};

Salva e chiudi il file, quindi modifica il file di configurazione dell'applicazione:

nano /opt/tomcat/webapps/jasperserver/WEB-INF/applicationContext.xml

Aggiungi le seguenti righe:

<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>

Salva e chiudi il file, quindi esci dall'utente Tomcat:

exit

Successivamente, riavvia il servizio Tomcat per applicare le modifiche.

systemctl restart tomcat

Accedi all'interfaccia utente Web di JasperReports

A questo punto, JasperReports è installato e configurato. Ora puoi accedervi utilizzando l'URL http://YOUR_SERVER_IP_ADDRESS:8080/jasperserver/. Dovresti vedere la pagina di accesso di JasperReports:

Fornisci il nome utente: jasperadmin e la password: jasperadmin, quindi fai clic sul pulsante Accedi. Dovresti vedere la dashboard di JasperReports nella pagina seguente:

Configura Nginx come proxy inverso per JasperReports

Innanzitutto, installa il pacchetto del server Web Nginx con il seguente comando:

apt install nginx

Successivamente, crea un file di configurazione dell'host virtuale Nginx con il seguente comando:

nano /etc/nginx/conf.d/jasperreports.conf

Aggiungi le seguenti configurazioni:

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/;
    }
}

Salva e chiudi il file, quindi verifica la configurazione di Nginx:

nginx -t

Otterrai il seguente output:

nginx: the configuration file /etc/nginx/nginx.conf syntax is ok
nginx: configuration file /etc/nginx/nginx.conf test is successful

Successivamente, ricarica il servizio Nginx per applicare le modifiche alla configurazione:

systemctl restart nginx

Puoi verificare lo stato di Nginx usando il seguente comando:

systemctl status nginx

Dovresti vedere il seguente output:

? 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.

Ora puoi accedere a JasperReports utilizzando l'URL http://jasper.example.com.

Conclusione

In questo post, hai imparato come installare JasperReports su Ubuntu 22.04. Hai anche imparato a configurare Nginx come proxy inverso per JasperReports. Ora puoi utilizzare questo strumento per generare e incorporare report in applicazioni Java o non Java.