개요
개발한 프로젝트를 dev 환경에서 테스트해보기 위해 EPC에 배포를 진행해야 했습니다.
이에 따라 Maven 빌드를 진행하여 war 파일을 생성하고 EPC 톰캣 내 ROOT.war 파일과 바꿔치기하여 배포를 진행하였고 해당 과정을 간단하게 공유해보겠습니다.
Maven Wrapper를 통해 war 파일 생성
A. Maven과 Maven Wrapper란?
Maven은 Gradle과 같이 build tool 중 하나입니다.
Maven Wrapper는 개발자들이 Maven을 별도의 환경에서 개발할 때 local machine에 별도로 설치를 원하지 않거나 Maven의 특정 버전을 통해 빌드하길 원할 때 사용됩니다ㅣ.
즉, Maven Wrapper를 사용할 경우 특정 버전 혹은 개발 환경에 의존하지 않고 독립적으로 실행이 가능합니다.
B. Maven Wrapper 구성하는 방법
Maven Wrapper는 아래의 플러그인을 통해 간단하게 설치가 가능합니다.
https://github.com/takari/takari-maven-plugin
빌드하고 싶은 프로젝트 디렉토리로 이동 후 해당 위치에서 아래의 명령어를 실행하면 사진처럼 .mvn 디렉토리와 mvnw, mvnw.cmd 파일을 생성해줍니다.
mvn -N io.takari:maven:wrapper
여기서 mvnw와 mvnw.cmd는 Maven Wrapper를 실행하기 위한 script 파일입니다.
- mvnw: mvnw는 Maven 대신 사용되는 실행 가능한 unix shell script
- mvnw.cmd: mvnw의 Window 배치 버전 shell script
.mvn 디렉토리 내에는 wrapper 디렉토리가 생성되며 안에는 MavenWrapperDownloader.java, maven-wrapper.jar, 그리고 maven-wrapper.properties 파일이 존재합니다.
- MavenWrapperDownloader.java: 해당 파일을 컴파일 및 실행하여 Maven 다운로드 진행
- maven-wrapper.jar: wrapper shell scripts로부터 maven을 실행하고 다운로드하는 데 사용
- maven-wrapper.properties: Maven이 존재하지 않는 경우 다운로드하기 위한 URL을 명시하기 위해 사용
정리하자면, 위 세 개의 파일들을 통해 Maven이 설치되어있지 않더라도 특정 버전과 classpath를 가지고 공통된 Maven을 다운로드 및 사용할 수 있습니다.
* 저 같은 경우 java 파일은 없었습니다.
C. Maven Wrapper 실행하기
Maven Wrapper 파일들을 통해 아래와 같이 Maven을 빌드 및 실행할 수 있습니다.
- Maven/target clean 및 build
- ./mvnw clean package
- Maven으로 SpringBoot 백그라운드 실행
- /mvnw spring-boot:run &
- mvnw로 설치된 maven 배포 경로
- ~/.m2/wrapper/dists
저는 Maven 빌드를 통해 war 파일을 생성하는 것이 목적이므로 ,/mvnw clean package 명령어를 통해 현재 프로젝트 형상으로 war 파일을 말아서 생성하였고 해당 war 파일은 프로젝트 폴더 내 target 폴더 아래 위치합니다.
* war 파일명을 바꾸고 싶을 경우 pom.xml 내 <build> 태그 내 <finalName> 태그를 추가해주시면 됩니다.
Tomcat에서 배포하는 방법
당연하게도 일단 서버 내 tomcat이 설치된 폴더로 이동해야 합니다.
저 같은 경우 경로가 /opt/tomcat/webapps였으므로 아래의 명령어를 통해 해당 폴더로 이동했습니다.
cd /opt/tomcat/webapps
war 파일을 해당 위치에 넣은 후 tomcat이 재기동되면 자동으로 압축이 풀리면서 배포가 진행이 됩니다.
그리고 tomcat은 별도의 설정이 없을 경우 자동으로 webapps 폴더 내 ROOT 폴더를 root로 실행합니다.
따라서, 저처럼 war 파일을 ROOT라는 이름을 사용하게 되면 별도의 설정을 할 필요가 없습니다.
만약, 다른 이름으로 war 파일을 생성했을 경우 아래와 같이 진행해줘야 합니다.
- webapps 폴더 내 war 파일 위치
- /opt/tomcat/conf/server.xml을 vi나 vim을 통해 열고
- <Host> 태그 내부 <Context path="[경로]" docBase="[war 파일명]" reloadable="false"></Context> 추가
- 해당 설정은 tomcat 서버에서 하나의 가상 경로를 추가하는 설정
- path="/"로 설정하면 ROOT 폴더 대신 등록한 폴더가 실행
<Host name="localhost" appBase="webapps" unpackWARs="true" autoDeploy="true">
<Context path="/" docBase="example" reloadable="false" > </Context>
</Host>
앞서 말했다시피 war 파일을 덮어 씌운 후에는 톰캣을 재기동시켜줘야 합니다.
/opt/tomcat/bin 폴더로 이동하여 아래 명령어를 입력하면 tomcat이 재기동됩니다.
./shutdown.sh
./startup.sh
혹은
service tomcat restart
* 저 같은 경우 FileZilla를 통해 war 파일을 서버로 옮겼습니다.
https://filezilla-project.org/
참고
https://sanghye.tistory.com/34
https://www.lifencoding.com/web/28?p=1
https://oingdaddy.tistory.com/344
'[DEV] 기록' 카테고리의 다른 글
[Java] 위도, 경도 간 실제 거리 구하는 방법 (0) | 2022.07.10 |
---|---|
[MacOS] 원하는 쉘로 변경하는 방법 (0) | 2022.06.07 |
[linux] linux 명령어 정리 (2) | 2022.06.01 |
[Java] zip 파일에서 원하는 파일 추출해서 저장하는 방법 (0) | 2022.05.29 |
[Java] UTF-8로 파일 작성하는 코드 (0) | 2022.05.29 |