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 파일을 얻을수 있다.






+ Recent posts