교육/코드스테이츠
[30일차] 정적 웹 호스팅
nooh_ij
2023. 1. 6. 23:03

정적 웹 호스팅
정적 파일만으로 구성된 파일을 호스팅하는 것으로, 이를통해 높은 성능과 비용 부담을 덜 수 있다.
클라이언트 배포 (S3)
- S3 콘솔을 통해 버킷을 생성 한다.
- 버킷명은 전 Region에서 고유해야 한다
- 퍼블릭 액세스 차단 설정 편집
- 기본적으로 Amazon S3은 계정 및 버킷에 대한 퍼블릭 액세스를 차단한다. 버킷을 사용하여 정적 웹 사이트를 호스팅하려는 경우 이러한 단계를 사용하여 퍼블릭 액세스 차단 설정을 편집할 수 있다.

- 정적 웹 호스팅 활성화 - 속성 선택 후 정적 웹 사이트호스팅 편집
- 기본 페이지를 지정한다 - 사용할 문서 입력 난 index.html 를 입력헀다.
- 권한 - 버킷 정책 설정

클라이언트 디렉토리에서 npm 설치 후 빌드하고 결과물을 버킷에 업로드 중 오류
* 빌드가 안돼, package.json파일 확인후 디버그 부분을 밑에 내용으로 수정함
"scripts": {
"start": "react-scripts --openssl-legacy-provider start",
"build": "react-scripts --openssl-legacy-provider build",
"test1": "mocha ./test/http-test.js",
"test2": "mocha ./test/https-test.js",
"eject": "react-scripts eject"
},
버킷 업로드 방법 - 해당 폴더 안에 내용들을 업로드 해야한다.
- \\wsl$을 통해 ubuntu 폴더 위치 확인 gui를 통해 드래그 앤 드랍
- S3 CLI를 이용한 데이터 동기화
- aws s3 sync <동기화 주체> <동기화 대상>
- 버킷의 내용물을 로컬 디렉토리와 동기화 → 로컬로 다운로드
- aws s3 sync s3://bucket-name/ ./
- 로컬 디렉토리 내용물을 버킷에 동기화 → S3에 업로드
- aws s3 sync ./ s3://bucket-name/
서버 배포 (EC2)
- 콘솔을 통해 EC2 인스턴스를 생성
- 키페어 생성 후 키 파일 이동
- 기존 보안 그룹 설정 후 SSH(22), HTTP(80), HTTPS(443) 연결
- SSH클라인어트를 통한 EC2 연결
- KEY페어가 있는 디렉토리로 이동
- SSH 프로토콜 사용시 .pem파일의 권한을 확인하고, 적절하게 권한을 부여
- ssh -i "키 페어 이름"ubuntu@EC2도메인 입력

인스턴스에 접속한 후, 필요한 개발 환경(git, npm, node) 등을 구축 해야 한다.
- scp 명령어를 이용해 로컬 서버에 server 디렉토리를 원격 서버로 전송 - 구축환경까지 같이 전송되게 됨
- scp -i <로컬에 저장해논 .pem> -r <로컬에서 ec2 인스턴스로 업로드할 파일경로> ubuntu@<퍼블릭IP>:/home/ubuntu
- scp -i /home/jihoon/keys/good.pem -r /home/jihoon/code/sprint-aws/server ubuntu@54.180.96.72:/home/ubuntu
- sudo update를 해야 리스트를 받아들일 수 있다.
- sudo apt install npm 을 이용해 npm 설치
- npm install을 이용해 패키지에 맞는 특정 패키지 및 의존성 설치
- git, node, npm 설치
- ec2에서 git 설정
- ec2에서 node.js 설정
- nvm 설치
- curl -o- https://raw.githubusercontent.com/nvm-sh/nvm/v0.34.0/install.sh | bash
- nvm 활성화
- . ~/.nvm/nvm.sh
- nvm 버전 관리
- nvm install 16(--lts)
- 패키지 매니저 설치
.env 파일 확인
EC2에 IP(PORT확인), S3 엔드포인트 설정

npm start , node app.js 등으로 서버 실행 후 확인
데이터베이스 연결 (RDS)
- EC2 리소스에 연결을 선택해야 한다
- 연결을 안 할 경우 DB 설치하고 생성해줘야 하고 연결 할 경우 구성 부분에서 하단 추가 구성에서 DB 이름만 넣어주면 된다.
- 연결을 안할 경우(리소스가 있을 경우)
- sudo apt-get update - 업데이트 후
- sudo apt-get install mysql-server - MYSQL 서버 설치
- mysql -u {username} -p -h {rds_endpoint_url}
- mysql -u admin -p –h database-2.cuxh29fx79tb.ap-northeast-2.rds.amazonaws.com
- MYSQL 실행
- CREATE DATABASE test - test DB생성
- show databases - 생성된 DB 확인
- 연결할 경우 리소스가 있을 경우 바로 실행 됨
- 보안그룹 인바운드에서 3306포트가 허용되는지 확인
- 서버를 실행하면 원하는 웹사이트가 작동 한다


==========================================
참고 자료
https://docs.aws.amazon.com/ko_kr/AmazonS3/latest/userguide/HostingWebsiteOnS3Setup.html
MySQL :: MySQL 8.0 Reference Manual :: 3.1 Connecting to and Disconnecting from the Server