Si të instaloni JasperReports me Nginx Proxy në Ubuntu 22.04


JasperReports është një motor raportimi java pa pagesë dhe me burim të hapur dhe bibliotekë e klasës që i ndihmon zhvilluesit të shtojnë aftësi raportimi në aplikacionet e tyre. Është një server raportimi i pavarur dhe i integruar që ofron funksione raportimi dhe analitike. Me JasperReports, ju mund të gjeneroni raporte profesionale, duke përfshirë imazhe, grafikët dhe grafikët. Ky mjet ju ndihmon gjithashtu të shkruani përmbajtje të pasur në ekran, printer dhe disa formate skedarësh. duke përfshirë HTML, PDF, XLS, RTF, CSV, XML, ODT dhe TXT.

Në këtë postim, ne do t'ju tregojmë se si të instaloni serverin JasperReports në Ubuntu 22.04.

Parakushtet

  • Një server që ekzekuton Ubuntu 22.04.
  • Një emër i vlefshëm domeni tregohet me IP-në e serverit tuaj.
  • Një fjalëkalim rrënjësor është konfiguruar në server.

Instaloni Java JDK

JasperReports bazohet në Java, kështu që do t'ju duhet të instaloni Java JDK në serverin tuaj. Mund ta instaloni duke ekzekutuar komandën e mëposhtme:

apt install default-jdk unzip wget -y

Pasi të instalohet Java, mund të verifikoni versionin Java duke përdorur komandën e mëposhtme:

java --version

Ju do të merrni versionin Java në daljen e mëposhtme:

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)

Instaloni dhe konfiguroni bazën e të dhënave MariaDB

Ju gjithashtu do të duhet të instaloni serverin e bazës së të dhënave MariaDB në sistemin tuaj. Mund ta instaloni me komandën e mëposhtme:

apt install mariadb-server -y

Pasi të instalohet MariaDB, hyni në MariaDB me komandën e mëposhtme:

mysql

Pasi të keni hyrë, krijoni një përdorues dhe vendosni një fjalëkalim me komandën e mëposhtme:

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

Më pas, lani privilegjet dhe dilni nga guaska MariaDB me komandën e mëposhtme:

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

Instaloni serverin Tomcat

JasperReports funksionon në serverin Tomcat. Pra, do t'ju duhet ta instaloni atë në serverin tuaj.

Së pari, krijoni një përdorues dhe grup të dedikuar për Tomcat duke përdorur komandën e mëposhtme:

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

Tjetra, krijoni një drejtori Tomcat me komandën e mëposhtme:

mkdir /opt/tomcat

Tjetra, shkarkoni Tomcat 8 nga faqja e tyre zyrtare duke përdorur komandën e mëposhtme:

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

Më pas, nxirrni skedarin e shkarkuar në drejtorinë /opt/tomcat:

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

Më pas, vendosni lejen dhe pronësinë e duhur në drejtorinë Tomcat:

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

Krijoni një skedar shërbimi Systemd për Tomcat

Më pas, do t'ju duhet të krijoni një skedar shërbimi systemd për të menaxhuar shërbimin Tomcat. Mund ta krijoni me komandën e mëposhtme:

nano /etc/systemd/system/tomcat.service

Shtoni rreshtat e mëposhtëm:

[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

Ruani dhe mbyllni skedarin, më pas ringarkoni daemonin e sistemit për të aplikuar ndryshimet:

systemctl daemon-reload

Tjetra, filloni shërbimin Tomcat me komandën e mëposhtme:

systemctl start tomcat

Ju gjithashtu mund të kontrolloni statusin e shërbimit Tomcat me komandën e mëposhtme:

systemctl status tomcat

Do të merrni daljen e mëposhtme:

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

Instaloni dhe konfiguroni JasperReports

Së pari, kaloni përdoruesin në Tomcat dhe shkarkoni skedarin JasperReports me komandën e mëposhtme:

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

Pasi të përfundojë shkarkimi, hiqni skedarin e shkarkuar me komandën e mëposhtme:

unzip TIB_js-jrs-cp_8.0.0_bin.zip

Tjetra, kopjoni skedarin e pronës MySQL me komandën e mëposhtme:

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

Më pas, modifikoni skedarin e pronës MySQL duke përdorur komandën e mëposhtme:

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

Përcaktoni shtegun tuaj Tomcat dhe detajet e konfigurimit të bazës së të dhënave siç tregohet më poshtë:

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

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

Ruani dhe mbyllni skedarin dhe më pas instaloni JasperReports me komandën e mëposhtme:

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

Pasi të përfundojë instalimi, do të merrni daljen e mëposhtme:

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

Më pas, modifikoni skedarin e konfigurimit të politikës Tomcat:

nano /opt/tomcat/conf/catalina.policy

Shtoni rreshtat e mëposhtëm:

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

Ruani dhe mbyllni skedarin, më pas modifikoni skedarin e konfigurimit të aplikacionit:

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

Shtoni rreshtat e mëposhtëm:

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

Ruani dhe mbyllni skedarin, pastaj dilni nga përdoruesi Tomcat:

exit

Më pas, rinisni shërbimin Tomcat për të aplikuar ndryshimet.

systemctl restart tomcat

Hyni në ndërfaqen e internetit të JasperReports

Në këtë pikë, JasperReports është instaluar dhe konfiguruar. Tani mund ta përdorni atë duke përdorur URL-në http://YOUR_SERVER_IP_ADDRESS:8080/jasperserver/. Ju duhet të shihni faqen e hyrjes në JasperReports:

Jepni emrin e përdoruesit: jasperadmin dhe fjalëkalimin: jasperadmin më pas klikoni në butonin Identifikohu. Ju duhet të shihni pultin e JasperReports në faqen e mëposhtme:

Konfiguro Nginx si një përfaqësues të kundërt për JasperReports

Së pari, instaloni paketën e serverit në internet Nginx me komandën e mëposhtme:

apt install nginx

Tjetra, krijoni një skedar të konfigurimit të hostit virtual Nginx me komandën e mëposhtme:

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

Shtoni konfigurimet e mëposhtme:

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

Ruani dhe mbyllni skedarin dhe më pas verifikoni konfigurimin e Nginx:

nginx -t

Do të merrni daljen e mëposhtme:

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

Më pas, ringarkoni shërbimin Nginx për të aplikuar ndryshimet e konfigurimit:

systemctl restart nginx

Ju mund të verifikoni statusin Nginx duke përdorur komandën e mëposhtme:

systemctl status nginx

Ju duhet të shihni daljen e mëposhtme:

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

Tani mund të përdorni JasperReports tuaj duke përdorur URL-në http://jasper.example.com.

konkluzioni

Në këtë postim, mësuat se si të instaloni JasperReports në Ubuntu 22.04. Ju gjithashtu mësuat se si të konfiguroni Nginx si një përfaqësues të kundërt për JasperReports. Tani mund ta përdorni këtë mjet për të gjeneruar dhe futur raporte në aplikacionin Java ose jo-Java.