Server관련/Sever(OS)

[펌]단일 Tomcat 서버에서 가상 호스트 설정법과 각 호스트별 Manager 기능 설정

saltdoll 2008. 4. 10. 11:09
반응형

출처: http://okjsp.pe.kr/seq/91825

단일 Tomcat 서버에서 여러개의 사이트를 가상 호스트로 서비스 하는 방법과

가 호스트별로 Manager Application을 설정하는 방법입니다.

- 테스트 된 Tomcat 버전
  Tomcat 5.5

- 수정하게 될 설정 파일 목록
  ${catalina.home}/conf/server.xml
  ${catalina.home}/conf/tomcat-users.xml
 

- 테스트 가정
  aaa.com 도메인과 bbb.com 두개의 도메인을 사용하여 각기 다른 사이트를 서비스 하려 하고,
  각 도메인 마다 Manager Application을 사용하여 Context 관리를 하고자 하는 상황.


단계 1 - 가상 호스트를 사용하여 단일 Tomcat 서버에서 두개(혹은 그 이상)의 사이트가 가동 되도록 설정

 a. 각 사이트별 기본 디렉토리를 생성 합니다. (${catalina.home}/webapps 디렉토리와 같은 기능)

 b. D 드라이브에 aaa 디렉토리 생성 <- aaa 디렉토리가 각 사이트별 기본 디렉토리(웹 ROOT 디렉토리 아님)가 됩니다.

 c. aaa 폴더 아래에 ROOT 디렉토리 생성 <- ROOT 디렉토리가 사이트의 기본 웹 ROOT 디렉토리가 됩니다.

 a ~ c 의 과정을 반복하여 bbb.com 이 가동될 디렉토리 생성

  생성 결과
  D:/aaa
  D:/aaa/ROOT

  D:/bbb
  D:/bbb/ROOT

 d. ${catalina.home}/conf/server.xml 파일을 열어 아래의 내용을 추가 합니다.

    <Host>...</Host>

    <Host name="aaa.com" appBase="D:/aaa" unpackWARs="true" autoDeploy="true" xmlValidation="false" xmlNamespaceAware="false">
    </Host>

    <Host name="bbb.com" appBase="D:/bbb" unpackWARs="true" autoDeploy="true" xmlValidation="false" xmlNamespaceAware="false">
    </Host>

 e. 각 디렉토리(D:/aaa/ROOT, D:/bbb/ROOT)에 소스 저장

 f. Tomcat 재 시작

 g. http://aaa.comhttp://bbb.com 으로 접속하여 각 사이트가 열리는지 확인


 단계 2 - 각 사이트별 Manager Application 기능 설정

 a. ${catalina.home}/conf/server.xml 파일을 열어 다음과 같이 수정 합니다.

    <Host name="aaa.com" appBase="D:/aaa" unpackWARs="true" autoDeploy="true" xmlValidation="false" xmlNamespaceAware="false">
        <Context path="/manager" docBase="${catalina.home}/server/webapps/manager"  privileged="true"/>
    </Host>

    <Host name="bbb.com" appBase="D:/bbb" unpackWARs="true" autoDeploy="true" xmlValidation="false" xmlNamespaceAware="false">
        <Context path="/manager" docBase="${catalina.home}/server/webapps/manager"  privileged="true"/>
    </Host>

 b. 각 사이트별 Manager Application에 접근 할 수 있도록 아이디를 부여 합니다.
   
    ${catalina.home}/conf/tomcat-users.xml 파일을 열어 다음의 내용을 추가 합니다.

    <user username="aaaAdmin" password="111" roles="manager"/>
    <user username="bbbAdmin" password="111" roles="manager"/>

 c. Tomcat을 재 시작

 d. http://aaa.com/manager/html 로 접속(aaaAdmin // 1111) 하여 Manager Application 확인

 e. http://bbb.com/manager/html 로 접속(bbbAdmin // 1111) 하여 Manager Application 확인


 단계 3 - 각 사이트별 Context 추가

 a. 추가하고자 하는 Context 이름으로 각 사이트의 기본 디렉토리에 생성 합니다.
    예) member라는 Context 추가 - D:/aaa/member

 b. member 디렉토리에 소스를 넣고 http://aaa.com/member/~~~~~ 로 접속하여 Context를 확인 합니다.

 c. 추가된 Context는 각 사이트별 Manager Application에서 관리 할 수 있습니다.


 이상 끝~~

 단일 Tomcat 서버에서 호스트별로 Manager Application 을 사용 할 수 있도록 설정하는 방법을 찾다가

 정리된 문서가 없는 것 같아 한번 올려봅니다...

 정리된 문서가 있을지도 모르겠지만 제가 정보검색 능력이 부족한지 못찾아서 나름 정리봤습니다..ㅎㅎ;;

 잘못된 부분이 있다면 태클 걸어주시면 대략 감사 하겠습니다 ;;;


2007-03-21 잘못 기재된 정보 정정
 각 사이트별 manager 에 대한 접근 권한에 대한 부분입니다~
 skyer9님이 지적해 주신 부분에 대한 내용 입니다.

 ${catalina.home}/conf/tomcat-users.xml 을 아래와 같이 수정 합니다.

 1. role을 하나 추가 합니다.
 <role rolename="aaaManager"/>

  2. 사용자 정보를 수정 합니다.
 <user username="aaaAdmin" password="111" roles="aaaManager"/>


 각 사이트별 manager 권한을 따로 하기 위하여 아래와 같이 합니다.

 각 사이트별 기본 디렉토리에 ${catalina.home}/server/webapps/manager 폴더를 복사합니다.

 D:/aaa/manager 폴더가 되겠죠

 이 폴더에서 WEB-INF/web.xml 파일을 열어서 다음과 같이 수정 합니다.

<auth-constraint>
 <!-- NOTE:  This role is not present in the default users file -->
 <role-name>aaaManager</role-name>
</auth-constraint>

<security-role>
 <description>
 The role that is required to log in to the Manager Application
 </description>
 <role-name>aaaManager</role-name>
</security-role>


다음 ${catalina.home}/conf/server.xml을 재 수정 합니다.
<Host name="aaa.com" appBase="D:/aaa" unpackWARs="true" autoDeploy="true" xmlValidation="false" xmlNamespaceAware="false">
 <Context path="/manager" docBase="D:/aaa/manager"  privileged="true"/>
</Host>

<Host name="bbb.com" appBase="D:/bbb" unpackWARs="true" autoDeploy="true" xmlValidation="false" xmlNamespaceAware="false">
 <Context path="/manager" docBase="D:/bbb/manager"  privileged="true"/>
</Host>

톰캣을 재 시작 하고 테스트 해 봅니다.

반응형
도움이 되셨다면 하트모양의 "♡ 공감"을 눌러주시면 큰 격려가 됩니다.
(로그인하지 않으셔도 가능)