Maven을 이용한 Spring Project 배포 방법 입니다.
주의점
지금까지 Tomcat 9.0.0.M4 버전으로 진행했더니 배포 시 Socket Connect Error가 나네요.
정식이 아닌 Mildstone 버전이라 불안정한 것 같습니다.
Tomcat 8을 적극 추천 드리며, Tomcat 9.0.0.M3 버전에서는 배포가 됨을 확인 했습니다.
Tomcat 9.0.0.M3 : http://archive.apache.org/dist/tomcat/tomcat-9/v9.0.0.M3/bin/
Tomcat 8 : http://tomcat.apache.org/download-80.cgi
Tomcat 설정
Maven을 연동시키기 위해서는 Tomcat 또한 설정을 해야 합니다.
이전에 설치한 Tomcat 위치 기억 하시나요.
Spring 게시판 개발 이야기 #3 :: Tomcat 9.0.0.M4 설치
저는 /usr/local/에 설치했네요. Tomcat의 디렉토리로 이동합니다.
# cd /usr/local/apache-tomcat
여기서 배포에 대한 설정을 하기 전에 우선 웹 root 디렉토리를 변경할 것 입니다.
Tomcat의 기본 root 디렉토리는 [tomcat 디렉토리]/webapps 입니다.
이 디렉토리를 /var 디렉토리로 복사해 주세요.
# cp -R /usr/local/apache-tomcat/webapps/ /var/
그 후, webapps 디렉토리에서 ROOT, docs, examples를 삭제하고,
Web Project가 저장될 디렉토리를 생성합니다.
저는 Web Project 디렉토리의 이름을 posting으로 했습니다.
# rm -rf ROOT docs examples
# mkdir posting
이제, tomcat 디렉토리로 돌아와서 conf/server.xml 의 내용을 수정합니다.
# vi /usr/local/apache-tomcat/conf/server.xml
이 파일에서 appBase 를 찾아 아래와 같이 변경해주세요.
변경 전,
<Host name="localhost" appBase="webapps" unpackWARs="true" autoDeploy="true">
변경 후,
<Host name="localhost" appBase="/var/webapps" unpackWARs="true" autoDeploy="true"> <Context path="" docBase="posting" reloadable="true"/>
appBase는 Tomcat의 Root 디렉토리가 되며,
그 아래 docBase는 앞에서 생성한 Web Project의 디렉토리가 됩니다.
Tomcat의 Root 디렉토리 설정이 끝났습니다.
지금 부터는 Maven과 관련된 설정입니다.
우선, conf/tomcat-user.xml 파일의 끝에 접근 권한을 추가합니다.
추가할 내용은 다음과 같습니다.
<role rolename="manager-script" /> <role rolename="manager-gui" /> <role rolename="manager-jmx" /> <role rolename="manager-status" /> <user username="tomcat" password="tomcat" roles="manager-script"/>
설정한 role과 roles에 따라 Tomcat으로 접근할 수 있는 방법이 바뀌며,
하단의 username과 password에 적힌 내용으로 원격지에서 배포가 가능해집니다.
후에 Maven 설정할 때 위에 적힌 내용을 그대로 적어주면 됩니다.
저는 편의상 "tomcat"으로 통일했지만, 실제 적용할 때는 좀더 강력하게 설정해주세요.
파일을 저장한 후에 tomcat을 재 시작해주시면 됩니다.
# service tomcat restart
마지막으로 Maven에서 배포지 설정을 하기 위해 서버의 IP를 미리 확인해주세요.
# ifconfig
Maven 설정(STS or Eclipse)
Maven은 프로젝트에 있는 pom.xml 파일을 수정하면 됩니다.
프로젝트의 제일 밑에 있어요.
Target 폴더 안에 있는 건 아닙니다.
pom.xml 파일에서 plugins 부분의 하단에 아래 내용을 추가합니다.
org.apache.tomcat.maven tomcat7-maven-plugin 2.2 /${project.artifactId} http://192.168.23.123:8080/manager/text tomcat tomcat
여기서 설정은 다음과 같이 합니다.
Path의 경우
Tomcat의 Web Root 디렉토리를 기준으로 배포가 될 위치입니다.
저기에 적힌 이름으로 배포가 이루어지며, 현재 설정인
${project.artifactId} 는 현재 패키지의 마지막 이름입니다.
(이 포스팅의 경우, com.posting.board 이기 때문에 board 로 배포가 됨.
저는 posting 디렉토리로 배포하기 때문에 posting으로 변경하였습니다.)
url의 구성은
http://[서버_IP]:[Tomcat_PORT]/manager/text
이며, username과 password는
tomcat-user.xml에 설정한 내용과 동일하게 적습니다.
파일을 저장한 후, Build 에 대한 설정을 합니다.
프로젝트 명 우 클릭 -> Run As -> Maven Build
Name에는 Build 이름을, Goals에는 tomcat7: redeploy 라고 적은 후 Apply와 Run을 클릭합니다.
Maven 배포 완료 화면
페이지 화면
현재 Tomcat Web Root 디렉토리 상태
posting.war 파일이 배포된 파일이며 Tomcat이 자동으로 posting 디렉토리로 프로젝트를 저장합니다.
그와 동시에 ROOT 디렉토리로 프로젝트를 저장하기 때문에 posting 디렉토리로 접근하지 않아도 됩니다.
보기 싫으면 지워도 무방합니다.
참고 페이지
이클립스 상에서 maven 을 이용해 원격서버로 배포하기