Java/JSP Web Application을 WAR 파일로 만든 후 Tomcat 웹 애플리케이션 서버에 배포하는 법.
본 포스팅은 다음 상황에서의 설명이다.
-. Ubuntu 16.04 LTS 버전
-. Tomcat 8.0
-. 톰캣 가상 호스트를 이용해서 joe.iptime.org에 대한 웹 루트를 /home/joe/www/ROOT/로 변경하였다.
(톰캣 가상 호스트 설정하는 법은 여기를 참조)
Java/JSP로 개발된 웹 애플리케이션을 실제 서버에 배포할때 WAR 파일을 만들어 배포하게 된다. 그런데 톰캣 가상호스트를 만들어 디폴트 웹 root 디렉토리를 /home/joe/www/ROOT/로 변경하였을 경우 WAR 파일을 배포하는 방법에 대한 것이다.
Ubuntu의 경우 Tomcat의 웹 루트(DocumentRoot)는 /var/lib/tomcat8/webapps/ROOT/이다. 따라서 가상호스트를 만들지 않은 상황에서는 WAR 파일을 /var/lib/tomcat8/webapps 폴더로 FTP 등을 이용해서 올리면 자동으로 WAR 파일을 압축을 풀어서 해당 웹 애플리케이션이 배포가 된다. 만일 압축 해제및 배포가 자동으로 되지 않는다면 터미널 창에서 다음과 같이 tomcat을 재시작해 주면 정상적으로 배포가 된다.
# service tomcat8 restart
그런데 가상 호스트를 만들을 때는 WAR 파일을 어디로 올려야 되는가?
/home/joe/www로 WAR 파일을 올려도 WAR 파일이 자동으로 압축해제 및 배포가 되지를 않는다. 톰캣을 재시작해도 마찬가지이다.
/etc/tomcat8/server.xml을 열어보면 unpackWARs="true" autoDeploy="true"로 되어 있음에도 불구하고 /home/joe/www에 WAR 파일을 업로드해도, 혹은 톰캣을 재시작해도 WAR파일이 자동으로 배포가 되지 않는다.
<Host name="joe.iptime.org" appBase="/home/joe/www"
unpackWARs="true" autoDeploy="true">
... 중 략 ...
</Host>
이런 경우 다른 더 좋은 방법이 있는지 모르겠으나 톰캣의 디폴트 웹 root인 /var/lib/tomcat8/webapps/에 WAR 파일을 업로드하면 자동으로 배포가 이루어진다. 이렇게 압축이 풀려진 해당 디렉토리와 그 하위 디렉토리 및 전체를 가상 호스트를 만든 해당 웹 루트(여기서는 /home/joe/www/ROOT/)에 복사하는 수 밖에는 없다. Flower.WAR 파일이라고 한다면 이 파일을 /var/lib/tomcat8/webapps/로 업로드하면 이 디렉토리에 Flower라는 새로운 디렉토리가 생성이 되고 그 하위에 개발했던 웹 애플리케이션의 파일과 해당 디렉토리들이 압축이 풀려져 있다. 따라서 다음 명령을 이용해서 가상 호스트의 해당 웹 root로 복사를 하면 정상적으로 웹 애플리케이션이 구동이 된다.
# pwd
/var/lib/tomcat8/webapps
# cp -r ./Flower/* /home/joe/www/
이클립스에서 WAR 파일을 만드는 방법은 해당 프로젝트 위에 마우스 우측 클릭하여 다음 그림과 같이 진행하면 WAR 파일을 얻을수 있다.
'JSP & Servlet' 카테고리의 다른 글
Several ports (8005, 8181, 8009) required by Tomcat v7.0 Server at localhost are already in use 에러 해법 (0) | 2018.05.12 |
---|---|
JSP에서 JSTL의 forTokens 태그의 간단 예제 (0) | 2018.05.05 |
JSP에서 MySQL을 이용하여 Database Connection Pool(DBCP) 구현하기 (0) | 2018.05.02 |
JSP(Java)에서 MySQL 연동하기 (0) | 2018.05.01 |
Servlet에서 초기화 파라미터 사용하기 (0) | 2018.04.26 |