Как установить JasperReports с прокси-сервером Nginx в Ubuntu 22.04
На этой странице
- Предпосылки
- Установите Java JDK
- Установка и настройка базы данных MariaDB
- Установить сервер Tomcat
- Создание служебного файла Systemd для Tomcat
- Установка и настройка JasperReports
- Доступ к веб-интерфейсу JasperReports
- Настройка Nginx в качестве обратного прокси-сервера для JasperReports
- Заключение
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 или другие приложения.