웹사이트 검색

Debian 11에서 Nginx를 역방향 프록시로 사용하여 GlassFish Java 서버를 설치하는 방법


이 튜토리얼은 다음 OS 버전에 대해 존재합니다.

  • 데비안 11(불스아이)
  • 데비안 10(버스터)

이 페이지에서

  1. 전제 조건
  2. 자바 설치
  3. Glassfish 다운로드
  4. Glassfish용 시스템 서비스 파일 만들기
  5. Glassfish 관리자 암호 설정\n
  6. GlassFish 웹 인터페이스 액세스
  7. Glassfish용 리버스 프록시로 Nginx 구성\n
  8. 결론

GlassFish는 Java 애플리케이션 배포에 사용되는 오픈 소스 애플리케이션 서버입니다. JPA, JavaServer Faces, JMS, RMI 및 기타 많은 Java 기반 기술을 포함한 다양한 Java 기반 기술을 지원합니다. Java 응용 프로그램 및 해당 구성 요소를 관리하기 위한 웹 기반 및 명령줄 인터페이스를 제공합니다. GlassFish를 사용하면 레거시 기술과 쉽게 통합할 수 있는 이식 가능하고 확장 가능한 응용 프로그램을 만들 수 있습니다.

이 튜토리얼에서는 데비안 11에서 Nginx를 리버스 프록시로 사용하여 Glassfish 서버를 설치하는 방법을 보여줍니다.

전제 조건

  • Debian 11을 실행하는 서버.\n
  • 서버 IP를 가리키는 유효한 도메인 이름입니다.\n
  • 루트 암호는 서버에서 구성됩니다.\n

자바 설치

Glassfish는 Java 기반 응용 소프트웨어이므로 서버에 Java가 설치되어 있어야 합니다. 설치되어 있지 않은 경우 다음 명령을 실행하여 설치할 수 있습니다.

apt-get install default-jdk unzip -y

Java가 설치되면 다음 명령을 사용하여 Java 설치를 확인할 수 있습니다.

java --version

다음과 같은 결과가 표시됩니다.

openjdk 11.0.13 2021-10-19
OpenJDK Runtime Environment (build 11.0.13+8-post-Debian-1deb11u1)
OpenJDK 64-Bit Server VM (build 11.0.13+8-post-Debian-1deb11u1, mixed mode, sharing)

완료되면 다음 단계로 진행할 수 있습니다.

글래스피쉬 다운로드

먼저 Eclipse 웹사이트에서 최신 버전의 Glassfish를 다운로드해야 합니다. 아래와 같이 wget 명령을 사용하여 다운로드할 수 있습니다.

wget https://download.eclipse.org/ee4j/glassfish/glassfish-6.1.0.zip

다운로드가 완료되면 다운로드한 파일을 /opt 디렉터리에 추출합니다.

unzip glassfish-6.1.0.zip -d /opt/

완료되면 다음 단계로 진행할 수 있습니다.

Glassfish용 Systemd 서비스 파일 생성

다음으로 Glassfish 서비스를 관리하기 위한 systemd 서비스 파일을 생성해야 합니다. 다음 명령을 사용하여 만들 수 있습니다.

nano /usr/lib/systemd/system/glassfish.service

다음 줄을 추가합니다.

[Unit]
Description = GlassFish Server v6.1.0
After = syslog.target network.target

[Service]
User = root
ExecStart = /usr/bin/java -jar /opt/glassfish6/glassfish/lib/client/appserver-cli.jar start-domain
ExecStop = /usr/bin/java -jar /opt/glassfish6/glassfish/lib/client/appserver-cli.jar stop-domain
ExecReload = /usr/bin/java -jar /opt/glassfish6/glassfish/lib/client/appserver-cli.jar restart-domain
Type = forking

[Install]
WantedBy = multi-user.target

완료되면 파일을 저장하고 닫습니다. 그런 다음 systemd 데몬을 다시 로드하여 변경 사항을 적용합니다.

systemctl daemon-reload

다음으로 Glassfish 서비스를 시작하고 시스템 재부팅 시 시작되도록 활성화합니다.

systemctl start glassfish
systemctl enable glassfish

다음 명령을 사용하여 Glassfish 서비스를 확인할 수도 있습니다.

systemctl status glassfish

다음과 같은 결과가 표시됩니다.

? glassfish.service - GlassFish Server v6.1.0
     Loaded: loaded (/lib/systemd/system/glassfish.service; disabled; vendor preset: enabled)
     Active: active (running) since Sun 2021-11-07 04:56:16 UTC; 8s ago
    Process: 6018 ExecStart=/usr/bin/java -jar /opt/glassfish6/glassfish/lib/client/appserver-cli.jar start-domain (code=exited, status=0/SUC>
   Main PID: 6037 (java)
      Tasks: 91 (limit: 4679)
     Memory: 343.0M
        CPU: 13.299s
     CGroup: /system.slice/glassfish.service
             ??6037 /usr/lib/jvm/java-11-openjdk-amd64/bin/java -cp /opt/glassfish6/glassfish/modules/glassfish.jar -XX:+UnlockDiagnosticVMOp>

Nov 07 04:56:10 debian11 systemd[1]: Starting GlassFish Server v6.1.0...
Nov 07 04:56:16 debian11 java[6018]: Waiting for domain1 to start .....
Nov 07 04:56:16 debian11 java[6018]: Successfully started the domain : domain1
Nov 07 04:56:16 debian11 java[6018]: domain  Location: /opt/glassfish6/glassfish/domains/domain1
Nov 07 04:56:16 debian11 java[6018]: Log File: /opt/glassfish6/glassfish/domains/domain1/logs/server.log
Nov 07 04:56:16 debian11 java[6018]: Admin Port: 4848
Nov 07 04:56:16 debian11 java[6018]: Command start-domain executed successfully.
Nov 07 04:56:16 debian11 systemd[1]: Started GlassFish Server v6.1.0.

완료되면 다음 단계로 진행할 수 있습니다.

Glassfish 관리자 암호 설정

기본적으로 Glassfish는 암호 없이 액세스할 수 있습니다. 따라서 관리자 암호를 설정하여 보안을 유지하는 것이 좋습니다. 다음 명령을 실행하여 수행할 수 있습니다.

/opt/glassfish6/bin/asadmin --port 4848 change-admin-password

아래와 같이 관리자 사용자 이름을 제공하라는 메시지가 표시됩니다.

Enter admin user name [default: admin]>admin

기본 관리자 사용자 이름을 제공하고 Enter 키를 누릅니다. 기존 관리자 비밀번호를 제공하라는 메시지가 표시됩니다.

Enter the admin password> 

Enter 키를 누르십시오. 아래와 같이 새 관리자 비밀번호를 설정하라는 메시지가 표시됩니다.

새 관리자 암호 입력> 새 관리자 암호 다시 입력>

보안 암호를 설정하고 Enter를 누르십시오. 다음과 같은 결과가 표시됩니다.

Command change-admin-password executed successfully.

다음으로 Glassfish에서 HTTPS를 활성화하는 것도 권장됩니다. 다음 명령을 실행하여 수행할 수 있습니다.

/opt/glassfish6/bin/asadmin --port 4848 enable-secure-admin

HTTPS를 활성화하려면 관리자 사용자 이름과 비밀번호를 입력하라는 메시지가 표시됩니다.

Enter admin user name>  admin
Enter admin password for user "admin"> 
You must restart all running servers for the change in secure admin to take effect.
Command enable-secure-admin executed successfully.

마지막으로 Glassfish 서비스를 다시 시작하여 변경 사항을 적용합니다.

systemctl restart glassfish

완료되면 다음 단계로 진행할 수 있습니다.

GlassFish 웹 인터페이스에 액세스

이 시점에서 Glassfish가 설치되어 실행 중입니다. 기본적으로 Glassfish 웹 인터페이스는 포트 8080에서 수신 대기하고 관리 인터페이스는 포트 4848에서 수신 대기합니다. 먼저 URL http://your-server-ip:8080을 사용하여 Glassfish 웹 인터페이스에 액세스합니다. 다음 페이지가 표시됩니다.

다음으로 URL https://your-server-ip:4848을 사용하여 Glassfish 관리 인터페이스에 액세스합니다. Glassfish 로그인 페이지로 리디렉션됩니다.

관리자 사용자 이름, 암호를 제공하고 로그인 버튼을 클릭합니다. 다음 페이지에 Glassfish 관리 인터페이스가 표시되어야 합니다.

왼쪽 창에서 서버를 클릭하면 다음 화면이 표시됩니다.

여기에서 Glassfish 로그를 다시 시작, 중지 및 볼 수 있습니다.

왼쪽 창에서 노드를 클릭하면 다음 화면에 Glassfish 노드 정보가 표시됩니다.

Glassfish용 역방향 프록시로 Nginx 구성

Glassfish 웹 인터페이스에 액세스하려면 Nginx를 리버스 프록시로 구성하는 것이 좋습니다. 따라서 포트 8080을 사용하지 않고 애플리케이션에 액세스할 수 있습니다.

이렇게 하려면 먼저 다음 명령을 사용하여 Nginx 패키지를 설치합니다.

apt-get install nginx -y

설치가 완료되면 아래 명령을 사용하여 Nginx 가상 호스트 구성 파일을 생성합니다.

nano /etc/nginx/conf.d/glassfish.conf

다음 줄을 추가합니다.

upstream glassfish {
  server 127.0.0.1:8080 weight=100 max_fails=5 fail_timeout=5;
}

server {
  listen          80;
  server_name     glassfish.example.com;

  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://glassfish/hello/;
  }
}

파일을 저장하고 닫은 후 다음 명령을 사용하여 구문 오류가 있는지 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 2021-11-07 05:02:58 UTC; 22s ago
       Docs: man:nginx(8)
    Process: 6790 ExecStartPre=/usr/sbin/nginx -t -q -g daemon on; master_process on; (code=exited, status=0/SUCCESS)
    Process: 6791 ExecStart=/usr/sbin/nginx -g daemon on; master_process on; (code=exited, status=0/SUCCESS)
   Main PID: 6873 (nginx)
      Tasks: 3 (limit: 4679)
     Memory: 5.1M
        CPU: 53ms
     CGroup: /system.slice/nginx.service
             ??6873 nginx: master process /usr/sbin/nginx -g daemon on; master_process on;
             ??6875 nginx: worker process
             ??6876 nginx: worker process

Nov 07 05:02:58 debian11 systemd[1]: Starting A high performance web server and a reverse proxy server...
Nov 07 05:02:58 debian11 systemd[1]: Started A high performance web server and a reverse proxy server.

이 시점에서 Glassfish 웹 인터페이스를 제공하도록 Nginx가 설치되고 구성됩니다. 이제 URL http://glassfish.example.com을 사용하여 Glassfish 웹 인터페이스에 액세스할 수 있습니다.

결론

축하합니다! Debian 11에서 역방향 프록시로 Nginx와 함께 Glassfish 서버를 성공적으로 설치했습니다. 이제 Glassfish 서버에서 Java 기반 애플리케이션 배포를 시작할 수 있습니다. 궁금한 점이 있으면 언제든지 문의해 주세요.