우분투 16에서 스프링 프로젝트를 SVN에 올려서 메이븐으로 빌드 후 톰캣으로 배포하는 과정
※시작전에 우분투 서버에 톰캣, java, svn, maven이 설치되어 있고 관련 환경변수 및 셋팅이 되었는지 확인
1.우분투 - 톰캣 설치(Tomcat Manager 설치)
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 안에 보일 것이다.
2-3. 프로젝트 폴더 안으로 들어가서 pom.xml 확인
cd Test3
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. 배포 확인
※빌드 배포 과정에서 문제가 있으면 아래 포스팅 참고해보자.
'리눅스&서버 > 우분투' 카테고리의 다른 글
mac VirturBox 네트워크 설정(ssh 외부접속) (0) | 2021.02.14 |
---|---|
우분투 - 메이븐 총정리 - maven을 알아보자 (0) | 2020.11.25 |
우분투 - Maven 설치(환경변수 설정) (0) | 2020.11.23 |
우분투 - 젠킨스 설치 (0) | 2020.11.22 |
우분투 - SVN 설치(아파치 웹서버와 연동) (2) | 2020.11.21 |