웹사이트 검색

Debian 10에서 Nginx와 함께 GlassFish를 리버스 프록시로 설치하는 방법


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

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

이 페이지에서

  1. 요구 사항\n
  2. 시작하기\n
  3. 자바 설치
  4. GlassFish 설치
  5. GlassFish 서비스 만들기
  6. GlassFish 관리 콘솔 활성화\n
  7. GlassFish 액세스
  8. GlassFish에 애플리케이션 배포\n
  9. Nginx를 역방향 프록시로 구성\n

GlassFish는 오픈 소스이며 Eclipse Foundation에서 개발한 Java 플랫폼의 세계 최초 구현입니다. 경량 애플리케이션 서버이며 Enterprise JavaBeans, JPA, JavaServer Faces, JMS 등과 같은 다양한 Java 기반 기술을 지원합니다. GlassFish는 업데이트 및 애드온 구성 요소를 위한 업데이트 도구와 함께 간단하고 사용하기 쉬운 관리 콘솔과 함께 제공됩니다.

이 튜토리얼에서는 Nginx를 리버스 프록시로 사용하여 Debian 10에 GlassFish를 설치하는 방법을 설명합니다.

요구 사항

  • Debian 10을 실행하는 서버.\n
  • 루트 비밀번호가 서버에 설정됩니다.\n

시작하기

시작하기 전에 시스템을 최신 버전으로 업데이트해야 합니다. 다음 명령을 실행하여 이를 수행할 수 있습니다.

apt-get update -y
apt-get upgrade -y

서버가 업데이트되면 서버를 다시 시작하여 변경 사항을 적용하십시오.

자바 설치

GlassFish를 사용하려면 서버에 Java 버전 8을 설치해야 합니다. 따라서 시스템에 다른 Java 버전이 설치되어 있는 경우 Java를 제거해야 합니다.

다음 명령을 사용하여 Java 버전 11을 제거할 수 있습니다.

apt-get remove openjdk-11-jre-headless

다음으로 공식 웹사이트에서 자바 버전 8을 다운로드해야 합니다. 다운로드가 완료되면 다음 명령을 사용하여 다운로드한 파일을 /usr/lib/jvm 디렉터리에 추출합니다.

mkdir /usr/lib/jvm/
tar -zxvf jdk-8u221-linux-x64.tar.gz -C /usr/lib/jvm/

다음으로 다음 명령을 사용하여 기본 Java 버전을 설정합니다.

update-alternatives --install /usr/bin/java java /usr/lib/jvm/jdk1.8.0_221/bin/java 1

다음 출력이 표시되어야 합니다.

update-alternatives: using /usr/lib/jvm/jdk1.8.0_221/bin/java to provide /usr/bin/java (java) in auto mode

이제 다음 명령을 사용하여 Java 버전을 확인할 수 있습니다.

java -version

다음 출력이 표시되어야 합니다.

java version "1.8.0_221"
Java(TM) SE Runtime Environment (build 1.8.0_221-b11)
Java HotSpot(TM) 64-Bit Server VM (build 25.221-b11, mixed mode)

글래스피쉬 설치

먼저 다음 명령을 사용하여 필요한 패키지를 설치합니다.

apt-get install wget unzip -y

다음으로 다음 명령을 사용하여 최신 버전의 GlassFish를 다운로드합니다.

wget http://download.oracle.com/glassfish/5.0.1/nightly/latest-glassfish.zip

다운로드가 완료되면 다음 명령을 사용하여 다운로드한 파일을 /opt 디렉터리에 추출합니다.

unzip latest-glassfish.zip -d /opt/

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

GlassFish 서비스 생성

다음으로 GlassFish 서비스를 관리하기 위한 systemd 서비스 파일을 생성할 수 있습니다. 다음 명령으로 만들 수 있습니다.

nano /etc/systemd/system/glassfish.service

다음 콘텐츠를 추가합니다.

[Unit]
Description = GlassFish Server v5.0
After = syslog.target network.target

[Service]
ExecStart=/opt/glassfish5/bin/asadmin start-domain
ExecReload=/opt/glassfish5/bin/asadmin restart-domain
ExecStop=/opt/glassfish5/bin/asadmin stop-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 v5.0
   Loaded: loaded (/etc/systemd/system/glassfish.service; disabled; vendor preset: enabled)
   Active: active (running) since Thu 2019-09-19 04:54:25 EDT; 42s ago
  Process: 15205 ExecStart=/opt/glassfish5/bin/asadmin start-domain (code=exited, status=0/SUCCESS)
 Main PID: 15217 (java)
    Tasks: 90 (limit: 1138)
   Memory: 271.7M
   CGroup: /system.slice/glassfish.service
           ??15217 /usr/lib/jvm/jdk1.8.0_221/bin/java -cp /opt/glassfish5/glassfish/modules/glassfish.jar -XX:+UnlockDiagnosticVMOptions -XX:Ne

Sep 19 04:53:42 debian systemd[1]: Starting GlassFish Server v5.0...
Sep 19 04:54:24 debian asadmin[15205]: Waiting for domain1 to start .................................
Sep 19 04:54:24 debian asadmin[15205]: Successfully started the domain : domain1
Sep 19 04:54:24 debian asadmin[15205]: domain  Location: /opt/glassfish5/glassfish/domains/domain1
Sep 19 04:54:24 debian asadmin[15205]: Log File: /opt/glassfish5/glassfish/domains/domain1/logs/server.log
Sep 19 04:54:24 debian asadmin[15205]: Admin Port: 4848
Sep 19 04:54:24 debian asadmin[15205]: Command start-domain executed successfully.
Sep 19 04:54:25 debian systemd[1]: Started GlassFish Server v5.0.
lines 1-18/18 (END)

GlassFish 관리 콘솔 활성화

기본적으로 GlassFish 관리 콘솔 암호는 설정되어 있지 않습니다. 따라서 관리자 비밀번호를 업데이트해야 합니다.

다음 명령을 실행하여 관리자 암호를 설정합니다.

/opt/glassfish5/bin/asadmin change-admin-password

원하는 암호를 입력하고 Enter 키를 누릅니다. 암호가 설정되면 다음 출력이 표시됩니다.

Enter admin user name [default: admin]>admin
Enter the admin password> 
Enter the new admin password> 
Enter the new admin password again> 
Command change-admin-password executed successfully.

다음으로 보안 관리 기능을 활성화해야 합니다. 다음 명령으로 수행할 수 있습니다.

/opt/glassfish5/bin/asadmin enable-secure-admin

관리자 사용자 이름과 암호를 제공하고 Enter 키를 눌러 아래와 같이 보안 관리자를 활성화합니다.

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 응용 프로그램은 포트 8080에서 실행됩니다. http://your-server-ip:8080 URL을 방문하여 액세스할 수 있습니다. 다음 페이지가 표시됩니다.

GlassFish 관리 콘솔은 포트 4848에서 실행됩니다. http://your-server-ip:4848 URL을 방문하여 액세스할 수 있습니다. GlassFish 로그인 페이지가 표시되어야 합니다.

관리자 사용자 이름과 암호를 제공하고 로그인 버튼을 클릭합니다. 다음 화면에 GlassFish 관리 콘솔이 표시되어야 합니다.

GlassFish에 애플리케이션 배포

이제 GlassFish가 설치 및 구성되었으므로 GlassFish에 샘플 응용 프로그램을 배포할 시간입니다.

먼저 다음 명령을 사용하여 hello.war 애플리케이션을 다운로드합니다.

wget https://github.com/dmatej/Glassfish/raw/master/v2/www/downloads/quickstart/hello.war

다음으로 다음 명령을 사용하여 hello.war 애플리케이션을 배포합니다.

/opt/glassfish5/bin/asadmin deploy hello.war

다음 출력이 표시되어야 합니다.

  Version: V3
  Subject: CN=localhost, OU=GlassFish, O=Oracle Corporation, L=Santa Clara, ST=California, C=US
  Signature Algorithm: SHA256withRSA, OID = 1.2.840.113549.1.1.11

  Key:  Sun RSA public key, 2048 bits
  modulus: 26796330640308027923768800042502020134808966576745098232029910481655545436468207928921434907495986430069072245547607053010428717755932187048623252153613041636091429700133899537566912806297788375081359516836091002133743138757261794690981737280330851500902934286405305506594303276580413684625941149729611614458782091187522283499926880436357851913036137048969953439207474630152049712806975982901461106170366207997764866053158318707816771263261147284707875045634066423002500565550480728681743613266266732299458152358213914375115269066441015633123820868476095174900081535873996509058837674720310526766610294764426209317187
  public exponent: 65537
  Validity: [From: Tue Jan 15 21:17:50 EST 2019,
               To: Fri Jan 12 21:17:50 EST 2029]
  Issuer: CN=localhost, OU=GlassFish, O=Oracle Corporation, L=Santa Clara, ST=California, C=US
  SerialNumber: [    3347569f]

Certificate Extensions: 1
[1]: ObjectId: 2.5.29.14 Criticality=false
SubjectKeyIdentifier [
KeyIdentifier [
0000: F2 F1 22 14 40 CA 9E 1D   92 3B B6 B9 09 D1 27 E7  ..";....'.
0010: 50 1A 37 4D                                        P.7M
]
]

]
  Algorithm: [SHA256withRSA]
  Signature:
0000: C7 CB 91 D4 9B 39 21 13   B3 48 87 09 85 2E DF B7  .....9!..H......
0010: F9 E7 52 1B 39 D0 12 55   97 A8 02 8D B9 EC 26 F0  ..R.9..U......&.
0020: A6 8F 29 5B 96 80 71 AA   CB C8 EA 83 4F 18 E7 19  ..)[..q.....O...
0030: 26 CF BF 72 B1 E6 23 53   F2 14 CD BA 68 FE 4B 4C  &..r..#S....h.KL
0040: BB B1 3E DE D9 EB 6D 96   8C 8F 0D 33 B6 E7 28 F1  ..>...m....3..(.
0050: D5 40 6B BC 01 FF F9 5A   79 9A 96 DA D9 2A 84 99  *..
0060: FA 3A 7A 9D 52 6C C2 D5   E9 DC 98 8B 20 EF 69 99  .:z.Rl...... .i.
0070: E6 FC 1B 0F CA B2 0C 66   BE BB A7 EA 3D DB BB F5  .......f....=...
0080: 88 F1 B4 B1 15 74 FA 9F   E0 9A 98 C5 12 A0 60 B4  .....t........`.
0090: 9B 92 19 FD BA 81 20 7F   51 83 E9 22 56 96 9A 40  ...... .Q.."
00A0: 2C 27 BB 86 57 7D 2E E9   C5 98 1A 04 A2 C5 FC 17  ,'..W...........
00B0: 6E 8B 31 79 29 A0 A1 22   1A 31 C0 A6 96 7A D4 80  n.1y)..".1...z..
00C0: 3F 05 26 BB DE D1 2D 74   01 1F 24 EC CE 3B 97 42  ?.&...-t..$..;.B
00D0: 16 E8 16 F1 A4 10 92 0B   8E A5 18 59 BF AA 69 B0  ...........Y..i.
00E0: DB C8 C2 66 5F 5D 2F 3D   4B C7 90 1D C2 24 B1 57  ...f_]/=K....$.W
00F0: 22 02 DA 76 FF 2E B7 C5   E4 E6 50 BD 73 36 AA 8A  "..v......P.s6..

]
Do you trust the above certificate [y|N] -->y
Enter admin user name>  admin
Enter admin password for user "admin"> 
Application deployed with name hello.
Command deploy executed successfully.

애플리케이션에 액세스하려면 웹 브라우저를 열고 URL http://your-server-ip:8080/hello를 입력하십시오. 다음 페이지로 리디렉션됩니다.

Nginx를 역방향 프록시로 구성

이제 Nginx를 포트 80에서 8080으로 들어오는 프록시 요청에 대한 역방향 프록시로 구성해야 합니다.

먼저 다음 명령으로 Nginx를 설치합니다.

apt-get install nginx -y

nginx가 설치되면 다음 명령을 사용하여 GlassFish용 Nginx 가상 호스트 파일을 만듭니다.

nano /etc/nginx/sites-available/glassfish.conf

다음 줄을 추가합니다.

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

server {
  listen          80;
  server_name     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 가상 호스트를 활성화하고 다음 명령을 사용하여 Nginx 서비스를 다시 시작합니다.

ln -s /etc/nginx/sites-available/glassfish.conf /etc/nginx/sites-enabled/
systemctl restart nginx

이제 URL http://example.com을 방문하여 애플리케이션에 액세스할 수 있습니다.

축하합니다! Nginx와 함께 GlassFish를 Debian 10에 리버스 프록시로 성공적으로 설치했습니다. 이제 서버에 모든 Java 기반 애플리케이션을 쉽게 배포할 수 있습니다.