Spring boot에서 AWS Elastic Beanstalk 사용시 .ebextensions 사용하는 방법이다.
Elastic Beanstalk 사용시 배포방법이 war파일 배포방법과 jar파일 배포방법이 있는데
이 두개는 .ebextensions 사용시 기본적인 사용법은 같으나 배포시 차이점이 있다.
1. 2018/10/26 - [Develop/Spring Boot] - Spring Boot AWS Elastic BeanStalk을 이용한 배포
2. 2019/02/12 - [Develop/Spring Boot] - Spring boot ElasticBeanstalk 환경변수설정시 주의사항
1. 기본 사용방법으로는 .ebextensions 란 폴더를 프로젝트 최상위에 만든다.
2. 만들었으면 이제 서버에 적용하고 싶은 값들을 .config 확장자로 만들어 .ebextensions의 폴더에 넣으면 된다.
기본적으로 적용하고싶은 파일들의 순서는 알파벳순서라서, 보통 00-이름.config, 01-이름2.config 이렇게 이름을 짓는다.
[Directory구조 예시]
Project
--.ebextensions
-- 00-이름.config
-- 01-이름2.config
3. 이제 nginx설정하는 방법이다. (이것이 필요 없다면 바로 4번의 배포 방법으로 가시면 됩니다.)
아래의 사진처럼 폴더를 생성한다.
3-1 . 먼저 nginx 설정을 변경하고싶다면 nginx의 전체 속성을 일단 복사해서 가져온 뒤
nginx.conf라는 파일을 생성 후 복사한 전체 내용을 ngnix.conf에 붙여넣고 변경하고 싶은 내용을 추가하면 된다.
위 사진처럼 nginx 폴더(conf.d폴더가아님) 바로 아래에 nginx.conf 파일을 넣는다. 이렇게 되면 nginx 의 전체설정을 서버에 완전히 쓰게 된다.
3-2. nginx 전체 설정 가져오기가 번거롭다면 위 사진처럼 conf.d 폴더와 그리고 아래에 elasticbeanstalk이라는 폴더를 생성한다.
conf.d폴더아래에 만약 .conf 파일을 생성한다면 이 내용은 nginx.conf 전체 속성의 http 단에 들어가고
elasticbeanstalk 폴더 아래에 만약 .conf 파일을 생성한다면 이 내용은 nginx.conf 전체 속성의 http 단의 sever 단에 들어간다
이게 무슨말이냐면 아래의 사진처럼 conf.d 폴더에 생성한 .conf 파일의 내용은 검정색 선 안에 들어가고
elasticbeanstalk 폴더 아래에 생성한 .conf 파일의 내용은 빨간색 선 안에 들어간다.
이런식으로 nginx 설정을 변경한다.
4. 배포는 war파일 배포와 jar파일 배포시 차이가 있다. 일단 공통적으로 zip 을 해주어야 한다.
4-1. war 파일은 .ebextensions 폴더와 함께 zip 파일로 만든후 이를 Elastic Beanstalk에 올리면 ebextensions 에서 설정한 값이 적용된다.
[.zip 파일 directory 예시]
.zip
-- .ebextensions
-- .war
4-2. jar파일은 zip파일로 만들고 배포하면 설정이 먹히지 않는다. 그렇기 때문에 Procfile 이라는 것을 사용해야 한다.
Procfile을 말 그대로 Procfile이라고 프로젝트 최상위 경로에 생성한다
[Directory구조 예시]
Project
--.ebextensions
-- 00-이름.config
-- 01-이름2.config
생성 후 Procfile 내용안에 아래와 같이 작성한다.
web: java -jar jar파일경로/파일이름.jar
작성하였으면 이제 .ebextensions 폴더와 .jar파일 Procfile을 zip 파일로 압축한다.
[.zip 파일 directory 예시]
.zip
-- .ebextensions
-- .jar
-- Procfile
그리고 이를 Elastic Beanstalk에 올리면 ebextensions 에서 설정한 값이 적용된다.
(어차피 zip파일로 압축할거면 굳이 root 폴더에 생성해야하는 이유가 무엇인지 궁금하다.
build 시 자동으로 zip 파일로 압축하는 방법이 있다고 하던데 알아봐야겠다.)
참고 : https://docs.aws.amazon.com/ko_kr/elasticbeanstalk/latest/dg/create_deploy_Java.html
'Develop > Spring Boot' 카테고리의 다른 글
Maven(Spring, Spring boot) template제작방법 - archetype (0) | 2020.05.26 |
---|---|
Kotlin Spring Boot Webflux (Eclipse) (0) | 2020.04.26 |
Spring boot ElasticBeanstalk 환경변수설정시 주의사항 (0) | 2019.02.12 |
Spring Boot, LocalDateTime Gson Serialize(JPA LocalDateTime) (0) | 2019.01.18 |
Spring boot reCAPTCHA - Invisible reCAPTCHA (0) | 2018.12.18 |