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에 대한 가상 호스트 구축 방법은 아래 링크를 참조한다.

아파치 가상 호스트(Virtual host)를 이용한 하나의 서버에 여러개의 웹 서비스 구현하기




+ Recent posts