JUINTINATION

AWS 엘라스틱빈스톡 conf 파일과 함께 프로젝트 배포하기 본문

Amazon Web Services

AWS 엘라스틱빈스톡 conf 파일과 함께 프로젝트 배포하기

DEOKJAE KWON 2024. 11. 7. 21:10
반응형

지난 AWS 엘라스틱빈스톡 504 Gateway Timeout 에러AWS 엘라스틱빈스톡 413 Request Entity Too Large 오류 글에서 언급했던 각종 에러를 해결하기 위해 직접 nginx 설정을 건드리지 않고 한번에 배포하는 방법을 드디어 알아냈다.

삽질을 굉장히 오랫동안 하고, 구글링도 많이 했는데 결국 인프런의 코드로 배우는 React with 스프링부트 API서버 강의의 마지막 강의록에서 그 해답을 찾을 수 있었다.

 

코드로 배우는 React with 스프링부트 API서버 강의 | 구멍가게코딩단 - 인프런

구멍가게코딩단 | 스프링 부트(Spring Boot ver3.1(3.2 호환))로 제작되는 API 서버와 리액트의 연동 프로젝트 완성하기! 포트폴리오 작성 부트캠프 과정 전체를 강의로 제작, '구슬이 서 말이어도 꿰어

www.inflearn.com

지금까지 Nginx 설정을 변경하기 위해 EC2 환경에 접속해서 /etc/nginx 디렉터리에 있는 설정 파일을 수정하는 방법을 사용했지만, 별도의 명령어 없이 할 수 있는 방법이 있다. 그 방법은 따로 설정 파일을 특정 디렉터리에 저장해두고, Gradle로 bootJar를 실행한 결과로 생성된 jar 파일과 함께 압축하여 배포하는 것이다.

custom.conf

먼저 파일들을 압축할 다른 디렉터리를 생성한다. 이후 해당 디렉터리에 .platform 디렉터리를, .platform 디렉터리 안에 ngnix 디렉터리를, ngnix 디렉터리 안에 conf.d 디렉터리를 생성한다. 그리고 conf.d 디렉터리에 custom.conf(이하 proxy.conf) 파일을 생성하고, 이전 글에서 사용했던 에러 해결용 코드를 작성한다.

client_max_body_size 500M;

proxy_connect_timeout 600;
proxy_send_timeout 600;
proxy_read_timeout 600;
send_timeout 600;

글로 적어서 읽기 힘든 디렉터리의 구조를 시각화하면 아래와 같다.

~/my-app/
|-- .platform/
    |-- nginx/
    |   `-- conf.d/
    |       `-- custom.conf

해당 구조를 어디서 본 적이 있는 것 같다는 느낌이 들텐데, 바로 AWS 엘라스틱빈스톡 504 Gateway Timeout 에러 글의 해결 과정에 있는 AWS Elastic Beanstalk 공식 문서 중 Extending Elastic Beanstalk Linux platformsmy-app 구조와 유사하다.

아무튼 이전까지는 myconf.conf 라는 이름으로 파일을 생성했었는데, 이번에 proxy.conf 파일이라고 이름을 붙인 이유는 그냥 강의록에 그렇게 나와있기 때문이다. 이외에 큰 이유는 없으며, 다른 이름으로 생성해도 무방하다.

실제로 배포해보기

나는 my-app 을 만들기 귀찮아서 아래와 같이 jar 파일이 만들어지는 build/libs/ 디렉터리에 .platform 디렉터리를 만들고 압축했다.

압축한 파일의 이름은 vpapi-deploy로 임의로 설정하고, 배포되어있는 엘라스틱빈스톡 환경을 업데이트해봤다.

드디어.. Ok를 봤다. 그렇다면 실제로 EC2 환경에 접속해서 proxy.conf 파일이 생성되었는지 확인해보자.

먼저 $ cd /etc/nginx/conf.d 명령어로 확인할 디렉터리로 이동하고, $ ls 명령어를 통해 proxy.conf 파일이 생성된 것을 확인한다. 마지막으로 $ cat proxy.conf 명령어를 통해 원하는 내용이 제대로 작성이 되어있는지 확인해 보면 위와 같이 정상적으로 작성이 되어있는 것을 확인할 수 있다.


결론

드디어 엘라스틱빈스톡은 원래 파일 하나를 올리고 배포 버튼 한 번만 딸깍 하면 되는 편한 것인데, 위와 같이 직접 nginx 설정을 건드리는 것은 올바르지 않다는 생각을 포기하지 않고 방법을 찾아냈다. 물론 삽질한 기간에 비해 해답을 찾는 과정이 너무 간단해서 허무하기도 했지만, 이러한 경험이 앞으로 더 나은 배포 환경을 구성하는 데에도 도움이 될 것이라 믿는다.

728x90
Comments