웹사이트 검색

Ubuntu 22.04에서 Nginx 프록시로 JasperReports를 설치하는 방법


이 페이지에서

  1. 전제 조건
  2. 자바 JDK 설치
  3. MariaDB 데이터베이스 설치 및 구성
  4. Tomcat 서버 설치
  5. Tomcat용 Systemd 서비스 파일 만들기
  6. JasperReports 설치 및 구성
  7. JasperReports 웹 UI 액세스
  8. Nginx를 JasperReports의 역방향 프록시로 구성\n
  9. 결론

JasperReports는 개발자가 애플리케이션에 보고 기능을 추가하는 데 도움이 되는 무료 오픈 소스 Java 보고 엔진 및 클래스 라이브러리입니다. 보고 및 분석 기능을 제공하는 내장형 독립 실행형 보고 서버입니다. JasperReports를 사용하면 이미지, 차트 및 그래프를 포함한 전문적인 보고서를 생성할 수 있습니다. 이 도구는 화면, 프린터 및 여러 파일 형식에 풍부한 콘텐츠를 기록하는 데도 도움이 됩니다. HTML, PDF, XLS, RTF, CSV, XML, ODT 및 TXT를 포함합니다.

이 게시물에서는 Ubuntu 22.04에 JasperReports Server를 설치하는 방법을 보여줍니다.

전제 조건

  • Ubuntu 22.04를 실행하는 서버.\n
  • 유효한 도메인 이름은 서버 IP로 지정됩니다.\n
  • 루트 암호는 서버에서 구성됩니다.\n

자바 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 셸을 종료합니다.

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

톰캣 서버 설치

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 서비스를 관리하기 위해 systemd 서비스 파일을 생성해야 합니다. 다음 명령으로 만들 수 있습니다.

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 웹 UI에 액세스

이 시점에서 JasperReports가 설치되고 구성됩니다. 이제 URL http://YOUR_SERVER_IP_ADDRESS:8080/jasperserver/를 사용하여 액세스할 수 있습니다. JasperReports 로그인 페이지가 표시되어야 합니다.

사용자 이름: jasperadmin 및 암호: jasperadmin을 입력한 다음 로그인 버튼을 클릭합니다. 다음 페이지에 JasperReports 대시보드가 표시되어야 합니다.

JasperReports에 대한 역방향 프록시로 Nginx 구성

먼저 다음 명령을 사용하여 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.

이제 URL http://jasper.example.com을 사용하여 JasperReports에 액세스할 수 있습니다.

결론

이 게시물에서는 Ubuntu 22.04에 JasperReports를 설치하는 방법을 배웠습니다. 또한 Nginx를 JasperReports의 리버스 프록시로 구성하는 방법도 배웠습니다. 이제 이 도구를 사용하여 보고서를 생성하고 Java 또는 비Java 응용 프로그램에 포함할 수 있습니다.