* WebServer 연결의 개요

 

# WebServer Listener 설정

         ▷ 웹서버 리스너

              1. WebtoB 리스너

              2. 타 WebServer 연동(apache 리스너, ajp13리스너)

         ▷ 클라이언트 리스너 

              1. HTTP/HTTPS리스너

              2. TCP 리스너 설정

              3. <webserver-connection>의 Timeout 값들의 의미

 

@ 본문 @

* WebServer 연결의 개요
  - Web Container를 사용하기 위해서는 HTTP 클라이언트와 Web Container 사이에서 중간자 역할과 코디네이터 역할을 하는 
    한 개 이상의 웹서버를 설정해야 한다. 웹서버와는 웹서버 리스너를 통해 Web Container와 연결한다. 
  - 리스너의 의미 : 일반적으로 웹서버나 HTTP 클라이언트가 직접 접근 할 수 있는 Web Container 쪽의 소켓.
  - 리스너의 종류 : 웹서버 리스너(WebtoB리스너, Apache리스너, AJP13리스너), 
                           클라이언트 리스너(HTTP리스너, HTTPS리스너, TCP리스너, UDP리스너),

                           Tmax와의 연동을 위한 리스너(Tmax리스너)

 

  ## << WebServer Listener 설정>> ##
  
         ▷ 웹서버 리스너
             1.  WebtoB 리스너 : WebtoB 리스너는 다른 리스너와 달리 리스너가 WebtoB Server의 위치를 찾아서,

                                        접속하고자 하는 특징을 가진다. 그러므로, WebtoB리스너를 사용할 때에는 WebtoB Server가

                                        리스닝 모드로 대기를 하고, WebtoB 리스너
                                        (즉, Web Container)가 연결을 시도한다. 이러한 연결방식을 Reverse Connection Pooling 이라 함)
                  1) WebtoB 리스너 설정
                       - 설정 파일 : WEBMain.xml
           =========================================
            <webtob-listener>
                <listener-id>webtob</listener-id>
                <port>9900</port>
                <output-buffer-size>8192</output-buffer-size>
                <thread-pool>
                   <min>2</min>
                   <max>20</max>
                   <step>1</step>
                   <max-idle-time>30000</max-idle-time>
                </thread-pool>
                <hth-count>1</hth-count>
                <webtob-address>localhost</webtob-address>
                <disable-pipe>true</disable-pipe>
                <registration-id>jsv1</registration-id>
            </webtob-listener>
           =========================================
                      

              2.  타 WebServer 연동
                   - Apache 리스너 : 앞 단의 Apache Server와 연동을 가능하게 한다. 
                   - AJP13 리스너 : AJP 1.3 protocol을 사용하는 것을 제외하고 Apache 리스너와 동일하게 동작하며, 

                                          mod_jk module을 통해 지원을 한다. 위에서 언급한 WebtoB 이외의 다른 웹 서버, 예를들면

                                          Apache, IIS, SunOne(Iplanet)등을 사용할 경우에도 JEUS Web 어플리케이션과의 상호 연동이

                                          가능하도록 해주는 프로토콜이다.                                         
                   - mod_jk library : 해당 웹서버를 Web container 앞단에 사용하기 위해서는 mod_jk 모듈을 Apache 설치 모듈에

                                             추가해 주어야 하는데, 이 모듈은 Server와 Container 간의 통신 Protocol을 구현한 것이다.
                                               *) 다운로드 : http://www.apache.org/dist/tomcat/tomcat-connectors/jk/binaries/
                                              

                   1) SunOne WebServer(IPlanet) 연동
                        -. mod_jk 모듈(NSAPI Redirector) 설치(경로 예: c:\ajp13\nsapi_redirect.dll(so)  ( 임의설정 가능))
                        
                        -. 설정 파일 생성 및 편집 : obj.conf, mime.conf, magnus.conf, workers.properties, JEUS의 WEBMain.xml
                        
                        -. workers.properties 생성(경로: $IPLANET_HOME/https-`hostname`/config/workers.properties)
                        ===============================================================================    
                        worker.list=worker1   # 해당 worker정의. 여러개 입력시 comma(,)로 구분
                        worker.worker1.type=ajp13  # worker의 타입. JEUS와의 통신 프로토콜
                        worker.worker1.port=9901   # JEUS랑 연동할 포트, ajp13리스너에 설정된 port
                        worker.worker1.host=127.0.0.1  # JEUS의 APJ13 리스너가 존재하는 호스트 또는 IP
                        ===============================================================================    
                        *) worker.list=worker1 설정부분의 worker1은 다른 환경설정파일에 매칭이 되므로 잘 기억해둔다.
                        
                        -. obj.conf 편집(경로: $IPLANET_HOME/https-`hostname`/config/obj.conf)
                        ===============================================================================   
                        <Object name=default>
                        NameTrans fn="assign-name" from="/app/*" name="servlet“ #alias
                        NameTrans fn="assign-name" from="/*.jsp" name="servlet"
                        
                        NameTrans fn=pfx2dir from=/mc-icons dir="C:/iPlanet/Servers/ns-icons" name="es-internal"
                        NameTrans fn=document-root root="$docroot"  #이설정보다 JEUS관련 설정이 우선해서 설정되어야 함.
                        
                        PathCheck fn=nt-uri-clean
                        PathCheck fn="check-acl" acl="default"
                        PathCheck fn=find-pathinfo
                        PathCheck fn=find-index index-names="index.html,home.html"
                        
                        ObjectType fn=type-by-extension
                        ObjectType fn=force-type type=text/plain
                        
                        Service type="magnus-internal/jsp" fn="jk_service" worker="worker1"  #확장자 비교해서 JEUS로 넘기겠다.
                        Service method=(GET|HEAD) type=magnus-internal/imagemap fn=imagemap
                        Service method=(GET|HEAD) type=magnus-internal/directory fn=index-common
                        Service method=(GET|HEAD|POST) type=*~magnus-internal/* fn=send-file
                        AddLog fn=flex-log name="access"
                        </Object>
                        # 기존 servlet이라고 명명된 부분을 JEUS쪽으로 연동하겠다는 의미
                        <Object name="servlet">
                        ObjectType fn="force-type" type="text/plain"
                        Service fn="jk_service" worker="worker1"
                        </Object>
                        
                        <Object name=cgi>
                        ObjectType fn=force-type type=magnus-internal/cgi
                        Service fn=send-cgi
                        </Object>
                        
                        <Object name="ServletByExt">
                        ObjectType fn="force-type" type="magnus-internal/servlet"
                        Service type="magnus-internal/servlet" fn="NSServletService"
                        </Object>
                        
                        <Object name="es-internal">
                        PathCheck fn="check-acl" acl="es-internal"
                        </Object>
                        ===============================================================================   
                        
                        -. magnus.conf 편집(경로: $IPLANET_HOME/https-`hostname`/config/magnus.conf)
                         ===============================================================================   
                        ServerRoot C:/iPlanet/Servers/https-shjang
                        ServerID https-shjang
                        ServerName shjang
                        ExtraPath C:/iPlanet/Servers/bin/https/bin;${NSES_JRE_RUNTIME_LIBPATH}
                        ErrorLog C:/iPlanet/Servers/https-shjang/logs/errors
                        MtaHost name-of-mail-server
                        DNS off
                        Security off
                        ClientLanguage en
                        AdminLanguage en
                        DefaultLanguage en
                        RqThrottle 128
                        
                        Init fn=flex-init access="$accesslog" format.access="%Ses->client.ip% - %Req->vars.auth-user% [%SYSDATE%] \"%Req->reqpb.clf-request%\" %Req->srvhdrs.clf-status% %Req->srvhdrs.content-length%"
                        Init fn=load-types mime-types=mime.types
                        
                        # Customer Thread pool setting
                        Init fn="thread-pool-init" name="jeus_thread_pool" MinThreads=“10" MaxThreads=“10" QueueSize="200"
                        
                        # 연동 Module 설정
                        Init fn="load-modules" funcs="jk_init,jk_service" shlib="c:/ajp13/nsapi_redirect.dll" shlib_flags="(global|now)" pool="jeus_thread_pool“
                        
                        # 연동 Module의 worker파일위치 및 로그 설정
                        Init fn="jk_init" worker_file="c:/ajp13/conf/workers.properties" log_level="debug" log_file="c:/ajp13/log/nsapi.log"
                        ===============================================================================  

                        -. WEBMain.xml 편집(경로: $JEUS_HOME/config/`hostname`/`hostname`_container1/WEBMain.xml)
                        ===============================================================================  
                        <webserver-connection>
                           <ajp13-listener>
                              <listener-id>iis1</listener-id>
                              <port>9901</port>
                              <output-buffer-size>0</output-buffer-size>
                              <thread-pool>
                                 <min>10</min>
                                 <max>20</max>
                              </thread-pool>
                           </ajp13-listener>
                        </webserver-connection>
                        =============================================================================== 


                   2) Apache WebServer 연동 
                        -. mod_jk 모듈 설치(경로: $APACHE_HOME/modules/mod_jk.so  ( 임의설정 가능))
                        
                        -. 설정 파일 생성 및 편집: httpd.conf, workers.properties, mod_jk.conf, JEUS의 WEBMain.xml
                        
                        -. httpd.conf 편집(경로: $APACHE_HOME/conf/httpd.conf)
                        ===============================================================================     
                        ServerRoot “/home/apache”  # Apache 홈 디렉토리
                        Listen 8888   # IP, Port
                        ServerName kkam   # Server Name
                        DocumentRoot “/home/apache/htdocs” # Doc Root
                        ErrorLog “logs/error_log”  # Error Log 경로
                        LogLevel warn   # Log Level                  
                        .
                        .
                        (생략)
                        Include conf/mod_jk.conf  # mod_jk.conf 파일 Include
                        ===============================================================================   
                        
                        -. mod_jk.conf 생성(경로: $APACHE_HOME/conf/mod_jk.conf)
                        ===============================================================================      
                        LoadModule jk_module modules/mod_jk.so # mod_jk.so를 Apache웹서버에 load한다.
                        <IfModule mod_jk.c>
                         JkWorkersFile conf/workers.properties # workers.properties 파일 경로
                          JkLogFile logs/mod_jk.log  # log파일 경로
                          JkLogLevel info   # log레벨 [debug, error, info]
                        
                          JkMount /*.jsp worker1  #Mime-Type 정의
                          JkMount /servlet/*  worker1  #URI 정의
                        </IfModule>
                        ===============================================================================            
                
                        -. workers.properties 생성(경로: $APACHE_HOME/conf/workers.properties)
                        ===============================================================================
                         worker.list=worker1   # 해당 worker정의. 여러개 입력시 comma(,)로 구분
                         worker.worker1.type=ajp13  # worker의 타입. JEUS와의 통신 프로토콜
                         worker.worker1.port=29999   # JEUS랑 연동할 포트, ajp13리스너에 설정된 port
                         worker.worker1.host=127.0.0.1  # JEUS의 APJ13 리스너가 존재하는 호스트 또는 IP
                        ===============================================================================
                        
                        -. WEBMain.xml 편집(경로: $JEUS_HOME/config/`hostname`/`hostname`_servlet_engine1/WEBMain.xml)
                        ===============================================================================
                        <webserver-connection>
                            <ajp13-listener>
                                <listener-id>apache1</listener-id>
                                <port>29999</port>
                                <output-buffer-size>0</output-buffer-size>
                                <thread-pool>
                                   <min>10</min>
                                   <max>10</max>
                                </thread-pool>
                            </ajp13-listener>
                        </webserver-connection>
                        ===============================================================================
                        

                           
                   3) IIS 연동 
                        -. mod_jk 모듈(ISAPI Redirector) 설치(경로 예: c:\jeus.cfg\win32\isapi_redirect.dll)
                        
                        -. 설정 파일 생성 및 편집: isapi_redirect.properties, uriworkermap.properties, workers.properties,

                                                            JEUS의 WEBMain.xml
                        
                        -. isapi_redirector.properties 생성(경로 예: c:\jeus.cfg\win32\isapi_redirect.properties)
                        ===============================================================================
                        extension_uri=/jakarta/isapi_redirect.dll           # ISAPI extension을 나타냄
                        log_file=c:\jeus.cfg\logs\isapi.log        # 로그파일 경로 및 파일명
                        log_level=debug             # 로그레벨(debug, info, warn, error, trace)
                        worker_file=c:\jeus.cfg\jk\workers.properties       # workers.properties파일 경로 및 파일명
                        worker_mount_file=c:\jeus.cfg\jk\uriworkermap.properties       # uriworkermap.properties파일 경로 및 파일명
                        ===============================================================================
                        
                        -. workers.properties 생성(경로 예: c:\jeus.cfg\jk\workers.properties)
                        ===============================================================================
                        worker.list=worker1   # 해당 worker정의. 여러개 입력시 comma(,)로 구분
                        worker.worker1.type=ajp13  # worker의 타입. JEUS와의 통신 프로토콜
                        worker.worker1.port=29999   # JEUS랑 연동할 포트, ajp13리스너에 설정된 port
                        worker.worker1.host=127.0.0.1  # JEUS의 APJ13 리스너가 존재하는 호스트 또는 IP
                        ===============================================================================
                        
                        -. uriworkers.properties 생성(경로 예: c:\jeus.cfg\jk\uriworkermap.properties)
                        ===============================================================================
                        /*.jsp=worker1 # Mime-Type 정의
                        /app/*=worker1  # URI 정의
                        ===============================================================================
                          *) workers.properties에서 정의한 worker명과 매핑
                        
                        -. WEBMain.xml 편집(경로: $JEUS_HOME/config/`hostname`/`hostname`_container1/WEBMain.xml)
                        ===============================================================================
                        <webserver-connection>
                           <ajp13-listener>
                              <listener-id>iis1</listener-id>
                              <port>9900</port>
                              <output-buffer-size>0</output-buffer-size>
                              <thread-pool>
                                 <min>10</min>
                                 <max>20</max>
                              </thread-pool>
                           </ajp13-listener>
                        </webserver-connection>
                        ===============================================================================

                        -. JEUS와 연동을 위한 IIS 설정 추가/변경
                           a) “제어판 -> 관리도구 -> 인터넷 정보 서비스”실행
                               기본 웹 사이트 (선택하고 마우스 우클릭) -> 새로만들기 -> 가상 디릭터리            
                           b) 별칭에 "jakarta" 입력 
                           c) 읽기, 스크립트 실행, 실행 3개 모두 체크
                           d) jakarta라는 가상 디렉토리가 생성되었는지 확인
                           e) “기본웹사이트 -> 속성 -> ISAPI필터”에서 “추가”버튼 클릭
                           f) 필터이름 : jakarta
                               실행파일 : isapi_redirect.dll 파일 검색해서 선택
                               (위의 환경파일 isapi_redirector.properties 에서 extension_uri속성에 설정한 경로를 입력)
                           g) 명령창을 열어서 "iisreset" 명령을 실행
                           h) 기본 웹사이트 -> 속성 -> ISAPI필터
                               상태부분에 녹색 화살표가 있으면 성공, 적색 화살표가 나오면 다시 설정할것.      
                                참고) “IIS6.0이상에서는 요청시에 화살표가 생성됨!!”
                           i) IIS관리 창에서 좌측메뉴의 “웹 서비스 확장” 메뉴로 이동하여, ISAPI 모듈사용을 허용하여야

                              JEUS로 요청이 넘어감 (IIS 6.0부터 추가된 내용)
                          “알수 없는 모든 ISAPI 확장”의 상태를 허용됨으로 바꾸던지, jakarta라는 이름의 필터를 신규등록을 한다.