[AWS] EC2 + Nginx + Certbot으로 HTTPS 적용 및 가비아 도메인 연결하기
·
AWS
개발한 애플리케이션을 EC2에 빌드하고 배포하면 기본적으로 http://55.160.241.91:8000/ 같은 주소로 접속해야 한다. 하지만 HTTP는 브라우저에서 보안 경고가 표시될 수 있고, 포트 번호가 포함된 주소는 보기에도 깔끔하지 않다. 그래서 이번에는 도메인을 연결하고 HTTPS를 적용하여 예쁘고 안전한 주소로 접속할 수 있도록 시도했다. 무료 도메인으로도 가능하지만, 이번에는 실습 겸 저렴한 유료 도메인을 구매하여 적용해보았다. 1. Nginx 설치로컬 혹은 EC2 서버에 Nginx를 설치한다.sudo dnf install -y nginx 설치 후 Nginx를 부팅 시 자동 실행되도록 설정한다.sudo systemctl enable nginx 2. Certbot 설치HTTPS 인증서 발급을..
[DB] Windows 11 환경에서 Redis 설치하고 키 관리하기
·
DB
캐싱 기능을 활용하기 위해 로컬 컴퓨터에 Redis를 설치했다. 먼저 아래 링크로 이동하여 설치 파일을 다운로드한다.https://github.com/microsoftarchive/redis/releases Releases · microsoftarchive/redisRedis is an in-memory database that persists on disk. The data model is key-value, but many different kind of values are supported: Strings, Lists, Sets, Sorted Sets, Hashes - microsoftarchive/redisgithub.com 설치 파일을 실행하고 Next 버튼을 클릭하며 설치를 진행한다. 설치가 ..
[SpringBoot] Gradle 프로젝트 생성하기
·
SpringBoot
이전 글: [SpringBoot] Gradle 프로젝트 생성 시 Java 17 인식 오류 해결 과정 Java 17 설정 문제를 해결한 후, 이제 정상적으로 Gradle 프로젝트를 생성할 수 있게 되었다. 1. Spring Starter Project 생성이제 Spring Initializr를 통해 새로운 프로젝트를 생성한다.프로젝트 기본 설정첫 번째 화면에서는 프로젝트의 기본 정보를 설정한다.Service URL: https://start.spring.io - Spring Initializr 공식 사이트Name: jy-blog-1 - 블로그 프로젝트라는 의미로 명명했다Type: Gradle - Groovy - Maven 대신 Gradle을 선택했다Java Version: 17 - 이전에 해결한 Java ..
[SpringBoot] Gradle 프로젝트 생성 시 Java 17 인식 오류 해결 과정
·
SpringBoot
항상 Maven 프로젝트만 사용하다보니 Gradle 프로젝트를 간단한 블로그 프로젝트로 만들어 보려고 했다. 하지만 프로젝트 생성 과정에서 예상치 못한 문제에 부딪혔다. 문제 상황Spring Boot 프로젝트를 Gradle로 생성하려고 하는데 다음과 같은 오류가 발생했다.분명히 JDK 17은 설치되어 있었고, 명령프롬프트에서 java -version을 실행하면 17 버전이 정상적으로 출력되었다. 하지만 Eclipse에서 Spring Boot 프로젝트를 생성할 때만 Java를 찾지 못한다는 오류가 계속 발생했다. 시도한 해결 방법들1. Eclipse JRE 설정 확인Eclipse의 Window → Preferences → Java → Installed JREs에서 확인해보니 jdk-17이 목록에는 있었지만..
[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 파일에 다..
[SpringBoot] 이클립스에서 Maven과 Lombok 환경 설정하기 (오류 해결 과정)
·
SpringBoot
팀원이 작업한 파일을 내려받아 실행해보니 log 부분에서 계속 오류가 발생했다. log cannot be resolved라는 오류 메시지가 뜨는데, 처음엔 원인을 전혀 알 수 없었다. 인터넷을 찾아보니 lombok이 설치되지 않아서 생기는 문제였다.처음에는 간단하게 인텔리제이로 프로젝트를 열고 플러그인으로 lombok을 설치했다. 실행해보니 문제없이 잘 돌아갔다. 그대로 인텔리제이를 사용할까도 생각했지만, 이클립스에서 떠있는 오류를 보니 꼭 해결하고 싶어졌다. 그래서 maven과 lombok을 직접 설치해보기로 결정했다. lombok이란?자바 프로젝트에서 반복적으로 작성해야 하는 Getter, Setter, toString(), equals(), hashCode() 등의 메소드를 어노테이션을 통해 자동으..