본문 바로가기
TECH

🔎 EC2 + Route S3 + SSL 인증서

by Stella-Park 2024. 8. 11.
728x90

💻 웹사이트를 배포할 때 고려할 점

  1. 정적 웹사이트 - 미리 서버에서 생성된 HTML, CSS, JS 파일등으로 이루어진 웹사이트이며, 요청이 있을 때 단순히 파일을 그대로 전달 (동적인 콘텐츠 불가: 로그인, 사용자 맞춤 콘텐츠, 데이터베이스 연동 불가, 응답 속도 빠름, 해킹 가능성 적음) => 개인 블로그, 포트폴리오, 소개 페이지 등에 사용
  2. 동적 웹사이트 - 사용자의 요청에 따라 서버에서 동적으로 페이지를 생성하여 응답하는 웹사이트

➡ 결론: 데이터베이스(Firebase Firestore)와 카카오톡 로그인 제공이 필요하기 때문에 동적 배포하기로 결정!

 

1️⃣ 기본 작업

aws 계정 생성 + 카드 등록

 

2️⃣ EC2 인스턴스 생성

  • AWS Management Console 이동
  • 리전 선택: 가까운 리전을 선택하면 더 빠른 응답 속도를 기대할 수 있음
  • Amazon Linux 2 + t2.micro (무료 계층) 선택
  • 키 파일 저장 (.pem): 터미널에서 해당 인스턴스에 접속할 때마다 사용해야 함!!

3️⃣ 도메인 구입 및 DNS 설정 (hosting.kr 기준)

  • hosting.kr / 가비아 등등 원하는 도메인 구입
  • A 레코드 추가
    레코드 타입: A, 호스트 이름: @ (또는 비워두기 - @는 루트 도메인을 의미), IP 주소: EC2 인스턴스의 Elastic IP address 입력, TTL: 기본값 또는 600(초)
  • www 서브 도메인 추가 (선택사항)
    레코드 타입: A, 호스트 이름: www, IP 주소: EC2 인스턴스의 Elastic IP address 입력, TTL: 기본값 또는 600(초)

3️⃣ EC2 인스턴스에 프로젝트 dist 파일 전송 및 웹 서버 설정

Apache와 Nginx등 웹 서버 설치하는 과정 (나의 경우는 Nginx를 사용)

 

 터미널 접속 (Public IPv4 DNS 주소는 세팅을 함면 바뀔 수 있음)

ssh -i "/path/to/your.pem" /path/to/your.pem <Public IPv4 DNS>
ssh -i "/path/to/your.pem" ec2-user@Elastic IP address // IP 세팅한 후에는 IP로 접속

 

 위의 명령어 permission 오류가 나는 경우 (파일 소유자만 읽을 수 있도록 설정)

chmod 400 /path/to/your.pem

 

 프로젝트를 로컬에서 빌드해서 EC2 인스턴스에 전송

scp -i "/path/to/your.pem" -r ./dist <Public IPv4 DNS>:/var/www/html/

 

④ Nginx 설치 (Amazon Linux 2 버전)

sudo yum install nginx -y

 

⑤ Nginx 설정 파일 수정 (파일 저장: Control + X)

sudo nano /etc/nginx/nginx.conf // 파일 열기
server {
    listen 80;
    server_name 구매한 도메인 www.구매한 도메인;

    root /var/www/html/dist;
    index index.html;

    location / {
        try_files $uri $uri/ /index.html;
    }

    error_page 404 /404.html;
    location = /404.html {
        internal;
    }

    error_page 500 502 503 504 /50x.html;
    location = /50x.html {
        internal;
    }
}
sudo systemctl restart nginx // Nginx 재시작 후 웹사이트 확인(구매한 도메인으로)

 

5️⃣ HTTPS 설정 (옵션)

보안 강화를 위해 설정한다. Let's Encrypt를 사용해 SSL 인증서를 무료로 설치할 수 있다.

sudo apt-get install certbot python3-certbot-nginx
sudo certbot --nginx -d 구매한 도메인 -d www.구매한 도메인 // 인증서 설치
sudo certbot renew --dry-run // 인증서(Certbot) 자동 갱신 설정


🆖 이외 오류들 확인 방법

① Nginx 포트 충돌 확인 (80)

sudo lsof -i :80

②Nginx 구성 파일 오류

sudo nginx -t

 

③ Nginx 상태 확인

sudo systemctl status nginx.service

 

④ EC2 인스턴스 접속 불가 (타임아웃 등..)

- ssh -i "/path/to/Mohito.pem" <<Public IPv4 DNS> => Public IPv4 DNS 확인 필요 (바뀜) + IP 할당하면 안됨 (ip로 접속하기)
728x90

'TECH' 카테고리의 다른 글

content-visibility 속성  (2) 2025.05.22
ZonedDateTime  (6) 2025.05.19
Swiper  (0) 2024.10.25
Lottie 로딩바 적용하기  (0) 2023.08.06
SQS (AWS Simple Queue Service)  (0) 2023.03.13