지난시간에 VM 한대를 더 열어서 서버설치 후 기동까지 하는 모습을 보였다 이번시간에는 간단한 어플리케이션을 만든뒤 이를 수동으로 jar 로 만들어서 tomcat 에 넣어준뒤 배포를 해보자
개발환경
jdk11
spring boot 2.7.1
packaging war
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
<?xml version="1.0" encoding="UTF-8"?>
<project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 https://maven.apache.org/xsd/maven-4.0.0.xsd">
<modelVersion>4.0.0</modelVersion>
<parent>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-parent</artifactId>
<version>2.7.1</version>
<relativePath/> <!-- lookup parent from repository -->
</parent>
<groupId>com.demo</groupId>
<artifactId>SpringBoot-Web-Jenkins-Project</artifactId>
<version>0.0.1-SNAPSHOT</version>
<name>SpringBoot-Web-Jenkins-Project</name>
<description>Project_Amadeus</description>
<packaging>war</packaging>
<properties>
<java.version>11</java.version>
</properties>
<dependencies>
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-web</artifactId>
</dependency>
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-tomcat</artifactId>
<scope>provided</scope>
</dependency>
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-test</artifactId>
<scope>test</scope>
</dependency>
</dependencies>
<build>
<plugins>
<plugin>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-maven-plugin</artifactId>
</plugin>
</plugins>
</build>
</project>
maven 은 이렇게 되고 외부에서 톰캣을 제공하기에
1
2
3
4
5
6
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-tomcat</artifactId>
<scope>provided</scope>
</dependency>
이렇게 둘것이다
SpringBootServletInitializer
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
package com.cybb.main;
import org.springframework.boot.SpringApplication;
import org.springframework.boot.autoconfigure.SpringBootApplication;
import org.springframework.boot.builder.SpringApplicationBuilder;
import org.springframework.boot.web.servlet.support.SpringBootServletInitializer;
@SpringBootApplication
public class SpringBootWebJenkinsProjectApplication extends SpringBootServletInitializer {
public static void main(String[] args) {
SpringApplication.run(SpringBootWebJenkinsProjectApplication.class, args);
}
@Override
protected SpringApplicationBuilder configure(SpringApplicationBuilder builder) {
return builder.sources(SpringBootWebJenkinsProjectApplication.class);
}
}
스프링 boot 는 기본적으로 jar 로도 실행을 할 수 있지만 war 로 실행해서 외부 톰캣에 배포하기 위해선 SpringBootServletInitializer 을 상속을 받아야 합니다 그리고 이처럼 자신의 클래스를 소스로 사용해라는 뜻입니다
간단한 demo 화면 구축
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
package com.cybb.main.controller;
import org.springframework.web.bind.annotation.GetMapping;
import org.springframework.web.bind.annotation.RestController;
@RestController
@RequestMapping("demo")
public class DemoController {
@GetMapping("")
public String demoController(){
return "demoController";
}
}
배포를 한뒤에 ip:8080/demo 를 호출하면 demoController 끝
간단한 프로젝트 작성후 이를 war 로 만들겠습니다 여기에서 package 를 클릭 인텔리j 기준입니다
그럼 war 가 만들어지는 위치는 /target 에 만들어지게 됩니다
이렇게 war 가 만들어지고 이를 우리가 앞에서 설치한 webapp 에 위치시켜줍니다
/home/was1/was/webapps 위치에 넣어주시고
이 위치가 될것이다
server.xml
vi /home/was1/was/conf/server.xml
1
2
3
4
5
6
7
8
9
10
11
<Host name="localhost" appBase="webapps"
unpackWARs="true" autoDeploy="true">
<Context docBase="SpringBoot-Web-Jenkins-Project-0.0.1-SNAPSHOT" path="/" reloadable="false"/>
</Host>
하단에 위와 같이 Context 를 적어주면된다 이때 나랑 다른 프로젝트 명이라면 자신의 프로젝트 명으로 만들어주면된다
기동
기동은 위에서 보았듯이 bin/startup.sh 을 실행해주면 된다
demoController 요청
이렇게 ip:8080/demo 로 했을때 이렇게 나오면 배포된 파일을 올바르게 본것이다
이렇게 우리는 수동으로 tomcat 에 배포하는 것을 공부했다 다음시간 부터는 이제 이들을 자동으로 배포 할 수 있게 파이프라인 스크립트로 작업을 해볼 예정입니다