본문 바로가기
IBM - old/WAS Liberty 강좌

[Open]01.Open Liberty 설치 및 간단한 테스트

by freeman98 2017. 10. 14.

안녕하세요 이정운 입니다.

지난번에 언급드린 것처럼 IBM 에서 IBM WAS Liberty 를 오픈소스화 하여 누구나 사용가능하게 Open Liberty 라는 오픈 소스 WAS 를 새롭게 소개한 것을 언급드렸습니다. 다시 말씀드려서 상용 IBM WAS Liberty 와 동일 코드 베이스로 Open Liberty 라는 이름으로 Eclipse Public License 기반으로 소스 코드를 공개(https://github.com/OpenLiberty) 하고 openliberty.io(https://openliberty.io)를 통해서 다양한 샘플이나 가이드를 제공하는 등 활발히 공유를 시작하고 있습니다.  

Open Liberty는 다양한 기업환경에서 검증된 상용 수준의 품질로 Java 표준인 Java EE 뿐만 아니라 MicroProfile 을 지원하는 오픈소스 WAS 로 향후 Cloud, Microservice Architecture, Container 로 변해가는 시대의 중심이 될 수 있는 WAS 로 자리잡기 위한 그 첫번째 발걸음입니다.

오픈 소스이기 때문에 Tomcat 처럼 별도의 라이센스 없이 누구나 사용가능하며 다양한 Cloud, Microservice Architecture, Container 의 기본 WAS 미들웨어로 언제든 사용 가능하십니다. 그럼 말만이 아니라 직접 한번 테스트 해보는 시간을 가져보도록 하겠습니다.


#1) openliberty.io 에서 직접 다운로드 및 테스트


https://openliberty.io/downloads/


링크에서 다운로드 버튼을 클릭하여 zip 형태로 압축되어 있는 Open Liberty 엔진과 Eclipse Developer Tools 를 다운로드 받습니다.
(간략히만 설명드리면 이름 그대로 Open Liberty 파일은 Open Liberty 엔진을 의미하며 Eclipse Developer Tools 는 Eclipse 에서 Open Liberty 를 연동하고 개발하기 위한 plugin 입니다.)


Open Liberty 의 경우 별도의 설치 작업이 필요하지 않으며 해당 zip 파일에 대한 압축을 풀기만 하면 설치가 모두 완료된 것이며 바로 사용할 수 있습니다. (wlp 폴더가 기본 루트 폴더로 보시면 되며 그 뒤에 필요한 스크립트나 설정, 라이브러리들이 존재합니다.)


그럼 이제 실제 간략하게 테스트를 하기 위해서 Open Liberty 샘플 서버를 생성하고 구동해보도록 하겠습니다. bin 디렉토리에서 "server" 명령어가 잘 동작하는지 확인합니다.


server 명령어의 create 인수를 통해서 server01 이라는 샘플 서버를 하단과 같이 생성합니다.

./server create server01


정상적으로 server create 명령이 완료되면 하단과 같이 wlp\usr\servers\server01 폴더가 생성된 것을 확인할 수 있으며 Open Liberty 의 기본 설정파일인 server.xml 을 확인할 수 있습니다.


server.xml 을 확인해보시면 아시겠지만 하단과 같이 Open Liberty 를 위한 간단한 설정들이 들어가 있습니다.


향후 좀 더 자세히 설명하겠지만 간단히만 언급드리면 'featureManager' 에서는 어떤 기능을 사용할 것인가에 대한 명세이며 보시는 것처럼 'jsp-2.3' 표준을 사용하겠다는 의미입니다. 이와 같이 Open Liberty 에서는 Java EE 나 특정 표준을 위한 컨테이너만 세밀하게 구동하는 것이 가능하여 더 적은 메모리 풋프린트 사용/더 빠른 재시작이 가능합니다.

다음으로 'httpEndpoint' 는 서비스를 위한 http, https 포트에 대한 설정이 존재하며 외부에서 접속하기 위해서는 주석에 설명된 것과 같이 'host="*"' 구문을 추가해야 합니다.

마지막으로 'autoExpand' 관련 옵션은 애플리케이션을 배포할때 WAR 나 EAR 파일을 사용해도 자동으로 이를 인지하고 풀어서 사용하겠다는 옵션입니다.

그럼 대략적으로 설정을 확인해봤으니 './server start server01' 명령을 통해서 Open Liberty 서버를 실제로 시작시킵니다.


정상적으로 server01 서버가 시작이 완료되면 하단과 같이 웹브라우저에 지정된 port 를 통해서 Open Liberty 서버의 Welcome 페이지를 확인 가능합니다.




#2) Open Liberty 서버를 활용한 간단한 샘플 애플리케이션 테스트


추가로 간단한 JSP 애플리케이션을 작성하고 Open Liberty 로 구동해보는 것을 살펴보기 위하여 하단과 같이 wlp/usr/servers/server01/apps 폴더에 'TestJSP' 라는 빈 폴더를 하나 생성합니다.


그리고 생성된 폴더 안에 하단과 같이 간단한 샘플 JSP 페이지를 하나 작성하여 test.jsp 라는 이름으로 저장합니다.

<html>
<head><title>First JSP</title></head>
<body>
  <%
    System.out.println("Welcome JSP...");
  %>
      <h2>Welcome JSP</p>
</body>
</html>

이렇게 간단한 샘플 JSP 애플리케이션을 만들었다면 하단과 같이 Open Liberty 서버의 server.xml 파일에 'application' 항목을 추가하여 방금 만든 폴더를 지정하고 애플리케이션으로 인식되게끔 지정합니다.
(잘 보시면 Tomcat 설정 방식과 거의 유사하다는 것을 이해하실 수 있습니다.)

<?xml version="1.0" encoding="UTF-8"?>
<server description="new server">

    <!-- Enable features -->
    <featureManager>
        <feature>jsp-2.3</feature>
    </featureManager>

    <!-- To access this server from a remote client add a host attribute to the following element, e.g. host="*" -->
    <httpEndpoint id="defaultHttpEndpoint"
                  httpPort="9080"
                  httpsPort="9443" />

    <!-- Automatically expand WAR files and EAR files -->
    <applicationManager autoExpand="true"/>
    
    <!-- Application Sample -->
    <application context-root="Test" type="war" id="helloworld" location="TestJSP" name="TestJSP"/>
</server>

이와 같이 하면 Open Liberty 에서 샘플 JSP 애플리케이션을 자동으로 인식하여 설정된데로 Context Root 로 접속하면 해당 JSP 결과를 확인하실 수 있습니다.


또한, 해당 Open Liberty 서버의 logs 폴더의 messages.log 파일에서 JSP 샘플에서 출력한 간단한 SystemOut 관련 로그도 확인 가능합니다.



참고 #1) Open Liberty 는 WAS 이기 때문에 당연히 실행환경으로 Java 가 필요합니다. IBM Java, Oracle Java, Open JDK 모두 지원이 가능하며 사전에 JAVA_HOME 패스 설정만을 해두시면 됩니다.

(Open Liberty 의 숨겨진 장점(?) 중의 하나는 Windows 환경이나 Linux 환경에서 IBM Java 를 공식적으로 활용할 수 있다는 점입니다.)

참고 #2) 샘플 애플리케이션이 WAR 나 EAR 로 되어 있는 경우에도 동일하게 애플리케이션을 배포할 수 있으며 wlp/dropins 에 WAR 나 EAR 을 옮겨두기만 해도 추가적인 server.xml 설정 없이 자동으로 애플리케이션을 인식해서 구동시킬 수 있습니다.

(단, 이 경우에 Context Root 는 별도로 변경하지 않는한 WAR나 EAR 파일의 이름이 자동으로 Context Root 가 됩니다.)


댓글