Docker와 Jenkins를 통한 싱글 서버 구성 방식 및 flowDocker Out-of-Docker예시Jenkins 컨테이너:하나의 Docker 컨테이너에 Jenkins를 띄워서 CI/CD 파이프라인을 관리Jenkins가 Docker 명령어를 실행할 수 있도록, 보통 Docker 소켓(/var/run/docker.sock)을 마운트하거나 Docker 플러그인을 사용애플리케이션 컨테이너:또 다른 Docker 환경(컨테이너 또는 Docker Compose를 활용)에서 Spring Boot 애플리케이션과 MySQL 데이터베이스를 실행이 컨테이너들은 Jenkins 파이프라인에 의해 빌드, 배포 및 관리즉, Jenkins는 Docker 환경에 있는 애플리케이션(예: Spring Boot, MySQL 컨테이너..
Secrets 및 변수 설정Secrets 설정 방법.env 방식: properties 파일처럼 선언하고, Secret에 Name(key)와 Secret(Value를 등록secret.properties 방식: 아래와 같이 Repository Secret에 Key-Value형태로 추가 - 이 방법으로 진행)이후 Workflow에서 secret.properties 파일을 생성하고, Secret의 내용을 echo 명령어로 작성Workflow 작성배포 과정 요약코드 체크아웃: Github Actions는 매번 새로운 환경에서 실행되므로, 코드 저장소를 가져와야 함JDK 설정 및 의존성 설치: local에서 작업했던 스프링 버전에 맞추기mvnw 실행 권한 추가: Jar파일 파일 생성 시 필요한 Maven Wra..
Secret 설정EC2 서버 IP주소와 Keypem 파일 내용 저장하는 secret을 만들어줬다. 추후 EC2 서버에 접속 및 권한 설정과 push된 내용 cp로 복붙이동을 위해선 필요하기때문에 추가해줬다Workflow 작성진행 과정코드 체크아웃(GitHub Action이 매번 새로 실행되기 때문에 저장소 코드 가져오는 명령어 필요)Node.js 설정 및 의존성 설치, npm을 이용한 vue내용 빌드이전에 저장해뒀던 secrets를 활용 및 scp명령어 통해서 폴더 해당 ec2서버에 저장ec2 접속 및 nginx가 해당 폴더에 실행 권한 가질 수 있도록 설정 변경 name: Deploy Frontend to EC2on: push: branches: - dev/fejobs: deploy..
HTTPS 적용 개요HTTPS 사용 이유HTTPS는 데이터를 암호화하여 클라이언트와 서버 간 통신을 안전하게 만듬개인정보 보호 및 데이터 무결성을 유지하며, 브라우저에서 "보안되지 않은 연결" 경고를 방지Let's Encrypt를 활용하면 무료로 SSL/TLS 인증서를 발급받아 HTTPS를 구현Webroot 방식으로 HTTPS 적용Certbot 대신 Webroot 방식을 사용하는 이유Amazon Linux 2에서는 python3-certbot-nginx 패키지가 지원되지 않아 Certbot을 통한 자동 설정이 어렵다대신 Webroot 방식을 사용해 Nginx를 통한 HTTPS를 설정한다Webroot를 활용한 인증서 발급1. 인증서 발급/home/ec2-user/dist는 example로 정적 index...
도메인구입도메인 제공 업체: 가비아 (GABIA)구입 도메인: inssaroute.shop선택 이유.shop 도메인 초기 1년 비용이 550원으로 저렴.대신 1년 이후 갱신 비용이 48500원(하지 말것)DNS 설정 서버 설정 변경Nginx 수정 필요server ip → server domain이름Vue재빌드 후 서버로 옮기기이유: Vue axios의 baseURL이 ip로 되어있어 해당 domain name으로 변경 필요하다1. dist폴더를 지워야하는데 권한이 user가 아닌 nginx, 따라서 아래 명령어를 통해 권한 user로 돌리기 및 삭제sudo chown -R $USER:$USER distrm -rf dist2. local vue파일의 base url 도메인으로 수정 baseURL: "ht..
EC2 인스턴스 생성 및 설정EC2 생성 과정Amaozn Linux 2 vs Linux 2023에서 Linux 2를 선택한 이유아래글과 같은 오류도 있고 Linux2가 2018년 출시 이후 쌓아온 호환성과 풍부한 자료를 무시할 수 없다고 생각당장 linux 서버에서 최신 기술 적용할려 했던 프로젝트가 아니기 때문에 최신 기술 내용은 배제하고 선택함 AWS에서 Amazon Linux 2023 AMI를 사용 하면 안... - 인프런 | 커뮤니티 질문&답변누구나 함께하는 인프런 커뮤니티. 모르면 묻고, 해답을 찾아보세요.www.inflearn.com생성 기본 설정인스턴스 유형t2.micro(1 vCPU, 1GB RAM): 프리 티어 사용 가능단, Spring 서버를 장기적으로 운영할 경우 성능 한계가 있을 수..
Cerbot을 통해 적용했던 HTTPS 인증서의 만료HTTPS는 웹 사이트와 사용자 간의 데이터 통신을 암호화하여 보호해 주는 보안 프로토콜이다. Cerbot은 이러한 HTTPS 인증서를 무료로 발급해주는 Let's Encrypt와 통함된 도구로 SSL/TLS 인증서를 쉽게 관리하고 갱신할 수 있도록 도와준다Cerbot이란?Let's Encrypt에서 제공하는 무료 SSL 인증서를 자동 설치 및 갱신하는 오픈 소프트웨어이다. 유효기간은 90일이다. 따라서 매번 수동 갱신을 할 것이 아니라면 자동 갱신을 설정해주는게 일반적이다. 기존 프로젝트의 Cerbot 유효기간 만료처음 적용할 당시 자동 갱신을 적용하지 않아 이렇게 90일이 지난 exam-lab.store 은 https가 적용이 되지 않은 모습이다. ..
발생하는 문제문제 찾기 현재 가상서버(Ubuntu 20.04)에 Elasticsearch DB가 작동되게끔 docker를 통해 컨테이너를 실행중입니다. 타 서버에 돌아가는프로젝트에서 Elasticsearch 관련 API 호출시 첫 호출이 오류로 돌아오거나 상당한 시간이 소요되는 문제점이 있었습니다.발견된 문제점기존 Ubuntu 18.04 버전에서는 확인되지 않았던 문제였지만 20.04 버전은 서버 구성 시 일정 시간이 지나면 네트워크 인터페이스까지 대기모드로 들어가는 현상이 발생합니다.해결 방안대기 모드와 관련된 서비스 유닛을 비활성화하는 대신에 'mask' 명령을 사용하여 변경하는 것으로 문제를 해결했습니다. 이를 위해 다음과 같은 단계를 수행했습니다.'mask' 명령을 사용하여 대기 모드 관련 서비스..