01 AWS 이해01 - 1 AWS 배포를 위한 프로젝트 환경설정 1. 1 JDK 설치 JDK(Java Development Kit) 1. 2 환경변수 설정 1.2.1 윈도우 shell 명령어 1.2.2 환경변수 설정 1. 3 Visual Studio Code 설치 1.3.1 Java Extension 1.3.2 Spring Extension 1.3.3 Lombok 1. 4 포스트맨 설치 1. 5 Git 설치 1. 6 프로젝트 저장 경로01 - 2 이 책의 학습 목표(AWS)01 - 3 전산실을 구축할 때 고려할 점01 - 4 AWS 탄생 배경 4. 1 제프 베이조스01- 5 AWS 회원 가입01 - 6 EC2 서버 임대01 - 7 EC2 서버에 접속하기(Windosw & Mac) 7. 1 Windows 7.1.1 mobaXtem 설치 7.1.2 mobaXtem 실행 7. 2 Mac 7.2.1 asw-key 파일이 저장되어 있는 경로로 이동 7.2.2 asw-key 파일에 실행 권한 부여 7.2.3 EC2 접속 7.2.4 한 줄로 EC2 접속하기01 - 8 네트워크 기본기 - 패킷의 여행 8. 1 패킷 8.1.1 서킷 스위칭 8.1.2 패킷 스위칭 8. 2 IP 주소 8.2.1 IPv4 8.2.2 IPv6 8. 3 포트 번호01 - 9 EC2 서버 방화벽 9. 1 방화벽 9. 2 Secure가 붙은 이유01- 10 RSA 인증방식 10. 1 대칭키 암호화 방식 10. 2 공개키 암호화 방식(RSA) 10. 3 프로토콜 10.3.1 데이터 송신 방법 10.3.2 데이터 수신 방법 10. 4 RSA 개념이 필요한 이유02 리눅스 명령어 학습02 - 1 리눅스 명령어 step 1 1. 1 clear 1. 2 pwd 1. 3 cd 1. 4 ls 1. 5 절대 경로와 상대 경로02 - 2 리눅스 명령어 step 2 2. 1 --help 2. 2 -a, --help 2. 3 mkdir 2. 4 touch 2. 5 rm 2. 6 Ctrl + C02 - 3 리눅스 명령어 step 3 3. 1 cp(copy) 3. 2 mv(move) 3.2.1 파일 이동 3.2.2 파일명 변경 3. 3 In(link)02 - 4 리눅스 명령어 step 4 4. 1 Windows에서 프로그램(카카오톡)을 설치할 때 4. 2 ubuntu repository 4.2.1 ubuntu repository 등록 4. 3 PPA 저장소02 - 5 리눅스 명령어 step 5 5. 1 sudo apt update 5. 2 apt 5.2.1 파이프라인(|) 5.2.2 grep 5.2.3 포트 확인 5. 3 인바운드 규칙 설정02 - 6 리눅스 명령어 step 6 6. 1 PPA(Personal Package Archive) : 개인 저장소 6. 2 프로그램 삭제 6. 3 PPA 찾기 6.3.1 우분투 코드 네임 확인 6. 4 PPA 추가 6. 5 apt 메뉴판 update 6. 6 tomcat8 설치 6. 7 저장소 삭제02 - 7 리눅스 명령어 step 7 7. 1 프로세스(Process) 7. 2 스레드(Thread) 7. 3 context-switching 7. 4 sleep02 - 8 리눅스 명령어 step 8 8. 1 프로세스와 서비스 8.1.1 service 8.1.2 syetemctl 8. 2 ps 프로세스 명령어 8.2.1 ps -ef 8.2.2 kill 8. 3 restart 8. 4 tomcat8 pid 찾는 script 작성해보기02 - 9 리눅스 명령어 step 9 9. 1 vi 9.1.1 일반 모드 9.1.2 입력 모드 9.1.3 명령행 모드02 - 10 리눅스 명령어 step 10 10. 1 root 접속 10. 2 root로 파일 생성 10. 3 권한 10.3.1 그룹 10.3.2 권한 변경 chmod 10.3.3 모두에게 전체 권한 부여02 - 11 리눅스 명령어 step 11 11. 1 chown 소유자: 그룹 변경02 - 12 리눅스 명령어 step 12 12. 1 파일 찾기 12. 2 tomcat 저장 위치 살펴보기 12. 3 index.html 파일 권한 변경 12. 4 index.html 파일 수정 12. 5 포트 변경02 - 13 리눅스 명령어 step 13 13. 1 tail 13. 2 표준 입출력 13.2.1 표준 입력 스트림 stdin(0) 13.2.2 표준 입력 스트림 stdout(1) 13.2.3 표준 입력 스트림 stderr(2) 13. 3 표준 입출력 변경02 - 14 EC2 서버 종료하는 법03 AWS EC2 기본 배포하기03 - 1 배포 V1 흐름 이해하기 기본이 되는 배포 V103 - 2 프로젝트 다운받고 실행해보기 2. 1 프로젝트 설명 2.1.1 프로젝트 다운로드 2.1.2 프로젝트 실행:로그 확인 2.1.3 프로젝트 실행 종료 2.1.4 테스트 파일 확인 2. 2 배포 방법03 - 3 EC2 서버 생성 및 고정 IP 설정 3. 1 EC2 서버 생성 3. 2 고정 IP 설정 3. 3 탄력적 IP 생성 3. 4 탄력적 IP 주의사항 3. 5 탄력적 IP 연결03- 4 프로젝트 배포하기 V1 4. 1 git 설치 확인 4. 2 프로젝트 git clone 4. 3 gradlew 실행 권한 부여 4. 4 JDK 설치 4. 5 실행 파일로 변경(gradlew) 4. 6 jar 파일 실행하기03 - 5 프로젝트 배포하기 V1 5. 1 plain.jar 파일 생성되지 않는 코드 추가 5. 2 nohup 5. 3 로그 확인 nohup.out 5. 4 실시간 로그 모니터링 tail03 - 6 로그 파일 위치 변경 6. 1 프로세스 종료 6. 2 로그 파일 변경 후 실행03 - 7 표준 출력, 표준 에러 7. 1 표준 출력(1)과 에러 출력(2) 7.1.1 정상 로그와 에러 로그를 분리하는 이유03 - 8 타임존 변경 및 종료 스크립트 작성 8. 1 timezone 세팅 8. 2 pgrep 8. 3 종료 스크립트 작성 8.3.1 스크립트 파일 생성 8.3.2 종료 스크립트 작성 8.3.3 실행 권한 부여 8.3.4 스크립트로 프로세스 종료 8. 4 서버 재시작03 - 9 cron 주기적 실행 9. 1 cron 개념과 실습 9. 2 cron 자동화03 - 10 스크립트로 cron 등록03 - 11 cron으로 프로젝트 재시작 11. 1 spring-stop.sh 11. 2 spring-restart.sh 11. 3 deploy03 - 12 재배포 프로세스 이해 12. 1 재배포 프로세스 이해03 - 13 재배포하기 13. 1 기존 서버 중지 13. 2 aws-v1 폴더 삭제 13. 3 프로젝트 다운로드 13. 4 gradlew 실행 권한 부여하기 13. 5 빌드 13. 6 jar 실행시키기 13. 7 cron으로 자동 재시작04 AWS EC2 배포 자동화 스크립트로 배포하기04 - 1 AWS-V2 목표 1. 1 V1 로직 1. 2 V2 로직04 - 2 EC2 서버 생성 및 고정 IP 설정 2. 1 EC2 인스턴스 생성 2. 2 고정 IP 2. 3 탄력적 IP 설정 04 - 3 환경 변수와 bashrc 3. 1 환경 변수 3. 2 export 3. 3 source04 - 4 환경 변수를 특정 파일에 적용하기 4. 1 환경 변수 파일 생성 4. 2 환경 변수 등록 4. 3 원하는 파일에서만 환경 변수 사용 4. 4 환경 변수 적용 범위04 - 5 재배포를 고려한 cron 종료 5. 1 deploy.sh 스크립트에 crontab 종료 설정 5. 2 cron delete04 - 6 서버 종료 및 프로그램 설치 6. 1 PID 찾아서 프로세스 종료시키기 6. 2 자바 실행파일 이름 구조 파악 6.2.1 프로젝트 이름 6.2.2 프로젝트 버전 6.2.3 plain.jar 파일 생성하지 않는 설정 6. 3 환경 변수 설정 6. 4 환경 변수 적용 6. 5 실제 스크립트 작성 6. 6 스크립트 실행04 - 7 프로젝트 다운로드 및 빌드 7. 1 sleep을 걸어주는 이유 7. 2 스크립트 실행 7. 3 jar 파일 실행04 - 8 서버 실행하기 8. 1 스크립트 작성 8. 2 스크립트 실행 8. 3 로그 파일 저장 위치 변경04 - 9 cron 등록 9. 1 check-and-restart.sh 생성 9. 2 스크립트 실행(배포 스크립트 완성) 9. 3 강제로 서버 종료시키기 9. 4 테스트 없이 jar 빌드 하는 방법04 - 10 배포 파일 압축하기 10. 1 tar 10.1.1 tar 압축 연습 10. 2 실제 배포 파일 tar 압축 10. 3 파일 전송04 - 11 배포 파일로 실제 배포하기05 엘라스틱빈스톡으로 배포하기05 - 1 엘라스틱빈스톡 샘플 코드 실행 1. 1 엘라스틱빈스톡05 - 2 엘라스틱빈스톡 내부 구성 2. 1 엘라스틱빈스톡 생성 2. 2 로드밸런서 2. 3 NGinX 서버는 외부 IP 요청을 거부한다05 - 3 엘라스틱빈스톡 프로젝트 대표 3. 1 jar 파일 만들기 3.1.1 프로젝트 다운로드 3.1.2 프로젝트 빌드 3. 2 프로젝트 업로드 및 배포 3.2.1 프로젝트 업로드 3.2.2 “심각” 상태가 뜨는 이유05 - 4 엘라스틱빈스톡 오류 없이 배포하기 4. 1 jar 파일 만들기 4.1.1 프로세스 설정05 - 5 엘라스틱빈스톡 SSH 접속 5. 1 실행 중인 프로세스 확인 5. 2 포트 확인 5. 3 NGinX05 - 6 엘라스틱빈스톡 종료하기06 엘라스틱빈스톡 & 데이터베이스06 - 1 엘라스틱빈스톡 생성 1. 1 엘라스틱빈스톡 Create Application 1. 2 추가 옵션 구성 1.2.1 사전설정 : 단일 인스턴스(프리 티어 사용 가능) 1.2.2 소프트웨어 편집 1.2.3 로드밸런서 1.2.4 보안 1.2.5 데이터베이스06 - 2 VPC 구성 2. 1 EC2 2.1.1 보안 그룹 2. 2 VPC(Virtual Private Cloud) 가상 사설 클라우드 2. 3 CIDR 표기법 2.3.1 IP 주소 2.3.2 네트워크 클래스 2.3.3 서브넷 마스크 2.3.4 CIDR 2.3.5 서브넷 06 - 3 RDS 생성 및 접속(Windosw, Mac) 3. 1 RDS 생성 3. 2 인바운드 규칙 편집 3. 3 정리 3. 4 RDS 접속 3.4.1 Windows 접속 3.4.2 Mac 접속06 - 4 RDS 세팅하기 4. 1 데이터베이스 생성06 - 5 배포 V4 프로젝트 살펴보기 5. 1 프로젝트 다운로드 5. 2 프로젝트 실행해보기 5. 3 프로젝트 내부 구조 5.3.1 yml 설정 파일 5. 4 환경 속성 변경06 - 6 배포 및 테스트 6. 1 빌드 6. 2 엘라스틱빈스톡 6. 3 배포 완료 6. 4 테스트07 엘라스틱빈스톡 & 데이터베이스 & CI/CD 배포하기07 - 1 배포 V5 시작 전 준비사항 1. 1 엘라스틱빈스톡 환경 종료 07 - 2 AWS 요근 정책 2. 1 AWS-V5에서 사용할 서비스 2.1.1 엘라스틱빈스톡 2.1.2 로드밸런스 07 - 3 AWS-V5 전체 구성 이해하기 3. 1 이전 배포 방식 3. 2 V5 배포 구성(CI/CD) 07 - 4 CI/CD란? 4. 1 폴링(polling) 기법 4. 2 웹훅(Webhook) rlqjq 07 - 5 AWS 사용자 / 정책 / 그룹 / 역할 이해하기 5. 1 IAM(Identity Access Manager) 5.1.1 사용자 5.1.2 그룹 5.1.3 정책 5.1.4 역할 07 - 6 Github 프로젝트 fork 하기 07 - 7 RDS 생성하기 7. 1 보안 그룹 설정 7.1.1 보안 그룹 생성 7.1.2 보안 설정 7. 2 RDS 생성 7.2.1 데이터베이스 생성 7.2.2 데이터베이스 접속07 - 8 엘라스틱빈스톡 생성 8. 1 create application 8.1.1 추가 옵션 구성 07 - 9 롤링 : 배포 전략 9. 1 한 번에 모두 9. 2 추가 배치 9. 3 변경 불가능(블루/그린 배포) 07 - 10 배포 V5 현재 구성 살펴보기 10. 1 Application Load Balancer 10. 2 Auto Scaliling Group 10.2.1 EC2 10. 3 RDS 10. 4 ALB(Application Load BAlancer) 10. 5 NLB(Network Load Balancer) 07 - 11 시큐리티 보안 그룹 설정 이해 11. 1 EC2로 다이렉트 접근이 불가능한 이유 11. 2 RDS 보안 그룹 수정 07 - 12 Github Action(CI/CD 도구) 12. 1 프로젝트 다운로드 12. 2 .github/workflows/deploy.yml 12.2.1 name 12.2.2 jobs 12. 3 Push 12.3.1 Github Action 07 - 13 엘라드틱빈스톡 배포 첫 번째 도전(실패) 13. 1 deploy.yml 13.1.1 steps 13. 2 jar 배포와 zip 배포의 차이점 13.2.1 jar 배포 13.2.2 zip 배포 13. 3 00-makeFiles.config 13. 4 Procfile 13. 5 엘라스틱빈스톡 배포 도전 07 - 14 엘라드틱빈스톡 배포 첫 번째 도전(성공) 14. 1 IAM 14.1.1 IAM 생성 14.1.2 IAM 등록 14. 2 엘라스틱빈스톡에 배포 두 번째 도전 07 - 15 한글 입력 오류 해결 15. 1 RDS 파라이터 그룹 수정 15. 2 오류 로그 확인 15.2.1 Procfile 15.2.2 sbin 15.2.3 로그 저장 위치 07 - 16 네트워크 로드밸런서 고정 IP 설정 16. 1 ALB와 NLB의 차이 16. 2 EC2 탄력적 IP 생성 16. 3 EC2 로드밸런서 생성 16.3.1 Network Load Balancer