[AWS] EC2에서 Nginx로 포트 번호 없이 웹 서비스 배포하기
·
AWS
이번 포스팅에서는 AWS EC2에서 Nginx를 사용하여 포트 번호 없이 웹 서비스를 제공하는 방법에 대해 공유한다. 실제로 겪었던 문제 상황과 해결 과정을 중심으로 설명한다. Nginx를 사용하게 된 이유EC2 인스턴스에 Spring Boot(Java), React, Python 서버를 함께 배포하여 사용하고 있었다. 각 서비스는 다른 포트에서 실행 중이었다.http://43.201.102.244:8082 (Java + React)http://43.201.102.244:8000 (Python 서버)이처럼 각 서비스에 접근하기 위해 매번 IP 주소 뒤에 포트번호까지 입력해야 하는 불편함이 있었다. 개발 중에는 괜찮을지 모르지만, 실제 사용자에게 이런 형태의 URL을 제공하는 것은 사용성 측면에서 바람직하..
[AWS] Docker와 GitHub Actions를 활용한 CI/CD 파이프라인 구축과 환경 변수 문제 해결
·
AWS
FastAPI로 개발한 백엔드 애플리케이션을 Docker 컨테이너로 배포하는 과정에서 환경 변수 관련 문제가 발생했다. 리액트와 자바는 환경변수 키 파일을 포함한 채로 빌드 배포해도 문제가 없었기에 도커에서도 당연히 될 거라 생각했는데, 도커를 이용한 배포에서는 환경변수가 자동으로 적용되지 않는다는 것을 몰랐다. 실행할 때 키를 하나하나 입력해서 실행하는 방법도 가능하지만 번거롭고 키 개수가 늘어날 수도 있어서, 기존에는 로컬에서 Docker 이미지를 빌드하고 EC2 서버에 수동으로 배포하는 방식을 사용했다. 하지만 이 과정을 자동화하기 위해 GitHub Actions를 도입했다. 이 글에서는 이러한 문제를 해결한 과정을 정리해보고자 한다. 1. 문제 상황애플리케이션이 EC2 서버에서 다음과 같은 오류를..
[AWS] Windows에서 AWS EC2까지: Docker로 Python 서비스 배포하기
·
AWS
프로젝트를 진행하면서 프론트엔드(React)와 백엔드(Java)는 Docker 없이 직접 빌드하여 배포했다. 하지만 AI 기능을 담당하는 Python 백엔드는 의존성 관리와 배포 환경의 일관성을 위해 Docker를 활용하기로 결정했다. 이번 글에서는 Windows 환경에서 Docker를 설치하고, Python 애플리케이션을 Docker 이미지로 빌드한 후 Amazon EC2에 배포하는 전체 과정을 정리했다. Docker란?Docker는 애플리케이션을 개발, 배포, 실행하기 위한 오픈소스 플랫폼이다. Docker를 사용하면 애플리케이션과 그 의존성을 "컨테이너"라는 표준화된 유닛으로 패키징할 수 있다. 이 컨테이너는 개발 환경, 테스트 환경, 프로덕션 환경 등 어디서든 동일하게 실행될 수 있어 "내 컴퓨터..
[AWS] EC2 서버 용량 문제 해결하기
·
AWS
이전 글: [AWS] React + Spring Boot(Maven) 프로젝트 AWS EC2(Ubuntu)에 빌드 및 배포하기이전 포스팅에서 진행했던 배포 과정이 처음에는 정상적으로 작동하는 것을 확인했으나, 오늘 낮에 다시 접속해보니 웹사이트에 연결이 되지 않는 상황이 발생했다. 더 이상한 점은 로컬 환경에서도 데이터베이스 연결이 안 되기 시작했다는 것이다. 처음에는 네트워크 문제나 설정 오류라고 생각했으나, 점점 EC2 인스턴스의 용량 문제가 의심되기 시작했다. 이 글에서는 AWS EC2 인스턴스에서 발생한 메모리 부족 문제를 진단하고 해결한 과정을 상세히 설명하고자 한다. 1. 문제 진단하기이전 포스팅에서 배포했던 애플리케이션에 접속이 되지 않아 확인해보니, DB 연결이 끊겨 있었다. 로컬 환경에서..
[AWS] React + Spring Boot(Maven) 프로젝트 AWS EC2(Ubuntu)에 빌드 및 배포하기
·
AWS
프로젝트 개발이 어느 정도 끝나서 내가 빌드 배포를 맡게 되어서 진행하게 되었다. 간단한 프로젝트여서 도커 사용 없이 빌드 배포하는 방법을 선택했고, Maven 프로젝트이며 EC2는 우분투 환경으로 인스턴스를 만들었다. DB는 기존에 EC2 안에 설치해두었기 때문에 따로 할 필요는 없었다. React 애플리케이션을 먼저 빌드하여 Spring Boot의 정적 리소스 폴더에 통합한 후, 단일 JAR 파일로 배포하는 방식을 다룬다. 배포 과정에서 발생할 수 있는 문제점들과 해결 방법도 함께 안내한다. 1. 초기 빌드 및 배포 과정1-1. React 빌드 자동화 설정React 프로젝트에서 빌드 후 자동으로 Spring Boot의 static 폴더로 파일을 복사하도록 설정한다. package.json 파일에 다..
[AWS] EC2(Ubuntu)에 MySQL 설치하고 스프링부트와 연결하기
·
AWS
EC2에 MySQL을 설치하고 스프링부트와 연결하는 작업을 진행했다. 원래 RDS를 사용하면 좀 더 편하게 연결할 수 있지만, 프로젝트 규모가 크지도 않고 RDS를 사용하면 비용이 발생하기 때문에 그냥 EC2에 직접 설치하기로 결정했다. MySQL 설치 과정1. 시스템 업데이트sudo apt updatesudo apt upgrade -y 2. MySQL 서버 설치sudo apt install mysql-server -y 3. MySQL 서비스 상태 확인sudo systemctl status mysql 4. MySQL 보안 설정보안 설정 단계에서는 여러 질문에 답해야 했다.sudo mysql_secure_installation VALIDATE PASSWORD COMPONENT 설정 여부를 묻는 질문에 Y를..