티스토리 뷰

리눅스 서버에 SVN을 이용해서 SpringBoot(gradle) war 파일 배포하는 방법에 대해 간략하게 알아보겠습니다.


1. Repository 생성

  • SVN에 deploy라는 폴더를 생성 후, checkout 을 진행합니다.

 

2. build.gradle

  • build.gradle 파일 수정
plugins {
    id 'java'
    id 'org.springframework.boot' version '2.6.15'
    id 'io.spring.dependency-management' version '1.0.11.RELEASE'
    id 'war'
}

apply plugin: 'war'
bootWar {
    archiveBaseName = '-'
    archiveFileName = 'myApp.war'
    archiveVersion = "1.0.0"
}

group = 'myApp.qr'
version = '0.0.1-SNAPSHOT'

java {
    sourceCompatibility = '1.8'
}

repositories {
    mavenCentral()
}

dependencies {
    ...
}

// bootWar 태스크가 완료된 후 copyWar 태스크 실행
task copyWar(type: Copy) {
    dependsOn 'bootWar'
    from "${project.buildDir}/libs/myApp.war"
    into file("${project.rootDir.parent}/deploy")
    rename { 'myApp.war' }
    doLast {
        println("Copied myApp.war to ${project.rootDir.parent}/deploy")
    }
}

// bootWar 태스크가 완료된 후 copyWar 태스크 실행
tasks.named('bootWar') {
    finalizedBy 'copyWar'
}

tasks.named('test') {
    useJUnitPlatform()
}

// war 태스크 비활성화
tasks.named('war') {
    enabled = false
}
  • copyWar task를 작성합니다. 해당 task는 bootWar task 가 완료된 이후에 libs 폴더 하위에 생긴 war 파일을 원하는 경로에 옮기는 작업을 합니다.
  • tasks.named('bootWar')를 통해 copyWar를 실행시킵니다.
  • tasks.named('war')의 enabled 속성을 통해 2개의 war 파일이 생기지 않도록 설정합니다.



3. 커밋

  • svn commit -> 터미널 접속
     - deploy 폴더로 이동해 war 파일을 커밋한 후, 터미널을 통해 서버에 접속합니다.

 

4. server.xml

  • 원하는 경로에 svn checkout 을 진행하고 톰캣의 server.xml 파일을 수정합니다.
<Host name="localhost" appBase="/home/deploy" unpackWARs="true" autoDeploy="false" deployOnStartup="false">
	<Context path="/" docBase="myApp.war" reloadable="true" />

	<Valve className="org.apache.catalina.valves.AccessLogValve" directory="logs"
       	prefix="localhost_access_log" suffix=".txt"
       	pattern="%h %l %u %t &quot;%r&quot; %s %b" />

</Host>



5. SVN update

  • svn update 명령어를 통해 war 파일을 update 합니다. update, stop, start 같은 명령어들은 alias로 관리하면 편리합니다.
alias deploy='svn update /home/deploy'
alias log='tail -1000f /home/tomcat/logs/catalina.out'
alias start='/home/startup.sh'
alias stop='/home/stop.sh'

 

감사합니다.

최근에 올라온 글
Total
Today
Yesterday