Red Hat Training

A Red Hat training course is available for Red Hat JBoss Web Server

Red Hat JBoss Web Server for OpenShift

Red Hat JBoss Web Server 5.0

OpenShift용 Red Hat JBoss Web Server 설치 및 사용

Red Hat Customer Content Services

초록

OpenShift용 Red Hat JBoss Web Server 사용 가이드

1장. 소개

1.1. OpenShift용 Red Hat JBoss Web Server는 무엇입니까?

Red Hat JBoss Web Server (JWS) 5.0의 Apache Tomcat 7 및 Apache Tomcat 8 구성 요소는 OpenShift용으로 설계된 컨테이너화된 이미지로 사용할 수 있습니다. 개발자는 이러한 이미지를 사용하여 하이브리드 클라우드 환경에 배포할 Java 웹 애플리케이션을 빌드, 확장 및 테스트할 수 있습니다.

2장. 시작하기 전

2.1. OpenShift용 Red Hat JBoss Web Server와 JWS의 차이점

OpenShift 이미지용 JWS와 JWS의 일반 릴리스의 차이점은 다음과 같습니다.

  • OpenShift용 JWS 이미지 내부JWS_HOME/tomcat <version >/의 위치는 /opt/webserver/ 입니다.
  • OpenShift 이미지용 JWS에는 Apache HTTP Server가 포함되어 있지 않습니다. 모든 로드 밸런싱은 Apache HTTP Server mod_cluster 또는 mod_jk 커넥터가 아닌 OpenShift 라우터에서 처리합니다.

OpenShift 이미지 관련 JWS 기능에 대한 문서는 Red Hat JBoss Web Server 설명서에서 참조하십시오.

2.2. 버전 호환성 및 지원

OpenShift 이미지 버전 호환성에 대한 자세한 내용은 OpenShift Container Platform 테스트 통합 페이지의 xPaaS 표를 참조하십시오.

중요

OpenShift 이미지 및 애플리케이션 템플릿용 JWS 5.0 버전을 사용하여 새 애플리케이션을 배포해야 합니다.

OpenShift 이미지 및 애플리케이션 템플릿용 JWS 3.1 버전은 더 이상 사용되지 않으며 더 이상 업데이트가 수신되지 않습니다.

3장. 시작하기

3.1. 초기 설정

이 가이드의 지침은 지원되는 OpenShift 구성 또는 OpenShift type에 설명된 것과 같이 비프로덕션 OpenShift 인스턴스를 가정하는 OpenShift typer의 지침을 따릅니다.

OpenShift 이미지의 JWS는 다른 기본 이미지 스트림 및 템플릿과 함께 OpenShift 설치 중에 자동으로 생성됩니다.

참고

OpenShift 애플리케이션 템플릿용 JWS는 Tomcat 7 및 Tomcat 8용으로 배포됩니다.

3.2. OpenShift S2I(Source-to-Image) 프로세스 사용

OpenShift 이미지에 대한 JWS를 실행하고 구성하려면 애플리케이션 템플릿 매개 변수 및 환경 변수와 함께 OpenShift S2I 프로세스를 사용합니다.

OpenShift 이미지의 JWS 프로세스는 다음과 같이 작동합니다.

  • configuration/ source 디렉터리에 Maven settings.xml 파일이 있으면 새 이미지의 $HOME/.m2/ 로 이동합니다.

    Maven 및 Maven settings.xml 파일에 대한 자세한 내용은 Apache Maven Project 웹 사이트를 참조하십시오.

  • 소스 리포지토리에 pom.xml 파일이 있는 경우 $MAVEN_ARGS 환경 변수의 콘텐츠를 사용하여 Maven 빌드가 트리거됩니다.

    기본적으로 패키지 목표는 건너뛰기 테스트(-DskipTests)와 Red Hat GA 리포지토리(-Dcom.redhat.xpaas.repo.redhatga) 활성화를 포함하여 openshift 프로필과 함께 사용됩니다.

  • Maven 빌드에 성공한 결과는 /opt/webserver/webapps/ 로 복사됩니다. 여기에는 $ARTIFACT_DIR 환경 변수로 지정된 소스 디렉토리의 모든 WAR 파일이 포함됩니다. $ARTIFACT_DIR 의 기본값은 target/ 디렉토리입니다.

    MAVEN_ARGS_APPEND 환경 변수를 사용하여 Maven 인수를 수정합니다.

  • deployments/ 소스 디렉터리의 모든 WAR 파일이 /opt/webserver/webapps/ 로 복사됩니다.
  • configuration/ source 디렉터리의 모든 파일이 /opt/webserver/conf/ 로 복사됩니다( Maven settings.xml 파일 제외).
  • lib/ 소스 디렉토리의 모든 파일이 /opt/webserver/lib/ 로 복사됩니다.

    참고

    사용자 지정 Tomcat 구성 파일을 사용하려면 파일 이름이 일반 Tomcat 설치와 동일해야 합니다. 예: context.xmlserver.xml.

사용자 지정 Maven 아티팩트 저장소 미러를 사용하도록 S2I 프로세스를 구성하는 방법은 Artifact Repository Mirrors 섹션을 참조하십시오.

3.2.1. 기존 maven 바이너리를 사용하여 OpenShift 애플리케이션용 JWS 생성

기존 애플리케이션은 oc start-build 명령을 사용하여 OpenShift에 배포됩니다.

사전 요구 사항: OpenShift용 JWS에 배포할 애플리케이션의 기존 .war,.ear 또는 .jar 입니다.

  1. 로컬 파일 시스템의 디렉터리 구조를 준비합니다.

    애플리케이션에 필요한 콘텐츠가 바이너리에 포함되어 있지 않은 소스 디렉터리를 생성합니다(필요한 경우 OpenShift S2I(Source-to-Image) 프로세스 사용을참조), 하위 디렉터리 배포/:

    $ mkdir -p <build_dir>/deployments
  2. 바이너리(.war,.ear,.jar)를 deployments/ 에 복사합니다.

    $ cp /path/to/binary/<filenames_with_extensions> <build_dir>/deployments/
    참고

    소스 디렉터리의 deployments/ 하위 디렉터리에 있는 애플리케이션 아카이브는 OpenShift에 빌드되는 이미지의 $JWS_HOME/webapps/ 디렉터리에 복사됩니다. 애플리케이션을 배포하려면 웹 애플리케이션 데이터가 포함된 디렉터리 계층을 올바르게 구조화해야 합니다( 3.2절. “OpenShift S2I(Source-to-Image) 프로세스 사용”참조).

  3. OpenShift 인스턴스에 로그인합니다.

    $ oc login <url>
  4. 필요한 경우 새 프로젝트를 생성합니다.

    $ oc new-project <project-name>
  5. oc get를 사용하여 애플리케이션에 사용할 OpenShift 이미지 스트림의 JWS를 확인하는 것은 -n openshift 입니다.

    $ oc get is -n openshift | grep ^jboss-webserver | cut -f1 -d ' '
    
    jboss-webserver30-tomcat7-openshift
    jboss-webserver30-tomcat8-openshift
    jboss-webserver31-tomcat7-openshift
    jboss-webserver31-tomcat8-openshift
    참고

    -n openshift 는 사용할 프로젝트를 지정합니다. ocget는 openshift 프로젝트에서 이미지 스트림 리소스(임시)를 검색(가져오기)하는 -n openshift 입니다.

  6. 이미지 스트림 및 애플리케이션 이름을 지정하여 새 빌드 구성을 생성합니다.

    $ oc new-build --binary=true \
     --image-stream=jboss-webserver31-tomcat8-openshift \
     --name=<my-jws-on-openshift-app>
  7. OpenShift에서 이전에 생성한 소스 디렉터리를 사용하여 OpenShift 이미지 빌드의 바이너리 입력을 위해 사용하도록 지시합니다.

    $ oc start-build <my-jws-on-openshift-app> --from-dir=./<build_dir> --follow
  8. 이미지를 기반으로 새 OpenShift 애플리케이션을 생성합니다.

    $ oc new-app <my-jws-on-openshift-app>
  9. 사용자가 애플리케이션에 액세스할 수 있도록 서비스를 노출합니다.

    # to check the name of the service to expose
    $ oc get svc -o name
    
    service/<my-jws-on-openshift-app>
    
    # to expose the service
    $ oc expose svc/my-jws-on-openshift-app
    
    route "my-jws-on-openshift-app" exposed
  10. 노출된 경로의 주소를 검색합니다.

    oc get routes --no-headers -o custom-columns='host:spec.host' my-jws-on-openshift-app
  11. 브라우저에서 애플리케이션에 액세스하려면 http:// <address_of_exposed_route > / < my-war-ear-jar-filename- without-extension>

3.2.2. 예: 기존 maven 바이너리를 사용하여 OpenShift 애플리케이션용 JWS 생성

아래 예제에서는 3.2.1절. “기존 maven 바이너리를 사용하여 OpenShift 애플리케이션용 JWS 생성” 의 절차를 사용하여 tomcat-websocket-chat 빠른 시작을 사용합니다.

3.2.2.1. 사전 요구 사항

  1. WAR 애플리케이션 아카이브를 가져오거나 애플리케이션을 로컬로 빌드합니다.

  1. 로컬 파일 시스템의 디렉터리 구조를 준비합니다.

    로컬 파일 시스템 및 deployments/ 하위 디렉터리에서 바이너리 빌드의 소스 디렉터리를 생성합니다. WAR 아카이브를 deployments/ 에 복사합니다.

    [tomcat-websocket-chat]$ ls
    
    pom.xml  README.md  src/  target/
    $ mkdir -p ocp/deployments
    $ cp target/websocket-chat.war ocp/deployments/

3.2.2.2. OpenShift에서 예제 애플리케이션 설정

  1. OpenShift 인스턴스에 로그인합니다.

    $ oc login <url>
  2. 필요한 경우 새 프로젝트를 생성합니다.

    $ oc new-project jws-bin-demo
  3. oc get를 사용하여 애플리케이션에 사용할 OpenShift 이미지 스트림의 JWS를 확인하는 것은 -n openshift 입니다.

    $ oc get is -n openshift | grep ^jboss-webserver | cut -f1 -d ' '
    
    jboss-webserver30-tomcat7-openshift
    jboss-webserver30-tomcat8-openshift
    jboss-webserver31-tomcat7-openshift
    jboss-webserver31-tomcat8-openshift
  4. 이미지 스트림 및 애플리케이션 이름을 지정하여 새 빌드 구성을 생성합니다.

    $ oc new-build --binary=true \
     --image-stream=jboss-webserver31-tomcat8-openshift \
     --name=jws-wsch-app
    
    --> Found image 8c3b85b (4 weeks old) in image stream "openshift/jboss-webserver31-tomcat8-openshift" under tag "latest" for "jboss-webserver31-tomcat8-openshift"
    
        JBoss Web Server 3.1
        --------------------
        Platform for building and running web applications on JBoss Web Server 3.1 - Tomcat v8
    
        Tags: builder, java, tomcat8
    
        * A source build using binary input will be created
          * The resulting image will be pushed to image stream "jws-wsch-app:latest"
          * A binary build was created, use 'start-build --from-dir' to trigger a new build
    
    --> Creating resources with label build=jws-wsch-app ...
        imagestream "jws-wsch-app" created
        buildconfig "jws-wsch-app" created
    --> Success
  5. 바이너리 빌드를 시작합니다. OpenShift에서 OpenShift 이미지 빌드의 바이너리 입력에 소스 디렉터리를 사용하도록 지시합니다.

    $ oc start-build jws-wsch-app --from-dir=./ocp --follow
    
    Uploading directory "ocp" as binary input for the build ...
    build "jws-wsch-app-1" started
    Receiving source from STDIN as archive ...
    
    Copying all deployments war artifacts from /home/jboss/source/deployments directory into /opt/webserver/webapps for later deployment...
    '/home/jboss/source/deployments/websocket-chat.war' -> '/opt/webserver/webapps/websocket-chat.war'
    
    
    Pushing image 172.30.202.111:5000/jws-bin-demo/jws-wsch-app:latest ...
    Pushed 0/7 layers, 7% complete
    Pushed 1/7 layers, 14% complete
    Pushed 2/7 layers, 29% complete
    Pushed 3/7 layers, 49% complete
    Pushed 4/7 layers, 62% complete
    Pushed 5/7 layers, 92% complete
    Pushed 6/7 layers, 100% complete
    Pushed 7/7 layers, 100% complete
    Push successful
  6. 이미지를 기반으로 새 OpenShift 애플리케이션을 생성합니다.

    $ oc new-app jws-wsch-app
    
    --> Found image e5f3a6b (About a minute old) in image stream "jws-bin-demo/jws-wsch-app" under tag "latest" for "jws-wsch-app"
    
        JBoss Web Server 3.1
        --------------------
        Platform for building and running web applications on JBoss Web Server 3.1 - Tomcat v8
    
        Tags: builder, java, tomcat8
    
        * This image will be deployed in deployment config "jws-wsch-app"
        * Ports 8080/tcp, 8443/tcp, 8778/tcp will be load balanced by service "jws-wsch-app"
          * Other containers can access this service through the hostname "jws-wsch-app"
    
    --> Creating resources ...
        deploymentconfig "jws-wsch-app" created
        service "jws-wsch-app" created
    --> Success
        Application is not exposed. You can expose services to the outside world by executing one or more of the commands below:
         'oc expose svc/jws-wsch-app'
        Run 'oc status' to view your app.
  7. 사용자가 애플리케이션에 액세스할 수 있도록 서비스를 노출합니다.

    # to check the name of the service to expose
    $ oc get svc -o name
    
    service/jws-wsch-app
    
    # to expose the service
    $ oc expose svc/jws-wsch-app
    
    route "jws-wsch-app" exposed
  8. 노출된 경로의 주소를 검색합니다.

    oc get routes --no-headers -o custom-columns='host:spec.host' jws-wsch-app
  9. 브라우저에서 애플리케이션에 액세스합니다. http:// <address_of_exposed_route>/websocket-chat

3.2.3. 소스 코드에서 OpenShift 애플리케이션용 JWS 생성

소스 코드에서 새 OpenShift 애플리케이션을 생성하는 방법에 대한 자세한 내용은 OpenShift.com - 소스 코드에서 애플리케이션 생성을 참조하십시오.

참고

진행하기 전에 애플리케이션의 데이터가 올바르게 구성되어 있는지 확인합니다( 3.2절. “OpenShift S2I(Source-to-Image) 프로세스 사용”참조).

  1. OpenShift 인스턴스에 로그인합니다.

    $ oc login <url>
  2. 필요한 경우 새 프로젝트를 생성합니다.

    $ oc new-project <project-name>
  3. oc get를 사용하여 애플리케이션에 사용할 OpenShift 이미지 스트림의 JWS를 확인하는 것은 -n openshift 입니다.

    $ oc get is -n openshift | grep ^jboss-webserver | cut -f1 -d ' '
    
    jboss-webserver30-tomcat7-openshift
    jboss-webserver30-tomcat8-openshift
    jboss-webserver31-tomcat7-openshift
    jboss-webserver31-tomcat8-openshift
  4. Red Hat JBoss Web Server for OpenShift 이미지를 사용하여 소스 코드에서 새 OpenShift 애플리케이션을 생성하고 --image-stream 옵션을 사용합니다.

    $ oc new-app \
     <source_code_location> \
     --image-stream=jboss-webserver31-tomcat8-openshift \
     --name=<openshift_application_name>

    예를 들면 다음과 같습니다.

    $ oc new-app \
     https://github.com/jboss-openshift/openshift-quickstarts.git#master \
     --image-stream=jboss-webserver31-tomcat8-openshift \
     --context-dir='tomcat-websocket-chat' \
     --name=jws-wsch-app

    소스 코드가 이미지에 추가되고 소스 코드가 컴파일됩니다. 빌드 구성 및 서비스도 생성됩니다.

  5. 애플리케이션을 공개하려면 다음을 수행합니다.

    # to check the name of the service to expose
    $ oc get svc -o name
    
    service/<openshift_application_name>
    
    # to expose the service
    $ oc expose svc/<openshift_application_name>
    
    route "<openshift_application_name>" exposed
  6. 노출된 경로의 주소를 검색하려면 다음을 수행합니다.

    oc get routes --no-headers -o custom-columns='host:spec.host' <openshift_application_name>
  7. 브라우저에서 애플리케이션에 액세스하려면 http:// <address_of_exposed_route> / <java_application_name>

4장. reference

4.1. S2I(Source-to-Image)

OpenShift용 Red Hat JBoss Web Server 이미지에는 S2I 스크립트 및 Maven이 포함되어 있습니다.

4.1.1. OpenShift용 JWS와 함께 maven artifact 저장소 사용

Maven 리포지토리에는 프로젝트 ScanSetting, 라이브러리 ScanSetting, 플러그인 또는 기타 프로젝트별 아티팩트와 같은 빌드 아티팩트 및 종속 항목이 있습니다. 또한 S2I 빌드를 수행하는 동안 아티팩트를 다운로드할 위치도 정의합니다. Maven Central Repository 사용과 함께 일부 조직에서는 로컬 사용자 지정 리포지토리(미러)도 배포합니다.

로컬 미러를 사용하는 이점은 다음과 같습니다.

  • 지리적으로 더 빠르고 빠르게 동기화된 미러를 사용할 수 있습니다.
  • 리포지토리 콘텐츠를 보다 효과적으로 제어합니다.
  • 공용 서버 및 리포지토리에 의존하지 않고도 다양한 팀(개발자, CI) 간에 아티팩트를 공유할 수 있습니다.
  • 빌드 시간 개선

Maven 리포지토리 관리자는 미러에 대한 로컬 캐시 역할을 할 수 있습니다. 리포지토리 관리자가 http://10.0.0.1:8080/repository/internal/ 에 이미 배포되어 있고 외부로 연결할 수 있다고 가정하면 S2I 빌드에서 이 리포지토리를 사용할 수 있습니다. 내부 Maven 리포지토리를 사용하려면 MAVEN_MIRROR_URL 환경 변수를 애플리케이션의 빌드 구성에 추가합니다.

새 빌드 구성의 경우 oc new- app 또는 oc new -build 와 함께 --build-env 옵션을 사용합니다.

$ oc new-app \
 https://github.com/jboss-openshift/openshift-quickstarts.git#master \
 --image-stream=jboss-webserver31-tomcat8-openshift \
 --context-dir='tomcat-websocket-chat' \
 --build-env MAVEN_MIRROR_URL=http://10.0.0.1:8080/repository/internal/ \
 --name=jws-wsch-app

기존 빌드 구성의 경우:

  1. MAVEN_MIRROR_URL 변수가 필요한 빌드 구성을 확인합니다.

    $ oc get bc -o name
    
    buildconfig/jws
  2. MAVEN_MIRROR_URL 환경 변수를 buildconfig/jws 에 추가합니다.

    $ oc env bc/jws MAVEN_MIRROR_URL="http://10.0.0.1:8080/repository/internal/"
    
    buildconfig "jws" updated
  3. 빌드 구성이 업데이트되었는지 확인합니다.

    $ oc env bc/jws --list
    
    # buildconfigs jws
    MAVEN_MIRROR_URL=http://10.0.0.1:8080/repository/internal/
  4. oc start-build를 사용하여 애플리케이션의 새 빌드 예약
참고

애플리케이션 빌드 중에 Maven 종속성은 기본 공용 리포지토리 대신 리포지토리 관리자에서 다운로드합니다. 빌드가 완료되면 미러는 빌드 중에 검색된 모든 종속성을 포함합니다.

4.1.2. OpenShift 이미지용 Red Hat JBoss Web Server에 포함된 스크립트

run
runs catalina (Tomcat)
assemble
Maven을 사용하여 소스를 빌드하고 패키지(.war)를 생성하여 $JWS_HOME/webapps 디렉터리로 이동합니다.

4.1.3. OpenShift 호환 환경 변수용 JWS

빌드 구성은 S2I(Source-to-Image) 빌드 명령에 환경 변수를 포함하여 수정할 수 있습니다( 4.1.1절. “OpenShift용 JWS와 함께 maven artifact 저장소 사용”참조). OpenShift용 Red Hat JBoss Web Server의 유효한 환경 변수는 다음과 같습니다.

변수 이름

설명

값 예

:leveloffset: +3

ARTIFACT_DIR

.war,.ear, .jar 파일은 deployments 디렉토리에 복사됩니다.

대상

HTTP_PROXY_HOST

Maven이 사용할 HTTP 프록시의 호스트 이름 또는 IP 주소입니다.

192.168.1.1

HTTP_PROXY_PORT

Maven이 사용할 HTTP 프록시의 TCP 포트입니다.

8080

HTTP_PROXY_USERNAME

HTTP_PROXY_PASSWORD 와 함께 제공된 경우 HTTP 프록시에 자격 증명을 사용합니다.

myusername

HTTP_PROXY_PASSWORD

HTTP_PROXY_USERNAME 과 함께 제공된 경우 HTTP 프록시에 자격 증명을 사용합니다.

mypassword

HTTP_PROXY_NONPROXYHOSTS

제공된 경우 구성된 HTTP 프록시는 이러한 호스트(콤마로 구분된 호스트, IP 주소 또는 도메인) 목록을 무시합니다.

*.example.net,some.example.org

MAVEN_ARGS

빌드 중 Maven에 제공되는 인수를 덮어씁니다.

-e -Popenshift -DskipTests -Dcom.redhat.xpaas.repo.redhatga package

MAVEN_ARGS_APPEND

빌드 중에 Maven에 제공된 사용자 인수를 추가합니다.

-Dfoo=bar

MAVEN_MIRROR_URL

구성할 Maven 미러/repository 관리자의 URL입니다.

http://10.0.0.1:8080/repository/internal/

MAVEN_CLEAR_REPO

선택적으로 빌드 후 로컬 Maven 리포지토리를 지웁니다.

true

:leveloffset: 3

4.2. OpenShift용 JWS의 축소

4.2.1. OpenShift 호환 환경 변수(valve 구성 요소)용 JWS

다음 환경 변수를 정의하여 이를 관련 catalina 컨테이너의 요청 처리 파이프라인에 삽입할 수 있습니다.

변수 이름설명값 예기본값

ENABLE_ACCESS_LOG

Access Log Valve를 사용하여 표준 출력 채널에 액세스 메시지를 기록할 수 있습니다.

true

false

4.3. 로그 확인

실행 중인 컨테이너 콘솔에서 제공하는 OpenShift 로그 또는 로그를 보려면 다음을 수행합니다.

$ oc logs -f <pod_name> <container_name>

액세스 로그는 /opt/webserver/logs/ 에 저장됩니다.

법적 공지

Copyright © 2023 Red Hat, Inc.
The text of and illustrations in this document are licensed by Red Hat under a Creative Commons Attribution–Share Alike 3.0 Unported license ("CC-BY-SA"). An explanation of CC-BY-SA is available at http://creativecommons.org/licenses/by-sa/3.0/. In accordance with CC-BY-SA, if you distribute this document or an adaptation of it, you must provide the URL for the original version.
Red Hat, as the licensor of this document, waives the right to enforce, and agrees not to assert, Section 4d of CC-BY-SA to the fullest extent permitted by applicable law.
Red Hat, Red Hat Enterprise Linux, the Shadowman logo, the Red Hat logo, JBoss, OpenShift, Fedora, the Infinity logo, and RHCE are trademarks of Red Hat, Inc., registered in the United States and other countries.
Linux® is the registered trademark of Linus Torvalds in the United States and other countries.
Java® is a registered trademark of Oracle and/or its affiliates.
XFS® is a trademark of Silicon Graphics International Corp. or its subsidiaries in the United States and/or other countries.
MySQL® is a registered trademark of MySQL AB in the United States, the European Union and other countries.
Node.js® is an official trademark of Joyent. Red Hat is not formally related to or endorsed by the official Joyent Node.js open source or commercial project.
The OpenStack® Word Mark and OpenStack logo are either registered trademarks/service marks or trademarks/service marks of the OpenStack Foundation, in the United States and other countries and are used with the OpenStack Foundation's permission. We are not affiliated with, endorsed or sponsored by the OpenStack Foundation, or the OpenStack community.
All other trademarks are the property of their respective owners.