EC2 인스턴스 준비:
애플리케이션 빌드 및 전송:
./gradlew build).scp나 FileZilla와 같은 도구를 사용하여 EC2 인스턴스로 전송합니다.환경 변수 설정 및 실행:
nohup 명령어와 함께 JAR 파일을 실행하여, SSH 접속이 끊어져도 애플리케이션이 계속 백그라운드에서 동작하도록 합니다.# nohup: 터미널 세션이 종료되어도 프로세스를 계속 실행
# > app.log 2>&1: 표준 출력과 표준 에러를 app.log 파일로 리다이렉션
# &: 백그라운드에서 실행
nohup java -jar -Dspring.profiles.active=prod my-app.jar > app.log 2>&1 &Nginx를 이용한 리버스 프록시(Reverse Proxy) 설정:
mydomain.com:80으로 들어온 요청을 내부적으로 localhost:8080에서 실행 중인 Spring Boot 애플리케이션으로 전달(proxy_pass)합니다.oauth2-client를 사용하여, 사용자가 카카오, 구글 등 소셜 계정으로 우리 서비스에 간편하게 로그인하는 기능을 구현하는 심화 과정입니다.[사용자]: "카카오로 로그인" 버튼 클릭. 프론트엔드는 백엔드가 제공하는 OAuth2 인증 URL(.../oauth2/authorization/kakao)로 리다이렉트.
[Spring Security]: 요청을 가로채, application.yml에 설정된 정보를 바탕으로 사용자를 카카오 로그인 페이지로 리다이렉트시킵니다.
[사용자 ↔ 카카오]: 사용자가 카카오 계정으로 로그인하고 정보 제공에 동의하면, 카카오는 Spring 서버의 리다이렉트 URI로 인가 코드(Authorization Code)와 함께 사용자를 돌려보냅니다.
[Spring Security]: 인가 코드를 받아, 카카오 서버와 통신하여 액세스 토큰(Access Token)을 발급받습니다.
[Spring Security]: 발급받은 액세스 토큰을 사용하여 카카오 리소스 서버에 사용자 정보를 요청합니다.
[CustomOAuth2UserService] (개발자 구현 영역):
CustomOAuth2UserService에게 전달합니다.Principal 객체를 반환합니다.[OAuth2SuccessHandler] (개발자 구현 영역):
Http-Only 쿠키에 담아, 프론트엔드로 리다이렉트시키면서 전달합니다.[프론트엔드]: 리다이렉트된 URL에서 JWT를 파싱하여 저장하고, 로그인 상태를 유지합니다.
CustomOAuth2UserService (사용자 정보 처리 및 회원가입)와 OAuth2SuccessHandler (로그인 성공 후 JWT 발급) 두 부분을 커스터마이징하여 비즈니스 로직을 구현하게 됩니다.nohup을 사용하여 백그라운드로 실행합니다.CustomOAuth2UserService에서 사용자 정보를 우리 DB와 동기화(회원가입/업데이트)하는 로직과, OAuth2SuccessHandler에서 인증 성공 후 우리 서비스의 JWT를 발급하는 로직을 구현하는 데 집중하게 됩니다.