DevOps Jenkins 실전배포 환경 만들기 2
포스트
취소

DevOps Jenkins 실전배포 환경 만들기 2

지난시간에 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 로 만들겠습니다 3 여기에서 package 를 클릭 인텔리j 기준입니다

그럼 war 가 만들어지는 위치는 /target 에 만들어지게 됩니다

5

이렇게 war 가 만들어지고 이를 우리가 앞에서 설치한 webapp 에 위치시켜줍니다

/home/was1/was/webapps 위치에 넣어주시고

6

이 위치가 될것이다

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 요청

7

이렇게 ip:8080/demo 로 했을때 이렇게 나오면 배포된 파일을 올바르게 본것이다

이렇게 우리는 수동으로 tomcat 에 배포하는 것을 공부했다 다음시간 부터는 이제 이들을 자동으로 배포 할 수 있게 파이프라인 스크립트로 작업을 해볼 예정입니다