이클립스를 통해서 열심히 프로젝트를 작성했다면 이제 실제 서버에 배포를 하고 싶은 욕구를 떨칠수가 없어진다.
1. War파일 내보내기
1-1. 프로젝트를 우클릭 한 뒤 > Export > WAR file 선택
1-2. 해당하는 파일 저장경로(Destination) 선택하고, tomcat 버전 선택하고, 소스코드 포함할것인지(Export source file), 파일 덮어쓸것인지(Overwrite existing file) 체크한다. (Finish gogo)
참고로 소스코드는 포함한다는 것은 말그대로 시스템을 통째로 넘긴다고 볼수 있다.
소스코드가 없어도 배포하는데에는 전혀 문제가 없다.
test.war가 잘 생성된것을 확인했다.
2. War파일 배포하기
배포하는것은 쉽게 생각하면 쉽다.
2-1. War파일 서버로 옮기기
나는 notepad++의 nppFTP 플러그인 을 애용한다. 이유는 별도의 FTP 서버 설치를 안해도 된다.
Filezilla로 할려고 하면 열심히 FTP 서버 설치하고 각종 설정을 해줘야 한다...
참고로 firewall의 FTP 포트는 열려 있어야 한다.
단, 별도의 firewall 설정을 안했다면 all open 상태이므로 안열려 있어도 상관 없다.
notepad++ 설치 및 설정법은 아래를 참고하길 바라며
https://nullgoyatten.tistory.com/7
이미 설치한 우린 바로 넘어간다.
톰캣 설치 경로까지 이동하여 webapps까지 찾아간다.
나는/usr/local/lib/apache-tomcat-8.5.9/webapps 이다.
이제 test.war 파일의 이름을 ROOT.war로 바꾸고
webapps 경로에다가 드래그 앤 드롭해주면 끝.
그러면 자동으로 ROOT 경로에 쭈주죽 배포를 해버린다!
/usr/local/lib/apache-tomcat-8.5.9/webapps/ROOT
이제 서버의 주소로 들어가면 반가운 나의 로그인 화면이 반겨준다.
3. +docBase 설정
이클립스로 테스트할때는 아래와 같이 URL에 프로젝트명이 들어가있다.
허나 실제 서버에서 위 처럼 ROOT에다 바로 배포 하면 내 소중한 프로젝트 이름이 사라져있다.(404는 덤.)
실제로 이것때문에 삽질을 많이 했다. 모두 공부가 부족한 탓이다...
3-1. server.xml 수정하기
이 작업은 내 test.war파일을 tomcat 어디에다 배포할지 사전에 결정하는 작업이다.
편리한 수정을 위해 notepadd++을 이용한다.
경로는 tomcat설치경로/conf 위치에 있다.
나는 /usr/local/lib/apache-tomcat-8.5.9/conf
결론 부터 말하면 <Host> 태그를 찾아서 아래처럼 수정하면된다.
<Host name="localhost" appBase="webapps"
unpackWARs="true" autoDeploy="true">
<Context path="/" docBase="/test" reloadable="true"/>
간단히 설명하면
appBase="webapps" <= (war파일을 넣을 위치. 기본 설정은 webapps)
unpackWARs="true" <= (war파일을 자동으로 풀겠다.)
autoDeploy="true" <= (자동으로 배포겠다.)
<Context 이하의 docBase부분이 어디에다가 풀겠다 하는것을 작성하는 것이다.
즉, webapps/test 에다가 배포를 하겠다 하는것.
이제 test.war 파일을 webapps 경로에다가 드래그 앤 드롭 해주면 끝.
아래와 같이 webapps 아래에 test 폴더가 생기면서 잘 배포가 되었다.
실제로 테스트 해보니 404도 없어지고 잘 된다.
만약 두개의 프로젝트를 하나의 서버에 올리고자 한다면 context를 하나 더 적고 docBase만 다르게 적어주면 된다.
이후 똑같이 webapps 경로에 test2.war를 드래그 앤 드롭 해주면 끝!
<Host name="localhost" appBase="webapps"
unpackWARs="true" autoDeploy="true">
<Context path="/" docBase="/test" reloadable="true"/>
<Context path="/" docBase="/tset1" reloadable="true"/>
원본 : https://nullgoyatten.tistory.com/10