Moneycomb 서비스를 개발하면서 메인 도메인인 nabakcompany.com에 서브 도메인으로 moneycomb.nabakcompany.com을 추가하고, 같은 메인 도메인과 같은 웹 서버에서 리스닝 포트 번호만 달리해서 서비스를 하려고 했는데, DNS에 대한 이해가 부족한 탓인지 그게 안된다는 걸 이제야 알았다. 그러니까 포트 번호를 숨길 수는 없다.
톰캣 문서와 검색을 통해서 서버 아이피가 동일하고, 서브 도메인이 다른 경우에는 웹 서버에서 가상 호스트를 추가하여, 각각의 서브 도메인에 대해 각각의 웹 애플리케이션을 제공할 수 있다는 것을 알게 되었다.
현재 서버는 Apache 웹 서버 없이 Apache Tomcat 7로만 구동되고 있다.
| server.xml 파일에 호스트 추가
$CATALINA_HOME 에 위치한 conf 폴더 내에 서버 설정을 위한 server.xml 파일이 있다. 호스트를 추가하기 위해서는 server.xml 파일을 아래와 같이 수정한다.
Engine 엘리먼트 내에 Host 엘리먼트를 추가한다.
톰캣을 설치한 후 설정을 수정하지 않았다면 파일의 끝부분에 localhost Host가 있다. 서브 도메인을 위한 호스트는 그 아래에 추가한다.
Host의 속성으로 name에 DNS 호스팅 서비스(혹은 네임 서버)에서 추가한 서브 도메인을 입력하고, appBase는 웹 애플리케이션이 위치할 디렉토리를 지정한다. 상대경로로 입력할 경우 $CATALINA_HOME 아래가 기준이 된다.
다른 속성에 대한 설명은 아파치 톰캣7 문서를 참고.
| 디렉터리 및 ROOT.xml 파일 추가
톰캣 5 이하에서는 server.xml 내에 Host 엘리먼트를 추가하면서 그 안에 Context 엘리먼트를 함께 추가해서 호스트 컨텍스트 정보를 포함시켰는데, 톰캣 6이상 부터는 따로 분리할 것을 권고한다.(라는 것을 다른 블로그에서 보았다..) 1
$CATALINA_HOME/conf/Catalina 에 서브 도메인 이름과 같은 디렉터리를 만든다.
server.xml에서 설정한 서브 도메인이 sub.domain.com 이므로 디렉터리 이름도 sub.domain.com 이다.
/var/lib/tomcat7/conf/Catalina$ mkdir sub.domain.com
(위의 /var/lib/tomcat7은 톰캣이 설치된 경로, 일반적으로는 /usr/local/apache-tomcat-7.x.x)
그리고 만든 디렉터리 안에 ROOT.xml 파일을 생성하고 아래와 같이 입력한다.
docBase 속성은 컨텍스트의 루트로 사용될 애플리케이션이 위치한 경로이고,
privileged 속성은 값이 true일 때. 매니저 서블릿 같은 컨테이너 서블릿을 사용할 수 있도록 허용한다. (Set to true to allow this context to use container servlets, like the manager servlet. - 라고 되어있는데 무슨 의미인지 정확하게는 모르겠다..)
| 웹 애플리케이션 배치
docBase에 설정한 경로에 웹 애플리케이션을 배치하면 webapps에 있는 것 맨치롬 서브 도메인으로 접속할 수 있다.
| 문제
Host 엘리먼트의 appBase와 Context의 docBase의 정확한 기능이나.. unpackWARs 속성 값을 true로 했을 때 어디에 위치한 war 파일의 압축이 풀리는 건지 모르겠다.
appBase나 docBase에 넣어봤지만 어디에서도 압축이 풀리지 않아서 그냥 tar 명령어로 풀어서 배치했다. -_- (왜 있는데 쓰질 못하니!)
매번 파일럿 프로젝트만 개발하고 운영 단계까지 넘어가지 않다보니, 그냥 '돌아만'가는 서버 구축을 하다가, '제대로 돌아' 가는 서버를 구축하려니 공부해야할 것들이 점점 더 쌓이는 것 같다. 웹 서버 로드밸런싱이나, DB 서버 확장 등 어디서부터 시작해야할 지 막막하다.
잘못된 내용이나, 빠진, 부족한 내용에 대한 태클은 환영입니다. :)
References
- 아파치 톰캣 7 문서 - http://tomcat.apache.org/tomcat-7.0-doc
- 톰캣 위키 - http://wiki.apache.org/tomcat/TomcatDevelopmentVirtualHosts
- sjune님 블로그 글 - http://www.sjune.net/archives/807
- 심심한 아름구리님 글 - http://areumgury.blogspot.kr/2013/02/tomcat.html
- 도메인에 따른 Host, Context 처리 - http://wonzopein.com/39
- 톰캣 가상 호스트 추가 - http://blog.naver.com/PostView.nhn?blogId=tirupopo&logNo=60138797325
- 톰캣 Document Root 설정 방법 - http://wiki.gurubee.net/pages/viewpage.action?pageId=1508019
- 임디디님 블로그 글 - http://blog.naver.com/PostView.nhn?blogId=dlaelel1&logNo=100106568667&redirect=Dlog&widgetTypeCall=true
- http://www.sjune.net/archives/807 [본문으로]
'밤을 지새다 > Web' 카테고리의 다른 글
[Apache Tomcat] POST 폼 전송 시 Parameter Collection의 크기, 갯수 제한 (3) | 2014.04.26 |
---|---|
서버 시간대(Time Zone) 설정 (0) | 2014.03.13 |
파일을 다운로드 하도록 하는 Response Header (0) | 2013.10.17 |
자바스크립트 객체와 Json 매핑 (0) | 2013.08.05 |