docker-compose를 이용한 django 프로젝트 배포(Feat.poetry) (2)

김혁준·2023년 6월 2일
0

aws에서 도메인 달고 https 달아주기 :

  • 미리 구매한 도메인 : drinkdrinkdrink.xyz
  1. route 53 :
    1. 호스팅 영역 생성 후 네임서버의 Value/Route traffic to 의 4줄을 도메인 구매한 사이트에 nameserver에 입력
    2. 호스팅 영역에서 도메인 클릭하고 레코드 생성
    : 레코드 이름 : backend / 유형 : A / 값 : 인스턴스의 퍼블릭ip주소
    3. 마찬가지로 레코드 다시 생성
    : 레코드 이름 : www.backend / 유형 : CNAME / 값 : backend.drinkdrinkdrink.xyz
    4. nginx에서 아래와 같이 수정
server {
  listen 80;
  server_name www.drinkdrinkdrink.xyz; # www.foo.tk 도메인으로 들어오는 요청을 처리해줍니다.

  location / {
    proxy_pass http://backend:8000/;
  }

  location /static/ {
    alias /static/;
  }

  location /media/ {
    alias /media/;
  }
}

server {
  listen 80;
  server_name backend.drinkdrinkdrink.xyz; # www가 없는 url로 요청 했을 때
  return 301 http://www.backend.drinkdrinkdrink.xyz$request_uri; # www를 붙인 url로 redirection 해줍니다.
}
  1. https 달기 :

    1. Certificate Manager에 접속 > 인증서 요청 > 도메인 이름에 구매한 도메인 입력 → 이 인증서에 다른 이름 추가 → *.구매한 도메인 이름(backend.drinkdrinkdrink.xyz)을 입력한 후 DNS 검증을 선택하고 요청 버튼을 클릭합니다.

    2. 인증서 목록 화면에서 요청한 인증서의 ID를 클릭합니다.

    3. 도메인의 소유자라는 것을 증명하기 위해 Route 53에서 레코드 생성 버튼을 클릭 > 도메인을 확인하고 레코드 생성 버튼을 클릭합니다.

    4. 타겟 그룹 달기 : AWS에서 ec2 서비스에 접속합니다 > 좌측 메뉴에서 로드 밸런싱 - 대상 그룹을 클릭합니다. > Create target group 버튼을 클릭 > 인스턴스를 선택 > Target group name을 지정 > Health check path를 입력한 후 Next 버튼을 클릭 > 로드밸런서에 대상이 될 서버를 지정하고 Include as pending below 버튼을 클릭 > 추가된 대상을 확인하고 Create target group 버튼을 클릭

    5. 로드 밸런서 설정 : aws에서 ec2 서비스를 들어갑니다. > 좌측 메뉴에서 로드 밸런싱 - 로드밸런서 클릭합니다. > Application Load Balancer의 Create 버튼을 클릭 > Basic Configuration에서 로드밸런서의 이름을 작성하고 Internet-facing, IPv4를 선택합니다. > Network mapping에서 ap-northeast-2a, 2b를 선택합니다.(이 문장은 나중에 다시보기) > Security groups에서 {{각자 갖고있는}} 그룹을 선택해 줍니다.(inbound rule에서 ssh,http,https 다있어야함!,outbound는 다 오픈,default는 선택하지 말기) > Listeners and routing에서 이전에 생성한 대상 그룹을 지정하고 Add listener 버튼을 클릭합니다. > Protocol에서 HTTPS를 선택하고 동일하게 대상 그룹을 선택해줍니다. > Secure listener settings에서 생성한 SSL 인증서를 선택합니다

    6. 로드 밸런서 적용 : AWS → route53 서비스 접속 → 호스팅 영역 → 등록한 도메인 클릭 > 유형 A로 등록된 도메인을 선택한 후 레코드 편집 버튼을 클릭합니다. > 별칭 옵션을 활성화 한 후 Application/Classic Load Balancer에 대한 별칭 → 아시아 태평양(서울) → 생성한 로드밸런서를 순서대로 선택한 후 저장 버튼을 클릭합니다.

    7. 자동으로 https로 redirect해주기 : AWS → ec2 서비스 접속 → 로드밸런서 → 생성한 로드밸런서 클릭 > 리스너 → HTTP : 80에 해당하는 리스너의 규칙 보기/편집 버튼을 클릭합니다. > 상단의 추가(더하기 아이콘) 버튼 → 규칙 삽입을 클릭합니다. > IF의 조건 추가 → 호스트 헤더 선택 → *.구매한도메인이름을 입력한 후 체크 아이콘을 클릭합니다.(backend.drinkdrinkdrink.xyz) > THEN의 작업 추가 → 리디리렉션 대상 선택 → HHTPS 선택 및 443 포트 입력 → 기본 호스트, 301을 각각 선택한 후 체크 아이콘을 클릭합니다. > 설정을 확인하고 저장 버튼을 클릭합니다.

    1. django settings.py 설정하기
# CORS 허용 목록에 도메인 서버를 추가합니다.
CORS_ORIGIN_WHITELIST = ['https://www.$domain', ]
# CORS_ORIGIN_WHITELIST = ['https://www.$domain', ]

# CSRF 허용 목록을 CORS와 동일하게 설정합니다.
CSRF_TRUSTED_ORIGINS = CORS_ORIGIN_WHITELIST

만약 503 Service Unavailable 오류가 뜬다면 ?
EC2 > Instance > detail > Subnet ID > Avility Zone 확인!! (a,b,c,d)인지 보자
(인스턴스 생성 > Network settings >
subnet** 여기서 Avility Zone을 설정해줬었다...)

그리고 ...

EC2 > Load balancers > detail > Mappings > Zone 확인!!! 위의 영어가 포함되어야한다!!!
만약 없으면 추가해주기!

5번으로 다시 가서 확인하자!

마지막으로 backend.drinkdrinkdrink.xyz 입력하면 자동으로https://backend.drinkdrinkdrink.xyz로 Redirect되는지 확인!

0개의 댓글

관련 채용 정보