저번 시간에는 프론트 (Node.js) 서버를 배포를 해서 화면에 뜨기까지 해 봤다
이번에는 자바의 웹 프레임워크 Spring을 배포를 한번 해보겠다.
Jar방식과 War방식이 있는데, 이 둘의 차이점은
Jar는
프로젝트에 내장 톰켓이 있고
War는
프로젝트에 내장톰켓이 없고, 외장 톰캣으로 구동해야 한다.
오늘의 배포는 Spring boot 프로젝트이기 때문에 Mybatis라면 뒤로 돌아가서 구글에다가 AWS Spring Mybatis 새로 검색하자...
Spring boot 설정
일단 Spring boot 프로젝트에 조그만 하지 않은 설정을 해줘야 한다.
그전에 만약 Spring boot 프로젝트가 없다면, 1번부터 하고
Spring boot 프로젝트가 있다면, 4번부터 하도록 하자
1. 프로젝트 생성
Spring boot 툴에서 오른쪽 클릭한 후, 【New】→【Project】 을 클릭한다
【Spring Starter Project】 선택 후, 【Next】 클릭
이런 화면이 생기는데, Name 넣어주고, Maven 기준으로 하기 때문에 Maven으로 설정한 후,
Packaging은 Jar로 해도 되고, War로 해도 된다.
그리고 다들 1.8 버전을 자주 쓰기 때문에, 8로 선택한다.
Package명은 <<폴더>>.<<폴더>>.<<폴더>>로 적은 뒤, 【Next】 를 클릭하도록 한다
그다음 체크는 위와 최소한 좋은 것들 선택하고 【Finish】 를 클릭한다. 그럼 프로젝트가 생성이 완료된다.
※DB 같은 경우는, Oracle 쓰고 싶은 사람은 Oracle을 선택하고, MySQL을 하고 싶은 사람은 MySQL를 선택하면 된다.
어차피 여기서는 안 할 것이다
2. application.yml
【application.properties】를 【application.yml】로 바꾼다.
안 바꿔도 되지만, 내 말 듣는 게 좋다
* 장난이고,, 검색해주세요. ㅠㅠ
server:
port: 8080
servlet:
context-path: /
최소한의 정보를 넣어 주도록 한다.
그 밑에 DB라던지 JPA라던지 그런 것을 넣어줘도 될 듯하다.
일단 배포를 확인하기 위해 더 이상 헷갈리게 하지 않기위해 적지 않았다
3. Controller 작성
【New】→【Other】
패키지를 하나 만들어 준다
패키지 이름 설정한 후에 【Finish】 클릭
package 오른쪽 클릭 후, class를 만들어 준다
이름을 설정하고 【Finish】를 클릭한다
package com.kang.test.controller;
import org.springframework.web.bind.annotation.GetMapping;
import org.springframework.web.bind.annotation.RestController;
@RestController
public class TestController {
@GetMapping("/helloWorld")
public String test() {
return "Do you want to build a Snowman?";
}
}
이번 포스팅은 React를 위한 것이기 때문에
데이터를 return 해주게 하기 위한 어노테이션 【@RestController】 를 넣어주고
위에 메소드를 넣어준다
이렇게 힘들게 다 준비하면 끝이다. 그다음은 war 파일을 만들어보자
4. pom.xml 설정
pom.xml를 열어보면 【packaging】을 보면, war라고 적혀있으면 그대로 두고, jar라고 적혀있으면 war로 바꿔주고 저장을 한다.
이번 포스팅은 war로 aws에 배포하는 것이기 때문이다.
4. ServletInitializer.java
ServletInitializer.java 라는 파일이 있으면 그대로 두고 없다면 아래의 문서를 보면서 따라 하도록 하자
https://www.appsdeveloperblog.com/deploy-a-spring-boot-rest-app-as-a-war-to-tomcat-10/
5. War 파일 익스포트
프로젝트 파일을 오른쪽 클릭한 후, Export를 클릭한다
위에 따라 하도록 하자
【Finish】를 누르면 War파일이 생성이 된다.
6. EC2에 War파일 올리기
드디어 EC2로 돌아올 수 있게 됐다.
로컬 컴퓨터에서 EC2쪽으로 옮기기 위해서, 여러 가지 방법이 있을 것이다.
Winscp라는 툴을 이용하거나, Git을 이용하거나
컴퓨터에서 컴퓨터로 이동시는 것이기 때문에 여러 가지 방법이 있다.
하지만 나는, MobXterm 이란 툴이 있기 때문에!!!
이 포스팅의 1편을 보면 다운로드 방법이 있으니 보면 될 거 같다
【Session】 을 클릭한다
【퍼블릭 IPv4 주소】를 복사 한 다음
복잡 하지만, 순서대로 한다
그럼 이렇게 뜬다
/usr/local/tomcat9/webapps/
위의 경로로 간다
드래그하면 복사가 된다
이렇게 복사가 완료된 것을 확인할 수 있다.
7. Tomcat 서버 구동
그다음은, 평소의 방법으로 EC2로 들어가도록 한다
cd /usr/local/tomcat9/bin/
위의 경로로 들어간다.
tomcat 서버를 구동시킬 수 있는 sh 파일이 있는 경로로 말이다
./startup.sh
tomcat 서버 실행 보도록 한다
8. 브라우저 접근
그리고 브라우저로 접근을 해본다!!
어라... 404가 뜬다..
그 이유는 아까 war파일을 올렸을 때 awsTest가 있는데, 그 기준으로 URL를 잡아야 한다.
무슨 말이냐 하면 아래의 사진을 보면 알 수 있다
awsTest/<<Controller의 URL>>
이렇게 쳐주면 되겠다.
이상으로 Spring boot 기준의 EC2서버 호스팅 하는 방법이다.