如何在 Ubuntu 22.04 上使用 Nginx 代理安装 JasperReports
在此页
- 先决条件
- 安装Java JDK
- 安装和配置 MariaDB 数据库
- 安装 Tomcat 服务器
- 为 Tomcat 创建一个 Systemd 服务文件
- 安装和配置 JasperReports
- 访问 JasperReports 网络用户界面
- 将 Nginx 配置为 JasperReports 的反向代理
- 结论
JasperReports 是一个免费的开源 Java 报告引擎和类库,可帮助开发人员将报告功能添加到他们的应用程序中。它是一个独立且可嵌入的报告服务器,提供报告和分析功能。使用 JasperReports,您可以生成专业的报告,包括图像、图表和图形。此工具还可以帮助您将丰富的内容写入屏幕、打印机和多种文件格式。包括 HTML、PDF、XLS、RTF、CSV、XML、ODT 和 TXT。
在这篇文章中,我们将向您展示如何在 Ubuntu 22.04 上安装 JasperReports Server。
先决条件
- 一台运行 Ubuntu 22.04 的服务器。
- 使用您的服务器 IP 指向一个有效的域名。
- 在服务器上配置了根密码。
安装 Java JDK
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 shell:
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'
为 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 Web 用户界面
至此,JasperReports 已安装并配置完毕。您现在可以使用 URL http://YOUR_SERVER_IP_ADDRESS:8080/jasperserver/ 访问它。您应该会看到 JasperReports 登录页面:

提供用户名:jasperadmin 和密码:jasperadmin 然后单击登录按钮。您应该在以下页面上看到 JasperReports 仪表板:

配置 Nginx 作为 JasperReports 的反向代理
首先,使用以下命令安装 Nginx Web 服务器包:
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.
您现在可以使用 URL http://jasper.example.com 访问您的 JasperReports。
结论
在本文中,您学习了如何在 Ubuntu 22.04 上安装 JasperReports。您还学习了如何将 Nginx 配置为 JasperReports 的反向代理。您现在可以使用此工具生成报告并将其嵌入到 Java 或非 Java 应用程序中。