일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
1 | 2 | |||||
3 | 4 | 5 | 6 | 7 | 8 | 9 |
10 | 11 | 12 | 13 | 14 | 15 | 16 |
17 | 18 | 19 | 20 | 21 | 22 | 23 |
24 | 25 | 26 | 27 | 28 | 29 | 30 |
- open cursors
- docker 네트워크
- EXK
- 자바개발
- Value Object(VO)
- 프로젝트관리
- SI와 SM 차이점
- angular 6
- SpringBoot
- SW설계
- tvheadend
- sonoff
- CBD 단점
- maven #junit
- 객체설계
- ASUS 공유기
- 소프트웨어설계
- 실해하지 않는
- SW분석
- 구글캘린더 검색
- 자바튜닝
- Tomcat error-page version
- Data Transfer Object(DTO)
- 경력개발자
- 자바스크립트 JQuery
- USB-C충전
- LG그램2017
- 네트워크 기본개념
- USB-C to HDMI 아답터
- LAN WAN
- Today
- Total
대빵's Blog
Tomcat 7 에서 ROOT 로 Deploy 하기 본문
Tomcat 7 CentOS 에서 ROOT 에 Deploy 하기 위해 이것저것 글을 찾아봤는데 계속 에러가 나서 삽질하다가 해결책을 발견해서 적어둠...
일단 환경은 deploy 소스가 war 로 되어 있어서 tomcat 이 기동시에 war를 unpack 해서 읽어 들이는 구조임
내가 원하는 것은 tomcat 에서 aaa.war 를 http://ip주소:포트/aaa 가 아닌 http://ip주소:포트/ 로 ROOT 로 올라오게 하는 것임
Tomcat 7 에서는 server.xml 을 수정해서 docBase 를 지정하는 것이 아닌 별도의 Context 파일을 만들어서 Context 를 server.xml 과 분리 시키는 것을 권장함
작업순서는
1. @CATALINA_HOME/webapps/ROOT 를 다른곳에 백업해두고 지운다. 이유는 나중에 나옴
2. aaa.war 파일을 서버에 올린다. 이때 평소처럼 webapps 폴더 밑에 올리면 안된다...이것 땜시 무지 삽질했다... 임의로 /deploy 폴더 밑에 놔두었다고 하자
3. server.xml 파일을 확인한다. 아마 아무것도 건드리지 않았다면 '<Host name="localhost" appBase="webapps" unpackWARs="true" autoDeploy="true">' 뭐 대충 이렇게 되어 있을 것이다. 난 host가 localhost 로 할것이지만 실 도메인 사용자는 도메일을 지정해야 한다.
4. 이제 Host를 생성하자...여기서 부터 중요한데 @CATALINA_HOME/conf/Catalina 폴더가 웹사이트에 접속하는 사용자가 접근하는 url 이라고 보면된다. 나는 개발서버에 작업하므로 ..../Catalina/localhost 로 작업했는데 만약 실제 도메인이 있는 경우 ...../Catalina/abc.domain.com 이런식으로 폴더를 만들어서 해야 한다.(3번에서 server.xml 에 지정한 도메인명과 같아야 한다.)
5. Host 밑에 Context를 생성하자. Context는 Host 폴더밑에 aaa.xml 이런식으로 만들어 진다. 그런데 이렇게 xml 파일을 만들면 aaa 라는 Context 가 Deploy 되기 때문에 사용자는 url 을 http://ip주소:포트/aaa 이렇게 치고 들어와야 한다. 그래서 aaa.xml 이 아닌 ROOT.xml 로 만들어야 http://ip주소:포트/ 이렇게만 치고 들어올수 있다.
6. ROOT.xml 에 내용을 채운다. 난 aaa.war 파일을 ROOT Context로 지정하고 /deploy 폴더에 올릴것 이므로 아래처럼 작성한다.
<?xml version="1.0" encoding="UTF-8"?>
<Context crossContext="true" path="" docBase="/deploy/aaa" reloadable="true">
</Context>
7. tomcat 기동한다. 기동하면 tomcat 은
첫째, @CATALINA_HOME/conf/Catalina 폴더를 뒤져서 localhost 에 ROOT.xml 을 읽어 들인다. 그러면 사용자가 http://localhost:포트/ 이렇게 치고 들어오겠구나 알게 되는 것이다.
두번째로 ROOT.xml 을 읽어서 docBase 가 있는 곳을 찾는다. 거기에 aaa.war 가 있다
세번째로 server.xml 을 읽어서 포트, appBase 그리고 unpack 을 읽어들인다. 그러면 url 포트 지정하고 appBase에 (여기서는 @CATALINA_HOME/webapps)에 ROOT 라는 폴더를 생성하고 (왜냐하면 ROOT.xml 로 지정했으므로) docBase 의 aaa.war 를 ROOT 폴더에 풀어 놓는다(이게 아까 처음에 ROOT 폴더를 다른곳으로 백업해서 옮겨 놓는 이유이다)
그러면 내가 원하는 도메인에 원하는 포트로 원하는 Context 를 지정해서 서버가 올라온다...
결론 : 장황하게 설명했는데 검색해서 찾은 대부분은 글들이 각각의 설정작업들이 어떤 의미를 가지는 지 적혀있지 않아서 이것저것 삽질이 많았다. 그래서 잊어먹지 않을겸(아마 내일은 잊어먹을 것이다.이노무 기억력이란 금붕어도 아니고...........ㅡㅡ;) 여기에 적어놓는다...
* 참고로 webapps 밑에 aaa.war 를 놓으면 tomcat은 Context 지정한것을 무시하고 그냥 aaa Context 로 올린다. 즉 ROOT Context 고 뭐고 필요없이 그냥 war 파일명으로 Context를 올리려면 webapps 폴더 밑에 aaa.war 파일을 올려놓기만 하면 된다.
'개발관련' 카테고리의 다른 글
Spring mvc, restful, web.xml 설정하기 (0) | 2016.11.09 |
---|---|
Spring Junit 테스트 에러 해결하기 (0) | 2016.07.20 |
구글 엑셀에서 COUNTIFS 에 공백아님(is not blank) 조건 표현하기 (0) | 2016.05.19 |
프로젝트에서 현명하게 협업하는 방법 (0) | 2015.03.23 |
사용자가 원하는 것 (0) | 2014.11.26 |