[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] 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를..
[SpringBoot]AWS S3를 활용한 파일 업로드 구현하기
·
SpringBoot
AWS S3(Amazon Simple Storage Service)란?AWS에서 제공하는 객체 스토리지 서비스로, 인터넷을 통해 언제 어디서나 원하는 양의 데이터를 저장하고 검색할 수 있는 단순하면서도 강력한 클라우드 스토리지 솔루션이다.S3는 다음과 같은 특징을 가지고 있다.무제한 확장성: 데이터 용량에 제한이 없으며, 필요한 만큼 저장 공간을 사용할 수 있다.높은 내구성과 가용성: 거의 모든 시간 동안 안정적으로 서비스에 접근할 수 있다.강력한 보안 기능: 암호화, 액세스 제어 등 다양한 보안 기능을 제공한다.글로벌 서비스: 전 세계 어디서든 빠르게 액세스할 수 있다.비용 효율성: 사용한 만큼만 비용을 지불하는 구조로, 초기 비용 없이 시작할 수 있다. S3를 사용한 이유케이크 도안 이미지 업로드 기..