docker exec docker run -p 8080:80 httpd 로 포어그라운드에서 실행 docker attach 해도 접속안됨. 글자를 적을 수 있는 인터렉션모드가아니라서. 실행중인 컨테이너의 커맨드를 변경해서 접속하려면 exec를 쓴다bash모드로 실행하면서 인터렉션모드로 진입하는 명령어docker exec -it bash docker run -dit -p 8080:80 httpd라고 하면? 다운받아서 실행시키려면docker run -d AWS/aws CICD-metacoding 2024.09.04
배포v5 -엘라스틱빈스톡+RDS- github action+NLB CI에는 .github/workflows/deploy.yml만 필요(파일명은 중요하지않음 확장자만yml이면 됨)CD에 .ebextensions폴더랑 Procfile파일 필요. deploy.yml 파일이 트리거역할을 하여 CI진행, CD가 진행된다. CI절차 git repository에 푸쉬되는순간 CI서버에우분투설치jdk설치코드다운로드코드테스트build(실행파일 생성)-----------------------------여기까지CI설정하고 github actions 들어가서 활성화 해준다음 , 커밋,푸쉬하면 CI 까지완성 CD절차 그다음 CD진행하려면, deploy.yml에 CD코드를 추가하고 .ebextensions폴더랑 Procfile파일 필요. 엘라스틱빈스톡에*.jar파일을 업로드하면 .. AWS/aws CICD-metacoding 2024.08.20
배포v5 롤링배포 롤링 배포전략 -무중단 배포 프로젝트의 새로운버전을 배포하려고 할때의 전 1. 한번에 모두 (무중단 배포가 아님)- 두개의 ec2 모두 서비스가 중단되고 둘다 새로운 프로젝트가 가동 2. 추가배치- 새로운 ec2생성 후 여기에만 새 프로젝트를 배포함 배포가 정상적으로 되면 LB가 이 새로운 ec2에 연결되고 , 나머지 ec2 하나하나 차례대로 하나씩 중단시키면서 새 프로젝트로 바꿈 (무중단 배포가능) -> ec2가 많을수록 오래걸림, 중간에 에러가 발생하면 롤백해야하는데 오래걸림 3. 변경불가능(블루/그린) 배포기존것을 블루 , 새버전을 그린이라 하고 새로운 ec2 2개를 만들어서 둘다 정상이면 순간적으로 새로 만든 ec2로 LB를 연결시킴만약 새 ec2에 에러가 나면 그냥 지우면 되서 롤백.. AWS/aws CICD-metacoding 2024.08.20
배포v5 엘라스틱빈스톡+RDS -기본 설정 시작전 준비사항엘라스틱빈스톡 환경종료, 애플리케이션종료RDS종료EC2, elastic IP 삭제Elastic Block Store 스냅샷 삭제보안그룹 default보안그룹만 남기고 삭제 (B보안그룹에 C보안그룹이 의존하게되면 B가 삭제가안됨. C부터 삭제해야함)리전을 서울로 맞추기 비용개념 엘라스틱빈스톡EC2 - 750시간무료 2대S3 - (파일저장소)RDS - 750시간 무료 1대로드밸런서 - 750시간 무료 2대 v5절차 기존 v3,v4 는 window개발환경에서 테스트,빌드하고 리눅스 환경에서 실행하는 위험이있다.그래서 v5에서 github에 배포하면 CI 서버에서 테스트하고 빌드하여 실행파일 생성한다.단 CI서버는 aws환경과 동일해야한다. 이대로 AWS에 배포하면 CI에서 실행했.. AWS/aws CICD-metacoding 2024.08.20
배포v4 엘라스틱빈스톡 + RDS 다음 속성은 환경변수로서 애플리케이션에 전달된다. 엘라스틱빈스톡에서 애플리케이션생성 - 구성설정환경속성에 다음을 추가해주자RDS_HOSTNAME RDS_DB_NAME metadb(DB명)RDS_PORT 3306(마리아db포트)RDS_USERNAME metacoding(사용자명)RDS_PASSWORD metacoding1234 참고) 단일 인스턴스로 구성하면 로드밸런서가 안만들어진다. VPC(virtual private cloud) 란? vpc1은 외부엑세스를 허용시키고 vpc2는 외부 엑세스를 금지시킨다.ec2는 외부 접근이 가능해야하므로 vpc1에 두고 db는 외부에서 접근이 불가능해야하므로 vpc2에 둔다.vpc1에서 vp.. AWS/aws CICD-metacoding 2024.08.19
배포v3 엘라스틱빈스톡 엘라스틱빈스톡-OS 설치가 필요없음 ( 이미 설치가 되어 있음)-EC2 설치가 필요없음( 이미 설치 되어 있음)-JDK 설치가 필요없음( 이미 설치 되어 있음)-오토 스케일링, 각종 소프트웨어 구성 로드밸런서,모니터링,업데이트버전관리 플랫폼구성할때 Java , Corretto 11 선택보안그룹은 선택하지 않는다. 어차피 새로 생성되서 구성된다. 기존 보안그룹을선택해서 만들면 보안그룹이 2개 지정될것이다. EC2(52.90.137.105) 가 만들어지면서 내부에 JDK가 설치되고 NGinX서버(프록시 서버)가 만들어지고 샘플코드가 업로드되고 샘플코드가 JDK에 의해 실행됨 nginx포트는 80포트이고 샘플코드의 포트는 5000포트이다EC2앞에 로드밸런서(3.86.175.250)가 하나 만들어짐클라이언트.. AWS/aws CICD-metacoding 2024.08.19
크론탭 주의사항- sudo 비번을 요구하는 명령어 sudo netstat -nlpt 명령어가 포함된 스크립트를 크론탭으로 실행했을때 제대로 실행이 안된다sudo명령어를 쓸때 비번을 묻는게 나오기 때문... 크론(cron) 작업으로 스크립트를 실행할 때 환경이 로그인 시 사용되는 쉘 환경과 상당히 다를 수 있습니다. 특히 sudo netstat -nlpt 명령이 크론 환경에서 예상대로 실행되지 않을 수 있는 여러 이유가 있습니다. 크론탭에서 문제가 발생하는 주요 이유환경 변수: 크론은 매우 제한적인 환경에서 실행되므로 PATH와 같은 환경 변수가 기대하는 설정을 갖고 있지 않을 수 있습니다. netstat 명령이 크론에서 실행되지 않을 수 있는데, 이는 PATH 환경 변수에 netstat의 경로가 포함되어 있지 않기 때문일 수 있습니다.권한 문제: 크론 .. AWS/aws CICD-metacoding 2024.08.15
크론탭에서의 상대경로가 있는 파일 등록시 주의사항 vi check-and restart.sh-------------------------------#!/bin/bashsource ./var.shif [ -z "$PROJECT_PID" ]; then nohup java -jar -Dspring.profiles.active=prod ${JAR_PATH} 1>${HOME}/log.out 2>${HOME}/err.out &fi ------------------------------- source ./var.sh는크론탭에 등록하는 해당 파일의 위치가 아니라${HOME} 위치에서 var.sh 를 찾는다 거기에 없다면 변수를 불러올수없어서 에러난다. AWS/aws CICD-metacoding 2024.08.13
./gradlew build 에러 Unsupported Class File Major Version 65 java -version javac -version 안맞으면 build가 안되더라쓸데없는 자바 삭제하면 되네? 설치된 자바 패키지를 확인한다dpkg --list | grep -i openjdk 원치않는 자바 삭제sudo apt-get remove --purge openjdk-21-jdksudo apt-get remove --purge openjdk-21-jre autoremove는 더 이상 필요하지 않은 의존성 패키지를 제거하고, autoclean은 패키지 캐시에서 다운로드된 패키지 파일들을 정리합니다.sudo apt-get autoremove sudo apt-get autoclean AWS/aws CICD-metacoding 2024.08.13
리눅스 파일 압축 방법 압축하는법 tar : 압축하거나 풀떄-c :tar로 묶을때-v : 압축을 하거나 풀때 출력을 화면에 보여줄지말지-f : 파일이름 지정할 수있음-x tar로 압축을 풀떄 ex) tar -cvf hello.tar a.txt b.txt :a와 b파일을 압축함ex) tar -xvf hello.tar hello파일을 압축품 tar -cvf deploy.tar check-and-restart.sh deploy.sh var.sh 로 묶어두고 쓴다. AWS/aws CICD-metacoding 2024.08.13