AWS EC2(windows server)에 스프링 프로젝트 배포하기

Boseung·2021년 6월 25일

Spring MVC

목록 보기
2/2

AWS EC2 서비스를 이용해서 windows server인스턴스를 생성한 다음에는 로컬에서 작업한 프로젝트를 AWS를 이용해서 배포해볼 것이다.

프로젝트 생성은 Intellij로 Spring MVC project생성하기로 만들 수 있다.

로컬에서 작업한 프로젝트를 export한 뒤 원격(서버)에서 jdk8, tomcat8을 설치하고 tomcat을 이용해서 구동한다음 로컬에서 서버로 접속해볼 것이다.

1. 테스트용 Controller 작성

간단한 테스트용으로 HelloController를 만든다.
아래내용을 붙여넣기한다.

  • main/java/org.example.controller - HelloController
package org.example.controller;

import lombok.extern.log4j.Log4j;
import org.springframework.stereotype.Controller;
import org.springframework.web.bind.annotation.GetMapping;
import org.springframework.web.bind.annotation.RequestMapping;

@Controller
@RequestMapping("/hello")
@Log4j
public class HelloController {

    @GetMapping("/main")
    public void main() {

        log.info("hello main");

    }

    @GetMapping("/world")
    public void member() {

        log.info("hello world");

    }

    @GetMapping("/info")
    public void info() {

        log.info("hello info");

    }

}

2. 테스트용 jsp파일 생성



webapp/WEB-INF/views디렉터리에서 우클릭 -> New -> Directory -> hello디렉터리 생성 -> hello디렉터리에서 우클릭해서 new -> jsp파일 생성 -> main.jsp, info.jsp, world.jsp 3개 생성한다 -> 각파일에는 아래 내용을 붙여넣기한다.

  • webapp/WEB-INF/views/hello - main.jsp
<!DOCTYPE html>
<html lang="en">
<head>
    <meta charset="UTF-8">
    <meta http-equiv="X-UA-Compatible" content="IE=edge">
    <meta name="viewport" content="width=device-width, initial-scale=1.0">
    <title>Document</title>
</head>
<body>
    <h1>Hello Main</h1>
</body>
</html>
  • webapp/WEB-INF/views/hello - info.jsp
<!DOCTYPE html>
<html lang="en">
<head>
    <meta charset="UTF-8">
    <meta http-equiv="X-UA-Compatible" content="IE=edge">
    <meta name="viewport" content="width=device-width, initial-scale=1.0">
    <title>Document</title>
</head>
<body>
    <h1>Hello Info</h1>
</body>
</html>
  • webapp/WEB-INF/views/hello - world.jsp
<!DOCTYPE html>
<html lang="en">
<head>
    <meta charset="UTF-8">
    <meta http-equiv="X-UA-Compatible" content="IE=edge">
    <meta name="viewport" content="width=device-width, initial-scale=1.0">
    <title>Document</title>
</head>
<body>
    <h1>Hello World</h1>
</body>
</html>

3. 로컬에서 구동 후 테스트


로컬에서 서버를 구동시킨 뒤,http://localhost:8081/hello/main, http://localhost:8081/hello/world, http://localhost:8081/hello/info 를 접속해보고 생성한 내용이 잘 맵핑되는지 확인한다.

화면에 위와같은 내용이 나오지 않고 오류메시지가 나온다면 앞에과정에서 잘못된 부분이 있을 수 있으니 확인해야한다.

4. war파일로 export하기

로컬에서 정상적으로 작동하는 것 까지 확인했으면 이를 원격에서 배포할 수 있는 war파일을 만들기 위해 export해야한다.

상단 Build 클릭 -> Build Artifacts클릭

war -> build클릭

정상적으로 진행되면 자신의 프로젝트 디렉터리에서 target폴더로 가면 war파일이 생성되어있을 것 이다.

5. 원격서버에 jdk8, tomcat8설치

AWS에 windows server를 이용했으므로 window 64bit 버전에 맞게 설치한다.
다운로드 문제가 있을 수 있어서 로컬에서 설치파일을 받아서 원격에 복사한 뒤 이 복사한 파일들을 원격에 설치할 것이다.


https://www.oracle.com/kr/java/technologies/javase/javase-jdk8-downloads.html
위 링크에 접속 -> Windows x64버전 다운로드

https://tomcat.apache.org/download-80.cgi
위 링크에 접속 -> 64-bit Windows.zip 파일 다운로드


AWS EC2 인스턴스생성할때 만든 Window Server를 실행한다.(비밀번호는 AWS console - EC2 - 인스턴스 탭에 있는 인스턴스 정보를 참고한다 기억체크하면 한번만입력하면된다)


열린 원격 서버에 다운로드 받은 설치파일을 ctrl+c, ctrl+v를 이용해서 원격서버의 바탕화면에 복사한다. (로컬에서 원격으로 복사가능)

6. 원격서버에 설치 및 환경변수 설정


jdk8은 따로 설정 할 것 없이 next만 눌러주면된다.(특히 파일 설치 위치 바꾸지 말자)

tomcat8도 원하는 곳에 압축을 풀어준다(저는 바탕화면에 함)

jdk8은 환경변수 설정이 필요하다.
제어판 -> 고급 시스템 설정 검색 -> 환경변수 클릭

아래 시스템변수칸에 새로만들기 클릭 -> JAVA_HOME, C:\Program Files\Java\jdk1.8.0_291 입력 -> 확인

아래 시스템변수칸에 새로만들기 클릭 -> CLASSPATH, C:\Program Files\Java\jre1.8.0_291\bin 입력 -> 확인

7. 원격서버에 war파일 이동 및 포트설정


압축을 푼 톰캣폴더로 간다(C:\Users\Administrator\Desktop\apache-tomcat-8.5.68-windows-x64\apache-tomcat-8.5.68\webapps) -> webapps폴더를 클릭 -> root라는 폴더가 있는데 삭제한다 -> 로컬에 있는 아까 export했던 war파일을 복사해서 webapps폴더에 붙여넣기한다 -> 이름을ROOT.war로 바꾼다

톰캣루트폴더에서 conf폴더를 클릭한다(C:\Users\Administrator\Desktop\apache-tomcat-8.5.68-windows-x64\apache-tomcat-8.5.68\conf) -> server파일을 메모장으로 연다

<Connector port="8080" protocol="HTTP/1.1"
               connectionTimeout="20000"
               redirectPort="8443" />

위 부분을 메모장에서 찾는다.(헷갈리므로 잘찾야함)

기본포트를 8080에서 80으로 위와같이 바꿔준다.

<Connector port="80" protocol="HTTP/1.1"
               connectionTimeout="20000"
               redirectPort="8443" />


시작에 방화벽 검색 -> 왼쪽에 고급설정 -> 왼쪽에 인바운드 규칙 클릭 -> 오른쪽에 새 규칙클릭 -> 포트(다음) -> 80입력 (다음) -> 다음-> 다음-> 이름 : http

8. AWS console 포트설정


(로컬)AWS console접속 -> EC2 -> 보안그룹 -> 인바운드 규칙편집 -> 규칙 추가 -> HTTP, ip기본설정 (0.0.0.0/0) -> 규칙저장

9. 서버 tomcat 구동, 접속 테스트

기본 설정은 모두 끝났다 남은건 서버에서 tomcat을 구동해보고 잘 작동하는지 서버에서 확인 -> 로컬에서 서버 접속 순서로 확인한다.

톰캣루트폴더에서 bin폴더를 클릭(C:\Users\Administrator\Desktop\apache-tomcat-8.5.68-windows-x64\apache-tomcat-8.5.68\bin) -> startup.bat파일 클릭해서 구동한다

서버에서 잘 돌아가는지 확인하기 위해 http://localhost/hello/world를 접속해본다. 다음가같이 아까 만들었던 화면이 뜨면 성공

다음은 로컬에서 서버를 호출하기 위해 (ip주소)/hello/world를 접속해본다. ip주소는 윈도우 서버 바탕화면에 있는 Public IP Address이며 AWS console에서 dns를 찾아서 접속해도 된다.
해당 url접속시 원하는 화면이 나오고 서버 tomcat로그에도 찍히는걸 볼 수 있다.

0개의 댓글