Come installare JasperReports con Nginx Proxy su Ubuntu 22.04
Su questa pagina
- Prerequisiti
- Installa Java JDK
- Installa e configura il database MariaDB
- Installa Tomcat Server
- Crea un file di servizio Systemd per Tomcat
- Installa e configura JasperReports
- Accedi all'interfaccia utente Web di JasperReports
- Configura Nginx come proxy inverso per JasperReports
- 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.