교육/코드스테이츠

[30일차] 정적 웹 호스팅

nooh_ij 2023. 1. 6. 23:03

 

 

https://aws.amazon.com/ko/

 

정적 웹 호스팅

정적 파일만으로 구성된 파일을 호스팅하는 것으로, 이를통해 높은 성능과 비용 부담을 덜 수 있다.

 

클라이언트 배포 (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을 이용해 패키지에 맞는 특정 패키지 및 의존성 설치

 

 

.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/sdk-for-javascript/v2/developer-guide/setting-up-node-on-ec2-instance.html

 

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