2018년 5월 29일 화요일

Tomcat 가상 호스트(Virtual Host) 구축 방법





Tomcat 가상 호스트(Virtual Host) 구축 방법

서버에 tomcat이 설치되어 있을 경우 Java/JSP를 이용한 웹서비스를 개발할 때도 apache의 경우와 같이 하나의 서버에 여러개의 도메인으로 접속시 각각의 해당 웹 서비스가 실행되도록 가상 호스트를 만들수 있다.

Ubutnu 16.04, Tomcat 8.0의 상황에서 다음 경로에 있는 server.xml을 가상 호스트 환경으로 변경해 준다.

vi /etc/tomcat8/server.xml

위의 파일을 열어 보면 다음과 같은 내용이 있을 것이다.

    128       <Host name="localhost"  appBase="webapps"
    129             unpackWARs="true" autoDeploy="true">
    130 
    131         <!-- SingleSignOn valve, share authentication between web applications
    132              Documentation at: /docs/config/valve.html -->
    133         <!--
    134         <Valve className="org.apache.catalina.authenticator.SingleSignOn" />
    135         -->
    136 
    137         <!-- Access log processes all example.
    138              Documentation at: /docs/config/valve.html
    139              Note: The pattern used is equivalent to using pattern="common" -->
    140         <Valve className="org.apache.catalina.valves.AccessLogValve" directory="logs"
    141                prefix="localhost_access_log" suffix=".txt"
    142                pattern="%h %l %u %t &quot;%r&quot; %s %b" />
    143       </Host>

이 상황에서 2개의 도메인에 대한 가상 호스트를 만들기로 해 본다.
joekog.iptime.org 
fullstack.iptime.org
이상의 2개의 도메인으로 동일 서버(Ubuntu 16.04, Tomcat 8이 설치된 서버)로 접속해 돌 때
joekog.iptime.org  ⇒ /home/joekog/www의 웹 서비스가 실행되고
fullstack.iptime.org  ⇒ /home/fullstack/www의 웹 서비스가 실행되도록 Tomcat virtual host(톰캣 가상호스트)를 설정해 보고자 한다.

위에서 열었던 server.xml의 위의 <Host name... 아랫쪽에 아래와 같이 도메인 관련정보를 추가해 준다.

    145       <Host name="joekog.iptime.org"  appBase="/home/joekog/www"
    146             unpackWARs="true" autoDeploy="true">
    147 
    148         <!-- SingleSignOn valve, share authentication between web applications
    149              Documentation at: /docs/config/valve.html -->
    150         <!--
    151         <Valve className="org.apache.catalina.authenticator.SingleSignOn" />
    152         -->
    153 
    154         <!-- Access log processes all example.
    155              Documentation at: /docs/config/valve.html
    156              Note: The pattern used is equivalent to using pattern="common" -->
    157         <Valve className="org.apache.catalina.valves.AccessLogValve" directory="logs"
    158                prefix="joekog.iptime.org_access_log" suffix=".txt"
    159                pattern="%h %l %u %t &quot;%r&quot; %s %b" />
    160       </Host>
    161 
    162       <Host name="fullstack.iptime.org"  appBase="/home/fullstack/www"
    163             unpackWARs="true" autoDeploy="true">
    164 
    165         <!-- SingleSignOn valve, share authentication between web applications
    166              Documentation at: /docs/config/valve.html -->
    167         <!--
    168         <Valve className="org.apache.catalina.authenticator.SingleSignOn" />
    169         -->
    170 
    171         <!-- Access log processes all example.
    172              Documentation at: /docs/config/valve.html
    173              Note: The pattern used is equivalent to using pattern="common" -->
    174         <Valve className="org.apache.catalina.valves.AccessLogValve" directory="logs"
    175                prefix="fullstack.iptime.org_access_log" suffix=".txt"
    176                pattern="%h %l %u %t &quot;%r&quot; %s %b" />
    177       </Host>


위 파일을 저장한 후 tomcat을 재시작한다.

service tomcat8 restart

이제 각각의 경로에 해당하는 웹 서비스를 구현하면 된다.

joekog.iptime.org를 위해 joekog에 대한 사용자를 아래와 같이 추가해 준다.

adduser joekog

위의 사용자를 추가하고 나면 /home/joekog라는 디렉토리가 생성되었을 것이다. 이후 아래 디렉토리 경로를 생성해 준다.

/home/joekog/www/ROOT/

이때 주의할 것은 server.xml에 appBase="/home/joekog/www"와 같이 설정되어 있지만 기본적으로 tomcat은 이 경로 아래의 ROOT를 웹의 루트 디렉토리로 인식하기 때문에 index.jsp와 같은 파일을 /home/joekog/www/index.jsp와 같이 위치시키면 파일을 찾을수 없다는 에러를 발생시킨다. 반드시 ROOT 디렉토리를 생성 후 /home/joekog/www/ROOT/index.jsp와 같이 웹 서비스 실행 파일을 위치시켜야 한다.

이제 웹 브라우저에서 http://joekog.iptime.org:8080/index.jsp로 접속하면 정상적으로 실행이 된다.
fullstack.iptime.org에 대한 것도 동일한 방법으로 테스트해 볼수 있다.

사용자 추가, IpTIME에서의 DDNS 설정 및 apache에 대한 가상 호스트 구축 방법은 아래 링크를 참조한다.

댓글 없음:

댓글 쓰기