Поиск по сайту:

Как установить JasperReports с прокси-сервером Nginx в Ubuntu 22.04


На этой странице

  1. Предпосылки
  2. Установите Java JDK
  3. Установка и настройка базы данных MariaDB
  4. Установить сервер Tomcat
  5. Создание служебного файла Systemd для Tomcat
  6. Установка и настройка JasperReports
  7. Доступ к веб-интерфейсу JasperReports
  8. Настройка Nginx в качестве обратного прокси-сервера для JasperReports
  9. Заключение

JasperReports — это бесплатный механизм отчетов Java с открытым исходным кодом и библиотека классов, которые помогают разработчикам добавлять возможности отчетов в свои приложения. Это автономный и встраиваемый сервер отчетов, обеспечивающий функции отчетов и аналитики. С JasperReports вы можете создавать профессиональные отчеты, включая изображения, диаграммы и графики. Этот инструмент также помогает вам записывать богатый контент на экран, принтер и в несколько форматов файлов. включая HTML, PDF, XLS, RTF, CSV, XML, ODT и TXT.

В этом посте мы покажем вам, как установить JasperReports Server на Ubuntu 22.04.

Предпосылки

  • Сервер под управлением Ubuntu 22.04.
  • Действительное доменное имя указано вместе с IP-адресом вашего сервера.
  • На сервере настроен пароль root.

Установите JDK Java

JasperReports основан на Java, поэтому вам необходимо установить Java JDK на свой сервер. Вы можете установить его, выполнив следующую команду:

apt install default-jdk unzip wget -y

После установки Java вы можете проверить версию Java с помощью следующей команды:

java --version

Вы получите версию Java в следующем выводе:

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

Вам также потребуется установить сервер базы данных MariaDB в вашу систему. Вы можете установить его с помощью следующей команды:

apt install mariadb-server -y

После установки MariaDB войдите в MariaDB с помощью следующей команды:

mysql

После входа в систему создайте пользователя и установите пароль с помощью следующей команды:

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

Затем сбросьте привилегии и выйдите из оболочки MariaDB с помощью следующей команды:

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

Установите сервер Tomcat

JasperReports работает на сервере Tomcat. Поэтому вам нужно будет установить его на свой сервер.

Сначала создайте выделенного пользователя и группу для Tomcat с помощью следующей команды:

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

Затем создайте каталог Tomcat с помощью следующей команды:

mkdir /opt/tomcat

Затем загрузите Tomcat 8 с их официального сайта, используя следующую команду:

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

Затем распакуйте загруженный файл в каталог /opt/tomcat:

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

Затем установите правильное разрешение и право собственности на каталог Tomcat:

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

Создайте служебный файл Systemd для Tomcat

Далее вам нужно будет создать файл службы systemd для управления службой Tomcat. Вы можете создать его с помощью следующей команды:

nano /etc/systemd/system/tomcat.service

Добавьте следующие строки:

[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

Сохраните и закройте файл, затем перезагрузите демон systemd, чтобы применить изменения:

systemctl daemon-reload

Затем запустите службу Tomcat с помощью следующей команды:

systemctl start tomcat

Вы также можете проверить состояние службы Tomcat с помощью следующей команды:

systemctl status tomcat

Вы получите следующий вывод:

? 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

Сначала переключите пользователя на Tomcat и загрузите файл JasperReports с помощью следующей команды:

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

После завершения загрузки разархивируйте загруженный файл с помощью следующей команды:

unzip TIB_js-jrs-cp_8.0.0_bin.zip

Затем скопируйте файл свойств MySQL с помощью следующей команды:

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

Затем отредактируйте файл свойств MySQL, используя следующую команду:

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

Определите путь к Tomcat и сведения о конфигурации базы данных, как показано ниже:

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

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

Сохраните и закройте файл, затем установите JasperReports с помощью следующей команды:

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

После завершения установки вы получите следующий вывод:

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

Затем отредактируйте файл конфигурации политики Tomcat:

nano /opt/tomcat/conf/catalina.policy

Добавьте следующие строки:

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

Сохраните и закройте файл, затем отредактируйте файл конфигурации приложения:

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

Добавьте следующие строки:

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

Сохраните и закройте файл, затем выйдите из пользователя Tomcat:

exit

Затем перезапустите службу Tomcat, чтобы применить изменения.

systemctl restart tomcat

Доступ к веб-интерфейсу JasperReports

На этом этапе JasperReports установлен и настроен. Теперь вы можете получить к нему доступ, используя URL-адрес http://ВАШ_СЕРВЕР_IP_АДРЕС:8080/jasperserver/. Вы должны увидеть страницу входа в JasperReports:

Укажите имя пользователя: jasperadmin и пароль: jasperadmin, затем нажмите кнопку «Войти». Вы должны увидеть панель инструментов JasperReports на следующей странице:

Настройте Nginx в качестве обратного прокси для JasperReports

Сначала установите пакет веб-сервера Nginx с помощью следующей команды:

apt install nginx

Затем создайте файл конфигурации виртуального хоста Nginx с помощью следующей команды:

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

Добавьте следующие конфигурации:

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

Сохраните и закройте файл, затем проверьте конфигурацию Nginx:

nginx -t

Вы получите следующий вывод:

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

Затем перезагрузите службу Nginx, чтобы применить изменения конфигурации:

systemctl restart nginx

Вы можете проверить статус Nginx с помощью следующей команды:

systemctl status nginx

Вы должны увидеть следующий вывод:

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

Теперь вы можете получить доступ к своим JasperReports, используя URL-адрес http://jasper.example.com.

Заключение

В этом посте вы узнали, как установить JasperReports на Ubuntu 22.04. Вы также узнали, как настроить Nginx в качестве обратного прокси-сервера для JasperReports. Теперь вы можете использовать этот инструмент для создания и встраивания отчетов в приложения Java или другие приложения.