캠핑과 개발


다수의 도메인 연결 방법

이전에 글인 경우는 하나의 도메인과 하나의 톰캣과의 연동법을 설명한 것이다. 하지만 위와 같은 경우가 아닌 하나의 아파치에 여러대의 tomcat을 사용하는 경우가 있을것이고 여러개의 도메인을 연결해서 사용해야 하는 경우도 있다. 아래 부분은 그 부분에 대해서 설명을 한다.
위에 내용과 연결되지 않으니 아파치 톰캣이 설치 되어 있다면 위에 부분은 건너 뛰고 아래 부분 부터 적응을 하면 된다.

일단 설치가 되지 않았다면 해당 URL에서 다운을 받으면 된다.

apahce 2.2 : http://httpd.apache.org/download.cgi
tomcat 6.x : http://tomcat.apache.org/download-60.cgi
mod_jk 1.2.28 : http://tomcat.apache.org/download-connectors.cgi

mod_jk-1.2.28-httpd-2.2.3.so 모듈을 modules 디렉터리로 복사를 했다면 httpd.conf 파일을 열고 다음 부분을 추가해준다. 제일 마지막 라인에 추가해주면 된다.

일단 해당 apahce 설치 폴더는 D:\SERVER\Apache2.2 에 설치를 했다.

httpd.conf
#
# Use name-based virtual hosting.
#
# 해당 아이피
NameVirtualHost 210.112.167.232 
# jk_module 추가
LoadModule jk_module modules/mod_jk-1.2.28-httpd-2.2.3.so
# workers.properties 파일 추가
JkWorkersFile "D:\SERVER\Apache2.2\conf\workers.properties"
# virtualhost 설정 추가
include "conf/vhosts/*.conf"

위와 같이 수정을 해 줬다면 workers.properties 파일을 생성해준 다음 아래 부분을 복사해서 붙여 넣는다.

workers.properties
# the list of workers
# 톰캣 경로
#workers.tomcat_home=D:\WAS\tomcat-6.0.20 //
# jdk 경로
#workers.java_home=C:\Java\jdk1.6.0_16

ps=\
worker.list=dev,dev2

#test.domain.pe.kr
worker.dev.host=test.domain.pe.kr
worker.dev.port=8009
worker.dev.lbfactor=1
worker.dev.type=ajp13

#test2.domain.pe.kr
worker.dev2.host=test2.domain.pe.kr
worker.dev2.port=8010
worker.dev2.lbfactor=1
worker.dev2.type=ajp13

# loadbalancer 설정
#worker.loadbalancer.type=lb
#worker.loadbalancer.balanced_workers=dev, dev2
#worker.inprocess.type=jni
#worker.inprocess.class_path=$(workers.tomcat_home)$(ps)lib$(ps)tomcat.jar
#worker.inprocess.cmd_line=start
#worker.inprocess.stdout=$(workers.tomcat_home)$(ps)logs$(ps)inprocess.stdout
#worker.inprocess.stderr=$(workers.tomcat_home)$(ps)logs$(ps)inprocess.stde

위에 내용에서 라인 앞줄에 #이 되어 있는 부분은 여기에서는 필요 하지 않으니 신경을 쓸 필요가 없다.이 과정까지 완료 되었다면 이제 도메인에 대한 설정을 해주면 된다. 

httpd.conf 파일에 include "conf/vhosts/*.conf" 라인을 입력 했었다.
conf/vhosts 폴더에 .conf 확장자로 된 모든 파일을 읽어 들이라고 정의를 했으니 해당 파일을 생성해 보자

지금은 vhosts  폴더가 없기 때문에 conf 하위에 vhosts 폴더를 하나 생성해 준다.
그리고  vhosts  아래에 해당 도메인명.conf  파일을 생성해 준후 아래 내용을 복사해서 붙여 넣는다. 해당 부분은 각자 사용자에 따라서 다르기 때문에 경로나 아이피는 적당하게 수정해준다.

test.domain.pe.kr.conf
<VirtualHost 210.112.167.232:80>
    ServerName test.domain.pe.kr   
DocumentRoot D:\webapps\test.domain.pe.kr
    
    ErrorLog logs/dev-error.log
    CustomLog logs/dev.log common
<Directory "D:\webapps\test.domain.pe.kr">
    #
    # Possible values for the Options directive are "None", "All",
    # or any combination of:
    #   Indexes Includes FollowSymLinks SymLinksifOwnerMatch ExecCGI MultiViews
    #
    # Note that "MultiViews" must be named *explicitly* --- "Options All"
    # doesn't give it to you.
    #
    # The Options directive is both complicated and important.  Please see
    # http://httpd.apache.org/docs/2.2/mod/core.html#options
    # for more information.
    #
    Options Indexes FollowSymLinks
    #
    # AllowOverride controls what directives may be placed in .htaccess files.
    # It can be "All", "None", or any combination of the keywords:
    #   Options FileInfo AuthConfig Limit
    #
    AllowOverride None
    #
    # Controls who can get stuff from this server.
    #
#    Order allow,deny
#    Allow from all
    Options FollowSymLinks
    AllowOverride None
    Order deny,allow
    Allow from all
</Directory>
# 아파치로 접근 하는 거중 확장자가 ok 만  톰캣으로 하고
# 나머지는 아파치 즉  workers.properties 의 이름 worker.list=sample 로 보낸다.
    JkMount /*.jsp  dev
    JkMount /*.do  dev
    JkMount /servlet/*  dev
</VirtualHost>


 위에 파일을 생성을 했다면 test2.domain.pe.kr에 대한 파일도 위와 같은 방법으로 하나 생성해준다.

여기까지 작업이 되었다면 아파치에 대한 설정은 끝났다. 이제 톰캣만 설정하면 되는데 톰캣이 설치 되었다면 해당 도메인에 지정된 톰캣 폴더/conf/에서 server.xml 파일을 수정해준다.

지금 현재의 필자의 경로는
D:\WAS\tomcat-6.0.20_test\conf,
D:\WAS\tomcat-6.0.20_test2\conf
로 되어 있다. 각각 해당 폴더를 열고 server.xml 파일을 열어서 다음 부분을 수정해준다. 

D:\WAS\tomcat-6.0.20_test\conf\server.xml

해당 부분은 수정할것이 없다. 기본적으로 톰캣은 8080 포트를 쓰지만 여러개의 톰캣을 사용하려면 이부분이 수정이 되어야 된다.

<Connector port="8080" protocol="HTTP/1.1"
               connectionTimeout="20000"
               redirectPort="8443" />

그리고 다음 라인도 찾아 보자. 하지만 이 부분도 여기서는 수정해줄 필요가 없다.
<Connector port="8009" protocol="AJP/1.3" redirectPort="8443" />

<Host name="localhost"  appBase="webapps"
            unpackWARs="true" autoDeploy="true"
            xmlValidation="false" xmlNamespaceAware="false">
</Host>

이부분도 찾아보자  이 부분은 기본적으로 톰캣 폴더가 ROOT로 되어 있다.
하지만 아파치의 경로는 현재 D:\webapps\test.domain.pe.kr으로 되어 있다.
이럴 경우 정적 리소스의 경우는 D:\webapps\test.domain.pe.kr에 저장이 되고
jsp, class의 경우는 D:\WAS\tomcat-6.0.20_test\webapps\ROOT에 저장을 해줘야 한다. 이렇게 분리하는것도 다른건 아니지만 그게 귀찮다면 아래 부분을 추가해준다.

<Host name="localhost"  appBase="webapps"
            unpackWARs="true" autoDeploy="true"
            xmlValidation="false" xmlNamespaceAware="false">
<Context docBase="D:\webapps\test.domain.pe.kr" path="" reloadable="false"/>
</Host>

이렇게 되면 같은 폴더를 사용하게 된다.

이제는 D:\WAS\tomcat-6.0.20_test2\conf\server.xml를 수정하도록 하자
위에 파일과 다를것이 없으므로 변경 부분만 강조를 하도록 하겠다.

D:\WAS\tomcat-6.0.20_test2\conf\server.xml
<Connector port="8081" protocol="HTTP/1.1"
               connectionTimeout="20000"
               redirectPort="8443" />

<Connector port="8010" protocol="AJP/1.3" redirectPort="8443" />

<Host name="localhost"  appBase="webapps"
            unpackWARs="true" autoDeploy="true"
            xmlValidation="false" xmlNamespaceAware="false">
<Context docBase="D:\webapps\test2.domain.pe.kr" path="" reloadable="false"/>
</Host>

위와 같이 적용이 되었다면 완료가 되었다..

적용된 도메인은 2개가 된다.

아파치
http://test.domain.pe.kr
http://test2.domain.pe.kr

톰캣
http://test.domain.pe.kr:8080
http://test2.domain.pe.kr:8081

참고)
도메인이 없는 경우 테스트를 할려면 host 파일에 설정을 해줘야 한다.