지난시간에 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 에 배포하는 것을 공부했다 다음시간 부터는 이제 이들을 자동으로 배포 할 수 있게 파이프라인 스크립트로 작업을 해볼 예정입니다