본문 바로가기

Cloud | CICD/Deploy10

[Spring Boot & Github Actions] 비공개 json키 관리 문제 상황 Firebase 프로젝트와 Spring Boot 서버를 연결하기 위한 json 설정 파일을 외부에 노출하지 않고 Github Actions로 배포하는 방법이 필요 (일단 해당 json 파일은 gitignore 한 상태) 시도 1. json 파일의 내용을 Github Secrets에 저장해두고, application-secret.yml을 만들 듯 Github Actions yml 설정 파일에서 json 파일을 만들기 - name: Make FirebaseServiceAccountKey.json run: | touch ./src/main/resources/firebaseServiceAccountKey.json echo "${{ secrets.FIREBASE_SERVICE_ACCOUNT_KEY }}.. 2023. 8. 25.
[React] 클라이언트 배포 : Vercel편 오늘은 vercel을 이용하여 React 프로젝트를 배포해볼 것이다. 준비물 : 구매 후 AWS Route53 등록 완료한 도메인 : 배포하고자 하는 프론트 github repository 1. Vercel 가입 vercel 사이트에 접속한다. https://vercel.com/login (계정이 없으면 회원가입한다.) Login – Vercel Welcome to Vercel. Log in with GitHub, GitLab, Bitbucket, or email to deploy websites for free with zero configuration, automatic SSL, and global CDN. vercel.com 2. Project 생성 https://vercel.com/new 에서 본.. 2023. 5. 15.
[React & Spring Boot] 클라이언트 배포(2) : Nginx, EC2 이번 글에서는 EC2 인스턴스에서 Nginx, pm2를 이용해 리액트 프로젝트를 배포해볼 것이다. 글 중간중간에 EC2에서 다운받으라는 것이 있으면 apt-get install로 다운받으면 된다. 본인은 sudo su 후 root에서 모든 명령어를 진행하였다. 목차 1. Clone React Project Repository 2. Nginx 설정 3. PM2로 빌드 파일 배포 1. 리액트 프로젝트 Clone EC2 인스턴스에서 리액트 프로젝트를 클론해서 받아올 것이다. $ git clone 깃허브레포지토리주소 클론 후, 해당 프로젝트 폴더로 이동한다. $ cd 리액트프로젝트폴더명 원래는 클론 후에 npm run build 명령어로 EC2에서 리액트 프로젝트 빌드를 하는 방법도 있지만, 내가 가진 인스턴스.. 2023. 5. 5.
[React & Spring Boot] 클라이언트 배포(1) : Route 53, EC2 프론트엔드, 백엔드 각 팀의 개발이 마무리 되어가서 최종 도메인 배포를 진행했다. 최종 목표는 (EC2 인스턴스 1개) + (도메인 1개) 에 프론트, 백 프로젝트를 모두 배포하는것이다. 백엔드는 이미 Github Actions로 배포되어 있는 상태여서, 프론트 배포에 초점을 맞춰서 진행할 예정이다. 최종적으로는 EC2 인스턴스와 연결된 hello.com 도메인 하나를 사용하면서 www.hello.com은 리액트 프로젝트용 3000 포트를, api.hello.com은 스프링 프로젝트용 8080 포트를 포워딩하도록 구현할 것이다. (여기서 hello.com은 임의의 예시 도메인이다. 본인은 babyakmate.com이라는 도메인을 사용했다.) 이번 글에서는 Route 53, EC2 관련 설정을 한다. ▷ .. 2023. 5. 5.
[React] EC2 인스턴스에 React 프로젝트 배포 모든 과정은 EC2 인스턴스 ssh에서 진행한다. 0. React Project를 담을 폴더 생성 나는 'client'라는 이름의 폴더를 만들고, 해당 폴더로 이동했다. $ mkdir client $ cd client 1. Github에 있는 React 프로젝트 클론 $ git clone 레포지토리 주소 $ cd 레포지토리명 ( /client/myRepository ) 나는 /home/ubuntu/client/babyak-front-ts 경로였다. 2. Nginx 설정 (1) Nginx 다운로드 (2) config 파일 수정 $ cd /etc/nginx/sites-enabled $ sudo vim default server { # listen 80 default_server; # listen [::]:8.. 2023. 5. 3.
[Cors] Cors 에러 삽질 기록 드디어 배포된 스프링 부트 API를 프론트팀이 연결하는 과정이었다. 그런데 계속 Cors 에러가 떴다. 엄청난 시간동안 머리를 싸맸는데 결론은 시시콜콜한 문제였다. 영광의 삽질을 기록한다. 1. 이름만 같은 CorsFilter, 넌 누구냐 임마 내 프로젝트는 CorsConfig에서 CorsFilter를 정의해서 사용했다. import org.springframework.context.annotation.Bean; import org.springframework.context.annotation.Configuration; import org.springframework.web.cors.CorsConfiguration; import org.springframework.web.cors.UrlBasedCorsC.. 2023. 3. 7.
[Deploy] 배포된 EC2에서 Google Login이 안되는 문제 해결 Spring boot 프로젝트에서 OAuth2User를 이용한 구글 로그인을 구현했었다. 로컬에서는 멀쩡히 잘 돌아가던 구글 로그인이 배포된 API에서는 안되는 문제가 있었다. 얄팍한 해결방법을 남겨두려고 한다. Check Point 1 Redirect URL은 ip로 불가능! Google Cloud Console에 들어가서 Redirect URI를 배포된 서버 ip주소로 (123.45.6.78 형태) 변경하려고 하니까 아래와 같은 오류메세지가 떴다. 공개 최상위 도메인으로 끝나야 한다는 것이다. 따라서 숫자로 된 Public IP가 아닌, EC2의 퍼블릭 IPv4 DNS 주소를 이용해서 Redirect URI를 추가해주었다. http://퍼블릭 IPv4 DNS/login/oauth2/code/googl.. 2023. 3. 2.
[Deploy] EC2에서 Redis 사용하기 ▶ 목적 EC2 서버 하나에서 Redis + Spring boot 프로젝트 동시에 돌리기 로컬 내 컴퓨터에 Redis를 설치하여 스프링부트 프로젝트를 돌리다가 서버를 배포하게 되었다. 따라서 Remote Redis 서버 설정이 필요해졌다. EC2 서버를 하나 새로 만들어서 Redis 서버로 사용하기, AWS의 ElasticCache로 Redis 서버 만들기 등 다양한 선택지가 있었다. 그런데 나의 경우, 다른 팀원이 Redis 서버를 구축할 예정이라, 임시로 API가 돌아가는 수준의 Redis 서버를 간단히 만들고 싶었다. 그래서 이번에는 하나의 EC2에 Redis & Spring boot 프로젝트를 때려넣는(?) 방법을 공유한다. 준비물 : Github Action으로 스프링 부트 프로젝트가 배포되어있.. 2023. 3. 2.
[Deploy] Github Actions + Docker + EC2 자동 배포 #2 | Docker 설정 1. Dockerfile 작성 - 스프링 프로젝트 최상단 경로에 Dockerfile 추가 FROM adoptopenjdk/openjdk11 ARG JAR_FILE=./build/libs/프로젝트명-0.0.1-SNAPSHOT.jar COPY ${JAR_FILE} app.jar ENTRYPOINT ["java", "-jar", "/app.jar"] 2. Ubuntu EC2에 Docker 설치 - EC2 인스턴스에 접속하여 수행 $ sudo apt-get update $ sudo apt-get install apt-transport-https ca-certificates curl gnupg-agent software-properties-common $ curl -fsSL https://download.dock.. 2023. 2. 28.