휘샤's Blog
천천히 서둘러라

'JK Connector'에 해당되는 글 1건

  1. 2007/12/28 Apache-Tomcat(5.x)에서 VirtualHost

Apache-Tomcat(5.x)에서 VirtualHost

Tip 2007/12/28 16:26 by 휘샤

일단 정리를 좀 하고 시작하자면,
설치된 프로그램의 버젼은 Apache2.2.4, Tomcat 5.5.25, JK2.2.4입니다.
JK는 Apache와 Tomcat을 연동시켜주는 Connector입니다.
아파치와 톰켓은 설치가 되어있고, JK를 통해 연동이 설정되어있는 상태에서 시작합니다.



일단은 테스트를 위해, 혹은 서버 내에서 Virtual Hosting을 위해 Hosts 설정을 바꾸고 시작했습니다.
윈도우라면 %WINDOWS%\SYSYEM32\driver\hosts라는 파일이,
*nix라면 /etc/hosts라는 파일이 있을 것입니다.
그 곳에 127.0.0.1   virtual.domain.com을 추가합니다.


일단 Apache에서 특정 도메인을 통해 들어오는 패킷을 Redirect시켜줍니다.
설정은 역시나 httpd.conf


<VirtualHost virtual.domain.com>

ServerAdmin      master@domain.com         # 관리자 email
DocumentRoot   /home/domain/virtual        # Redirect시켜줄 곳
ServerName      virtual.domain.com             # 서버 이름

JkMount        /*.jsp          ajp13                # ajp13을 통해 jsp파일과 sevlet 폴더 안의 파일들을
JkMount        /servlet/*    ajp13                #  tomcat으로 보낸다.

</VirtualHost>

추가.
NameVirtualHost virtual.domain.com
을 추가해주셔야 합니다. 안그러면 두개 이상 일 때 제대로 못읽더군요.



이런 식으로 하면 인터넷 브라우져에서 virtual.domain.com으로 접속하시면 /home/domain/virtual/ 안을 읽게 됩니다. 하지만 403 Forbidden Error가 뜰 지도 모릅니다.

이것은 정말로 다른 사람들이 읽을 권한이 없는 것일 수도 있으니, *nix쪽에서는 권한을 한번 더 체크해주시면 됩니다. 그리고 아파치에서 (localhost의)DocumentRoot의 하위 디렉토리에 있는 곳을 redirect시킨 것이라면 보이지만 아니라면 403 Error가 발생합니다.

아파치는 자체적으로 '여기는 읽어도 된다'라고 지정해놓은 디렉토리 이외의 곳을 읽으려고 하면 403을 return해줍니다. 설정해주지 않으면 권한이 없다는 소리.

<Directory "/home/domain/virtual">
    Options FollowSymLinks
    AllowOverride None
    Order allow,deny
    Allow from all
</Directory>


이런 식으로 해당 디렉토리에 대한 권한을 설정해주면 됩니다. 자세한 내용은 구글에서
Options FollowSymLinks site:apache.org 등을 통해 읽어보시면 됩니다.

자, 이제 아파치 설정은 끝났습니다. html파일들은 제대로 읽을 수 있습니다. 하지만 jsp나 sevlet을 읽기 위해서는 톰캣을 설정해줘야합니다.

일단 톰캣 디렉토리로 가서 server.xml을 편집합니다.
      <Host name="localhost" appBase="webapps"
       unpackWARs="true" autoDeploy="true"
       xmlValidation="false" xmlNamespaceAware="false">
이런 식으로 호스트를 설정해줘야 합니다.

      <Host name="virtual.domain.com" appBase="webapps"
      unpackWARs="true" autoDeploy="true"
      xmlValidation="false" xmlNamespaceAware="false">
이런 식으로 host name을 바꿔줍니다.

이 이후부터 5.x 버젼과 그 이하 버젼의 설정이 조금 다릅니다.
일단 5.x 이상의 버젼을 사용하고 있으니, 이상 버젼부터 설명을 하겠습니다.

이상 버젼에서는 appBase의 의미가 별로 없습니다. 설정을 해줘도 되지만 우선권은 $(CATALINA_HOME)/conf/Catalina/[HostName]/ROOT.xml이 더 높습니다. 혹은 ROOT.xml만 읽게 됩니다.
conf/Catalina에 virtual.domain.com이라는 디렉토리를 생성하고 ROOT.xml을 만듭니다.
단순히 redirect될 주소만 적어주면 됩니다.
<Context docBase="/home/domain/virtual"
         privileged="true" antiResourceLocking="false" antiJARLocking="false">
</Context>
역시나 다른 옵션들은 검색을 통해 자세한 내용을 확인하시길..

이 정도로만 해주면 5.x  이상에서의 virtual host 설정은 끝이 납니다.

물론 ROOT.xml이 없다면 Server.xml의 설정대로 되겠죠?
appBase안의 디렉토리를 우선 읽고, context설정이 따로 없다면 appBase안의 ROOT 디렉토리를 DocumentRoot로 읽게 됩니다. Context를 따로 설정해주면 됩니다.

5.x 이하의 버젼에서는 ROOT.xml이 없을 때와 비슷하다고 합니다만, 확인해보지 않았습니다.
Creative Commons License
Creative Commons License
1 
분류 전체보기 (30)
FreeTalk (16)
Review (3)
Wish (3)
Tip (5)
1. 2. 3. href="http://cfs.tistory.com/custom/blog/0/2428/skin/images/SyntaxHighlighter.css">
4. 5. 6. 7. 8. 9. 10. 11. 12. 13. 14. 15. 16. 17. 22.