인프라 구조가 조금씩 바뀔 것 같아 깃헙에 있던 최초의 배포 과정을 따로 이곳에 포스팅하게 됐다. Private Subnet 내의 위치한 EC2 서버 접근은 우선 putty로 SSH 접속하였지만 AWS SSM을 이용한 더 안전한 방식이 있어 나중에 따로 정리해볼 계획.
1. 배포
1.1 배포 과정
- jar 빌드
./gradlew clean build
/build/libs 하위 경로에 jar 파일 생성됨 - VPC 리소스 사전 구성 (ElasticBeanstalk구성 시 기본 VPC 사용하지 않게 하기 위함)
VPC ⇒ IGW ⇒ Subnet ⇒ RoutingTable 순으로 생성하였음 - 키페어 생성
- ElasticBeanstalk(이하 EB) 애플리케이션, 환경 구성
사용자 지정 옵션을 선택하여 앞서 구성한 VPC & 키페어 지정, DB 사용자 정보 등 입력 - 환경 구성 시작. 수 분 소요.
- 로컬 PC에서 DB, EC2에 접근할 수 있게 커스텀 Security Group 생성
SSH, HTTP, HTTPS, MySQL(TCP 3306) 허용 - RDS에 퍼블릭 접근 허용, 커스텀 SG 추가 후 즉시 적용
- MySQL 스키마, 테이블 생성 (/doc/DDL.sql 참고)
- EB에 환경속성 추가 (application.yml에서 사용될 것임)
RDS_HOSTNAME , RDS_PASSWORD , RDS_PORT , RDS_SCHEMA_NAME , RDS_USERNAME , SPRING_PROFILES_ACTIVE - EC2에 커스텀 SG 적용 후 ssh 접속 가능여부 및 로그 확인
/var/log/nginx/access.log
/var/log/nginx/error.log
/var/log/web.stdout.log
/var/log/eb-engine.log
- 앱 서버 다시 시작. 서비스 확인.
- 도메인 구입. 레코드 추가. Route53을 사용해 EB를 지정한다면 별칭을 사용할 것. 레코드 유형은 A-IPv4
- SSL 인증서(ACM) 적용. 기존 HTTP80 리스너는 HTTPS443으로 리다이렉트
1.2 주의
- default VPC, default subnet 절대 삭제하지 말자. default subnet 없으면 EB 구성 시 오류 발생. 콘솔에서 다시 생성할 수 없어 CLI를 쓰거나 SupportCase 등록 필요.
- CLI를 이용한 default VPC 생성 방법
'프로젝트 > 단어일기장' 카테고리의 다른 글
[단어 일기장] UI/UX 분석 (0) | 2023.07.08 |
---|---|
[단어 일기장] 이메일 인증기능 개발 : Amazon SES (0) | 2023.06.20 |
[단어 일기장] 제작 의도 (1) | 2023.06.14 |