SY 개발일지
article thumbnail
[CI/CD] 스프링부트에 HTTPS 적용
프로젝트/CICD 2024. 6. 21. 15:36

프론트엔드와 백엔드가 소통을 하지 못하는 일이 발생하였습니다.프론트에서 백으로 HTTPS 요청을 보내도록 하였는데 HTTPS이 인증이 안되어 에러가 발생하는 것처럼 보였습니다.그래서 스프링부트 컨테이너에 직접 HTTPS 옵션을 걸어보도록 하겠습니다.  1️⃣ 먼저 스프링에서는 .pem을 인식하지 못하기 때문에 springboot key 생성을 해줍니다. openssl pkcs12 -export -in /etc/letsencrypt/live/restagram.shop/fullchain.pem -inkey /etc/letsencrypt/live/restagram.shop/privkey.pem -out keystore.p12 -name restagram -CAfile /etc/letsencrypt/live/r..

article thumbnail
[CI/CD] nginx 설치부터 Let's Encrypt 인증서 발급 받기 with Ubuntu 24.04
프로젝트/CICD 2024. 6. 20. 18:19

현재 사이트에 들어가면 이런 식으로 주의를 요한다는 메세지가 뜹니다이는 https가 적용되지 않아 암호화가 되지 않았으므로 주의해달라는 표시입니다. 따라서 이번 포스팅에서는 https를 적용하고 포트도 80, 443 포트로 변경해보도록 하겠습니다. 우선 let's encrypt를 진행하기 위해 nginx부터 설치해주도록 하겠습니다.Nginx 설정설치설치 전 패키지 목록 업데이트sudo apt-get update nginx 설치sudo apt-get install nginx 방화벽 설정방화벽 설정sudo ufw app list다음과 같은 명령어를 입력하면 아래와 같은 리스트가 출력됩니다.각 설정은 다음을 의미합니다.Nginx HTTP: 포트 80번만 허용Nginx HTTPS: 포트 443번만 허용Nginx..

article thumbnail
[CI/CD] 가비아에서 도메인을 구매한 후 AWS EC2 서버 연결하기
프로젝트/CICD 2024. 6. 19. 22:23

이번에는 가비아에서 도메인을 구매한 후에 aws ec2 서버와 연결해보도록 하겠습니다. 도메인 구매1️⃣ 먼저 가비아 페이지에 로그인해주세요https://www.gabia.com/ 웹을 넘어 클라우드로. 가비아그룹웨어부터 멀티클라우드까지 하나의 클라우드 허브www.gabia.com 2️⃣ 여기에 원하는 도메인을 입력하여 검색 후 신청합니다.원하는 도메인을 선택하여 신청합니다. 3️⃣ 서비스정보를 입력합니다.기간의 경우 1년과 2년 사이의 가격이 매우 다르니 저는 저렴하게 1년을 선택해주었습니다.하단의 동시 신청 가능 서비스와 같은 경우에는 금액적 부담이 커서 하지 않았습니다. 결제 방법의 경우 신용카드는 1000원 이상이어야 하기 때문에 무통장 입금을 선택해주었습니다. 정상적으로 결제가 되었다면 서비스 ..

article thumbnail
[CI/CD] 도커와 젠킨스, 그리고 WebHooks로 React 자동 배포로직 만들기
프로젝트/CICD 2024. 6. 19. 18:59

이번에는 저번 백엔드에 이어 프론트엔드 React 컨테이너를 배포해보도록 하겠습니다 ☺ 어느정도 백엔드와 겹치는 부분이 많아 파이프라인 설정부터 웹 훅까지 하나의 포스팅에서 다루어보려고 합니다. .env 파일 서버에 등록하기먼저 배포를 준비하기 위해 .env 파일을 서버에 복사하겠습니다.1. 도커 젠킨스 컨테이너 안으로 들어가기docker exec -it jenkins-server /bin/bash 2. 루트 계정으로 접속하기su - 3. 파일 생성하기vi /var/jenkins_home/.env 3. 파일 작성 후 저장젠킨스 서버에 npm 설치하기배포를 하기 위해 npm install, npm run 등의 명령어를 사용해주기 위해 npm을 먼저 설치해주도록 하겠습니다. 1. 도커 젠킨스 컨테이너 안으로..

article thumbnail
[CI/CD] 도커와 젠킨스, 그리고 WebHooks로 Spring boot 자동 배포로직 만들기
프로젝트/CICD 2024. 6. 19. 15:21

다음과 같이 빌드가 잘 되는 것을 확인하였습니다. 그러면 이제 github 특정 브랜치에 커밋 이벤트가 발생하면 자동으로 배포가 되는 로직을 만들어 주겠습니다. 이러한 로직은 WebHooks를 통해 이루어집니다. 저의 경우에는 master 브런치에 커밋이 푸시될 때 배포가 되도록 하겠습니다. 젠킨스 설정플러그인 설치우선 웹 훅을 이용하기 위해 Generic Webhook Trigger 라는 플러그인을 설치해주도록 하겠습니다.파이프라인 설정이전에 설정한 파이프라인을 수정해보도록 하겠습니다.파이프라인의 상세 내용에 build triggers를 보면 generic Webhook Trigger가 추가된 것을 확인할 수 있습니다. 먼저 Post content parameters를 입력해보도록 하겠습니다. 위에서 ..

article thumbnail
[트러블슈팅][QueryDSL/CI/CD] Attempt to recreate a file for type QClass 해결
프로젝트/CICD 2024. 6. 19. 14:45

프로젝트를 배포하며 자꾸 아래와 같은 에러가 발생하였습니다.+ chmod +x gradlew+ ./gradlew clean bootJarStarting a Gradle Daemon (subsequent builds will be faster)> Task :cleanQuerydslSourcesDir> Task :clean UP-TO-DATE> Task :initQuerydslSourcesDir> Task :compileQuerydsl> Task :compileJavaAttempt to recreate a file for type com.restgram.global.entity.QBaseEntityerror: Attempt to recreate a file for type com.restgram.global..

article thumbnail
[CI/CD] 도커와 젠킨스를 통해 스프링부트 배포하기 with Github
프로젝트/CICD 2024. 6. 18. 18:28

이번 포스팅에서는 깃허브에 있는 스프링부트 코드를 Webhooks를 이용해 배포해보도록 하겠습니다. 젠킨스 안에 도커 인 도커 설치젠킨스를 설치할 때 해당 옵션을 추가하였습니다. 이는 도커 인 도커를 가능하게 해주는 옵션입니다.만약 하지 않았다면 젠킨스를 삭제한 후, 다시 올려주어야 합니다.-v /var/run/docker.sock:/var/run/docker.sock 1️⃣ Jenkins 컨테이너에 접속합니다.docker exec -it jenkins-server /bin/bash 2️⃣ sudo 를 사용하기 위해 관리자 모드로 들어갑니다.su - 3️⃣ Jenkins 안에 Docker를 설치합니다.# Docker 설치## - Old Version Removeapt-get remove docker do..

article thumbnail
[AWS] 볼륨 크기 수정하기
프로젝트/CICD 2024. 6. 18. 18:28

빌드를 하려는데 자꾸 용량이 부족해서 실행이 안되었다. 그래서 AWS의 볼륨의 크기를 수정해보고자 한다. 참고로 default 볼륨 크기는 8GB이고, 프리티어 기준 최대 30GB까지 늘릴 수 있다. 1. AWS > 인스턴스 하단 스토리지 > volume에서 볼륨 수정 클릭저는 지금 16GB까지 올린 상태인데, 처음 하시는 분은 8GB가 할당되어 있을 것입니다. 2. 크기 설정수정할 크기를 입력한다. 3. 완료가 될 때까지 대기볼륨 상태가 modifying -> optimizing -> 사용중이 될 때까지 일정 시간이 소요됩니다. 완료가 될 때까지 기다려주세요. 4. 확인df -h완료가 되면 df -h 명령어를 통해 수정이 되었는지 확인합니다.만일 안되었다면 파티션이 할당되지 않았을 경우일 수 있으니 다..

article thumbnail
[트러블 슈팅][CI/CD] 젠킨스 플러그인 설치하기
프로젝트/CICD 2024. 6. 18. 15:26

저의 경우에는 항상 ..! 젠킨스 플러그인이 한번에 다운로드가 되지 않았습니다. 몇번 더 retry 하다가도 실패하면 수동으로 설치해주어야 합니다. 젠킨스 Dashboard > Jenkins 관리 > Plugins > Installed plugins에 가면 다음과 같이 실패한 항목들도 함께 확인할 수 있습니다. 눈에 띄는 에러는 총 2개로 로드에 실패했다(Failed to load)는 에러와 없다(is missing)는 에러 가 존재합니다.1️⃣ 로드에 실패로드에 실패한 에러는 다음과 같이 Failed to load라고 명시되어 있습니다. 보통 버전이 상이한 경우가 많습니다. 그래서, 해당 플러그인으로 가버튼을 통해 다운그레이드 등으로 버전을 맞추어 주면 됩니다. 2️⃣ 플러그인이 존재하지 않음예를 들어..