준비물
- 계정 ID, 사용자 이름, 비밀번호, 그 외 필요한 리소스들
서버 배포 - AWS EC2
- EC2 인스턴스를 생성한다.
- AWS의 EC2 서비스의 인스턴스 탭에서 연결하고자 하는 인스턴스를 찾아 선택한 후, 연결 버튼을 누른다.
- Session Manager를 사용하여 연결을 시도한다.
- Session Manager 탭에서 연결 버튼을 누르면 터미널이 열리는데, 여기서 개발 환경을 먼저 구축해준다.
- sudo apt update
- sudo apt install openjdk-11-jre-headless
- java -version 명령어를 통해 설치 유무 확인
- 서버로 사용될 프로젝트를 git clone 등을 통해 가져와서 build로 실행파일을 만든다.
(디렉토리 잘 확인하기) - java -jar xxxxxx.jar 명령어로 서버 실행
- 연결하고자 했던 인스턴스의 IP 주소로 접속을 시도한다.
AWS EC2 > 인스턴스 > 사용하려는 인스턴스 찾아서 클릭 > 퍼블릭 IPv4(DNS)로 접속 > 실패!
접속하기 위해서는 보안그룹 설정(Security Group) 필요!! - AWS EC2 > 네트워크 및 보안 > 보안 그룹 > 인바운드 규칙 설정 > 재접속 시도 > 서버 접속 성공!
클라이언트 배포 - S3
(JavaScript, React를 통해 작성된 코드를 배포하기 위한 사전 작업)
--------------------(Local PC에서의 작업)--------------------
1. nvm(node version manager) 설치, nvm --version을 통해 설치 유무 확인
//글 작성 기준 최신 버전: 0.39.2
wget -qO- https://raw.githubusercontent.com/nvm-sh/nvm/vx.xx.x/install.sh | bash
여기서 에러 발생해서 해결함!
https://babyadventure.tistory.com/18
2. node.js 설치, node -v를 통해 설치 유무 확인
#글 작성 기준 node.js 최신 LTS 버전: v18.12.1
#최신 LTS 버전의 node는 nvm install --lts 명령어를 통해 설치할 수 있지만,
#17, 18 버전은 빌드 시 에러가 발생해서 16 사용
nvm install 16
3. 정적 웹페이지 빌드
3-1. package.json이 있는 폴더로 이동해서 npm install
3-2. package.json이 있는 폴더에 있는 .env 파일에 환경변수 설정
3-2-1. http(s):// 와 포트가 포함된 url 주소
3-3. package.json이 있는 폴더에서 npm run build
3-3-1. Compiled Successfully 뜨면 성공
3-3-2. build 폴더 생성됨!
4. 버킷을 정적 웹 사이트 호스팅 용으로 구성
4-4. AWS S3 > 버킷 > 사용할 버킷 클릭 > 속성 > 스크롤 가장 아래로 내려 정적 웹 사이트 호스팅 활성화 선택
4-4-1. 인덱스 문서에 index.html 기입 후 저장
4-5. 정적 웹 사이트 호스팅에 적혀있는 버킷 웹 사이트 엔드포인트로 접속해서 화면 확인 > 에러!!
4-5-1. 정적 웹페이지 업로드 / 퍼블릭 액세스 설정 & 정책 생성 필요
5. 빌드된 정적 웹 페이지 업로드
5-6. AWS S3 > 버킷 > 사용할 버킷 클릭 > 객체 > 업로드
5-6-1. 3-3-2에서 생성된 build 폴더 안에 포함된 파일들 업로드(build 폴더 통째로 옮기면 안됨!)
5-6-2. 파일 업로드 완료되면 업로드 버튼 누르기 > 업로드 성공 메시지 확인
6. 퍼블릭 액세스 차단 해제 및 정책 생성
6-1. AWS S3 > 버킷 > 사용할 버킷 클릭 > 권한
6-1-1. 퍼블릭 액세스 차단의 편집 버튼 클릭 > '모든 퍼블릭 액세스 차단' 체크박스 해제 후 저장
6-2. AWS S3 > 버킷 > 사용할 버킷 클릭 > 권한 > 버킷 정책 옵션 > 편집 버튼 클릭
6-2-1. 정책 생성기 클릭 > 필요에 맞는 정책 생성 후 Generate Policy 클릭
6-2-2. 생성된 JSON 형태의 텍스트 복사 후 버캣 정책 편집 페이지로 이동
6-2-3. 복사한 텍스트 정책에 붙여넣기 후 저장
6-3. AWS S3 > 버킷 > 사용할 버킷 클릭 > 속성 클릭
6-3-1. 정적 웹 사이트 호스팅 옵션에서 버킷 웹 사이트 엔드포인트로 접속 > 성공!
데이터베이스 배포 - RDS
1. AWS RDS > 데이터베이스 > 데이터베이스 생성
1-1. DB 엔진 옵션 > MySQL
1-2. 튜토리얼이니까 프리 티어 선택
1-3. 식별자 이름, 마스터 이름, 암호 설정
1-4. RDS 인스턴스 클래스 - t2.micro 선택
1-5. 퍼블릭 액세스 가능 -> 예
1-6. 보안그룹, 포트번호 설정
1-7. 추가구성 에서 초기 데이터베이스 이름 설정
1-8. 데이터베이스 생성 버튼 클릭 => DB 인스턴스 생성 완료
2. AWS RDS > 데이터베이스 > 사용할 DB 인스턴스 클릭
2-1. 연결 & 보안의 엔드포인트 체크
2-2. Local PC의 터미널에 mysql -u [마스터 이름] --host [엔드 포인트 주소] -P [포트 번호] -p 입력
2-3. 비밀번호 요구 시 마스터 비밀번호 작성
2-4. 터미널에서 show DATABASES; 로 초기 데이터베이스 이름으로 정한 DB가 있는지 확인 > 성공!
------------------------------------------------------------------------
---- 여기까지는서버와 데이터베이스가 각각의 환경에서 따로 작동하는 중 ----
3. RDS에 접속하고 클라우드 DB 사용할 수 있게 서버코드에 있는 application.properties에 환경변수 설정
3-1. (EC2 인스턴스에서 실행 중인 서버 종료 후) EC2 터미널에서 단계 진행
3-2. spring.jpa.xx, spring.datasource.xxx 등 필요한 프로퍼티 설정
(여기서 문제가 조금 있었지만 해결~)
3-3. 저장 하고 수정된 환경변수를 적용하기 위해 build 수행
4. java -jar 를 통해 서버 실행 > 성공!
'🌩️Cloud' 카테고리의 다른 글
Scale up & Scale out (0) | 2022.12.09 |
---|---|
Forward Proxy & Reverse Proxy (0) | 2022.12.09 |
배포 자동화 with AWS (0) | 2022.12.07 |
Docker 基本 (0) | 2022.12.06 |
AWS 학습을 위한 기본 학습 (0) | 2022.12.02 |