본문 바로가기
리눅스&서버/우분투

우분투 - 스프링 프로젝트 메이븐 빌드 톰캣 배포

by 인생여희 2020. 11. 24.

 

 

우분투 16에서 스프링 프로젝트를 SVN에 올려서 메이븐으로 빌드 후 톰캣으로 배포하는 과정

 

※시작전에 우분투 서버에 톰캣, java, svn, maven이 설치되어 있고 관련 환경변수 및 셋팅이 되었는지 확인

1.우분투 - 톰캣 설치(Tomcat Manager 설치)

2.우분투 - Java 설치 (환경변수 설정)

3.우분투 - Maven 설치(환경변수 설정)

4.우분투 - SVN 설치(아파치 웹서버와 연동)

 

 

1.스프링 프로젝트 생성 및 설정

1-1.스프링 레거시 프로젝트 생성 -> 톰캣 서버 더블 클릭 ->Modules -> path 경로 / 으로 변경.

 

1-2.프로젝트 우클릭 -> 프로퍼티스 클릭 -> web project settings 클릭 -> context root / 으로 변경.

 

1-3.메이븐 버전과 자바 버전  1.8 버전으로변경.

//pom.xml에서 java-version 태그 1.8변경

<properties>
<java-version>1.8</java-version>
</properties>
//pom.xml에서 source, target 태그 1.8
<plugin>
  <configuration>
    <source>1.8</source>
    <target>1.8</target>
  </configuration>
</plugin>

 

1-4.svn에 프로젝트(Test3) 연동 

프로젝트 우클릭 -> Team -> share project -> svn -> 리파지토리 경로 설정 및 선택 -> commit comment 작성 -> save

 

아래와 같이 메시지가 출력된다. 

mkdir --parents -m "나의 첫 프로젝트 " [svn://서버IP주소/repository/Test3]
checkout svn://115.71.239.29/repository/Test3 -r HEAD --depth=immediates --force
Checked out revision 16.

 

참고로 spring 프로젝트에서 web.xml 위치를 아래와 같이 맞춰주는 것이 좋다.

src - main - webapp - WEB-INF - web.xml 

(WEB-INF 폴더 안에 web.xml 파일과 classes, lib 폴더가 위치)

 

 

1-5. svn에 Test3 프로젝트 commit

프로젝트 우클릭 -> Team -> Commit 클릭 -> 파일 전체 선택 -> Commit

 

 

 

2.우분투 개발 서버에서 svn check out

2-1. svn에 업로드한 프로젝트가 출력확인

svn list svn://서버IP주소/repository

 

2-2. svn에서 프로젝트 가져오기

우분투 root 경로에서 workspace 라는 폴더 만들고 그 안에 svn check out을 받는다.

mkdir workspace

cd workspace

svn co svn://서버IP주소/repository/Test3

 

위 명령어를 실행 하면, svn에 올린 프로젝트 폴더가 workspace 안에 보일 것이다.

 

check out 된 Test3 프로젝트 폴더

 

2-3. 프로젝트 폴더 안으로 들어가서 pom.xml 확인

cd Test3

 

pom.xml 확인

 

3.메이븐 빌드 및 톰캣 배포

3-1. 메이븐 빌드

pom.xml이 있는 위치에서 메이븐 빌드 진행

mvn clean package -Dmaven.test.skip=true

 

빌드가 성공적으로 끝나면 아래와 같은 메시지가 뜬다. 

[INFO] Compiling 1 source file to /root/workspace/Test3/target/classes
[INFO] Packaging webapp
[INFO] Assembling webapp [my] in [/root/workspace/Test3/target/my-1.0.0-BUILD-SNAPSHOT]
[INFO] Processing war project
[INFO] Copying webapp resources [/root/workspace/Test3/src/main/webapp]
[INFO] Webapp assembled in [821 msecs]
[INFO] Building war: /root/workspace/Test3/target/my-1.0.0-BUILD-SNAPSHOT.war
[INFO] WEB-INF/web.xml already added, skipping
[INFO] ------------------------------------------------------------------------
[INFO] BUILD SUCCESS

 

ls -al 명령어로 확인해보면 target이라는 폴더가 만들어 진것을 알 수 있다. target안으로 들어가보자.

 

my-1.0.0-BUILD-SNAPSHOT.war 파일과 my-1.0.0-BUILD-SNAPSHOT폴더가 보이면 메이븐 빌드가 성공적으로 진행된 것이다.

 

 

3-2. 배포 방법 두 가지

참고로 메이븐으로 빌드해서 톰캣으로 배포하는데 여러가지 방법이 있다. 그중에서 첫번째는 메이븐 빌드 후, target 폴더에 생성되는 war파일을 이용하는 것이다. 메이븐은 프로젝트폴더/target/my-1.0.0-BUILD-SNAPSHOT폴더 안의 라이브러리 파일, 클래스 파일, jsp, js , css 등 을 기반으로 프로젝트폴더/target 경로에 my-1.0.0-BUILD-SNAPSHOT.war 파일을 생성한다. 이 war파일을 /톰캣경로 /webapps 폴더에 넣어준다. 우분투16 기준으로 apt install tomcat8 을 했다면 톰캣 webapps 폴더경로는 아래와 같을 것이다.

/var/lib/tomcat8/webapps

이곳에다가 빌드된 war 파일을 넣어주면 톰캣이 실행될때, 그 위치에 my-1.0.0-BUILD-SNAPSHOT 폴더가 생성이 되고, 그 폴더 안에 관련 실행가능한 파일들이 구조적으로 폴더 안에 자동생성이 된다.

 

두번째는 메이븐 빌드로 생성된 my-1.0.0-BUILD-SNAPSHOT 폴더를 톰캣의 /webapps 폴더로 이동 후 폴더명을 ROOT로 

변경해 주는 것이다. 두번째 방법으로 배포를 진행해 보자. 먼저 톰캣의 /webapps 위치에 있는 ROOT 폴더를 삭제해주고, 메이븐 빌드로 생성된 my-1.0.0-BUILD-SNAPSHOT 폴더를 /var/lib/tomcat8/webapps 이동 후 폴더이름을 ROOT로 변경해보자.

 

 

3-3. Test3 프로젝트/target/ 위치에서 배포 진행

rm -rf /var/lib/tomcat8/webapps/ROOT

mv my-1.0.0-BUILD-SNAPSHOT /var/lib/tomcat8/webapps/ROOT

 

톰캣의 webapps 폴더에 가면 ROOT 폴더가 생겨있음을 알 수 있다.

ROOT안에 META-INF  WEB-INF 폴더가 있다

 

 

3-4. 톰캣 재실행

sudo service tomcat8 restart

 

 

3-5. 브라우저 확인

외부에서 브라우저를 열어서 아래 주소를 입력해보자.

당연히 8080 포트는 열려있어야 한다.

http://서버IP주소:8080

 

 

톰캣 배포 성공

 

 

4. 쉘스크립트로 배포 자동화

매번 프로젝트를 배포할때마다 이런식으로 메이븐 빌드 후 톰캣에 배포해도 좋다. 상관이 없다. 하지만 실제 업무에서는 배포를 하루에 수십번 넘게 하는 경우도 있다.그래서 최대한 빌드와 배포를 간소화 할 수 있게 쉘스크립트를 만들어 보자.

(요즘 실제 업무에서는 젠킨스 같은 빌드 배포 자동화툴을 사용한다…)

 

 

4-1. 프로젝트 폴더로 이동

cd /workspace/Test3

 

 

4-2. 쉘 스크립트를 생성

vi autobuild.sh

 

 

4-3. 쉘 스크립트 작성

쉘 스크립트내용을 위에서 작성한 명령어를 정리해서 순차적으로 넣는다.

#!/bin/bash

#svn 업데이트
svn update

#메이븐 빌드
mvn clean package -Dmaven.test.skip=true

#톰캣 정지
sudo service tomcat8 stop

#톰캣의 ROOT 폴더 삭제
rm -rf /var/lib/tomcat8/webapps/ROOT

#빌드된 폴더 톰캣의 webapps 경로에 ROOT이름으로 폴더 생성
mv target/my-1.0.0-BUILD-SNAPSHOT /var/lib/tomcat8/webapps/ROOT

#톰캣 재시작
sudo service tomcat8 start

#로그 출력
tail -500f /var/lib/tomcat8/logs/catalina.out

 

4-4. 쉘 스크립트 권한 변경

프로젝트 폴더 위치에서 방금 만든 쉘 스크립트 권한을 변경한다.

chmod 755 autobuild.sh 

 

 

스프링 프로젝트에서 컨트롤러 부분과 화면을 수정 한뒤, 커밋한다.(자유롭게 변경해보자.)

 

 

4-5. 쉘스크립트 실행

우분투 개발 서버 Test3 프로젝트 폴더 위치에서 아래 명령어 실행한다. 

./autobuild.sh 

 

 

메이븐 빌드와 톰캣 배포가 되면서 로그들이 올라가는 것이 보일 것이다.

 

 

4-6. 배포 확인

 

수정된 화면

 

출력된 톰캣 로그 - (브라우저에 접속할때마다 수정한 로그가 아래와 같이 찍히는것을 볼 수 있다.)

 

 

※빌드 배포 과정에서 문제가 있으면 아래 포스팅 참고해보자.

1.우분투 - 톰캣 설치(Tomcat Manager 설치)

2.우분투 - Java 설치 (환경변수 설정)

3.우분투 - Maven 설치(환경변수 설정)

4.우분투 - SVN 설치(아파치 웹서버와 연동)