Django 서비스 AWS로 배포하기 - [1] 프로젝트 준비와 AWS 서버 대여
Django 서비스 AWS로 배포하기 - [2] github과 프로젝트 업로드
Django 서비스 AWS로 배포하기 - [3] uWSGI 연결하기
Django 서비스 AWS로 배포하기 - [4] nginx 연결하기
Django 서비스 AWS로 배포하기 - [5] 도메인 연결하기 (가비아)
이번 포스트는 AWS Certificate Manager를 이용해 SSL 인증서를 발급하고 nginx에 적용하여 HTTPS 주소로 웹 페이지를 운영할 수 있도록 해보겠습니다. 여기까지 하시면 웹 페이지 배포와 관련된 기본적인 부분은 모두 완료되었다고 생각하시면 됩니다! 그리고 아래 과정을 통해 과금이 발생할 수도 있습니다. 정확히 얼마나 되는지 계산되는 방식은 잘 모르지만 한달에 1달러 정도 나오는 것 같습니다. (2020년 4월 7일 수정) 한 달이 지나니까 가격이 꽤 나왔어요... 9~10달러 정도 나오네요 ㅠㅠ..
ACM에서 SSL인증서 발급받기
먼저, AWS에서 Certificate Manager 서비스로 들어가 주세요.
들어가신 뒤, 인증서 요청을 클릭하시면 아래와 같이 뜨는데, 공인인증서 요청을 선택하고 다음을 누르고 아래와 같이 도메인 이름을 입력해주세요. 그리고 다음.
DNS 요청 선택 후 다음.
태그는 필요하시면 추가를 하고 검토.
입력한 내용들에 틀린 부분은 없는지 확인하고 확인 및 요청.
그러면 아래와 같이 검증을 시작하고 승인을 받으려면 추가적인 작업이 필요합니다. 아래 사진에 등록한 도메인 왼쪽 화살표를 클릭해주시고,
Route 53에서 레코드 생성을 눌러주세요.
그 뒤 Route 53에 자신의 도메인을 클릭하면 아래와 같이 레코드 세트가 추가된 것을 볼 수 있습니다. 그리고 최대 30분 정도 기다리면 검증이 승인되니 밑의 내용을 읽어보면서 기다려 주세요.
하하 발급이 됐네요!
EC2 로드 밸런서 설정
다음은 EC2 로드 밸런서 설정을 해야합니다. EC2 서비스에 들어가서 좌측 메뉴에서 로드 밸런서를 들어가 주세요. 그리고 로드 밸런서 생성을 클릭해 주세요.
Application Load Balancer 으로 생성해주세요.
리스너 추가를 통해 443 포트 리스너를 추가해 주세요. 이름도 작성해주세요.
좀 더 아래로 내려가면, 가용 영역 있는데 a와 c를 선택해주고(모두 하셔도 됩니다.) 다음.
ACM에서 인증서 선택 클릭 후 생성한 인증서를 선택해주고 다음.
프로젝트가 들어있는 EC2 인스턴스의 보안그룹을 선택해 주시고 다음. (이건 각자 다를 수 있으니 저랑 똑같이 하지 마시고 프로젝트가 들어있는 EC2 인스턴스를 클릭하셔서 하단에 나오는 보안 그룹 ID를 확인하시고 클릭해주세요!)
라우팅 그룹은 새 그룹을 생성하는 것으로 해주시고,
프로젝트가 있는 EC2 인스턴스를 적용할 인스턴스로 추가해주세요.
그 이후 모두 다음으로 넘어가 주시면, 로드밸런서가 생성이 됩니다!
다시 Route 53 서비스의 등록한 도메인 호스팅 영역에서 유형 A의 레코드 세트를 선택해주시고, 별칭을 예로 선택하신 뒤, 별칭 대상에서 만든 로드 밸런서를 선택하여 줍니다. 그리고 저장해주세요.
그리고 마지막으로 프로젝트가 있는 EC2 인스턴스의 보안그룹에서 HTTPS 포트를 열어줍니다.
nginx HTTP 요청을 HTTPS 로 리다이렉트 설정하기
이제 거의 다 되었습니다. 로컬 컴퓨터에서 `.config/nginx/mysite.conf`에서 HTTP 요청을 HTTPS 로 받아 처리할 수 있도록 코드만 추가하면 됩니다. 아래의 코드(if문)를 추가해주세요!
server {
listen 80;
server_name *.compute.amazonaws.com *.nerogarret.shop;
charset utf-8;
client_max_body_size 128M;
...중략
if ($http_x_forwarded_proto = 'http'){
return 301 https://$host$request_uri;
}
}
`git push`, `pull`로 서버 컴퓨터에 업로드 하신 뒤, `mysite.conf`가 변경되었으니, 다시 nginx 설정 폴더에 복사 해줍니다.
$ sudo cp -f /srv/django-deploy-test/.config/nginx/mysite.conf /etc/nginx/sites-available/mysite.conf
$ sudo ln -sf /etc/nginx/sites-available/mysite.conf /etc/nginx/sites-enabled/mysite.conf
nginx도 한번 껐다 켜줍시다.
$ sudo systemctl daemon-reload && sudo systemctl restart nginx uwsgi
그러면 드디어!! `https://도메인.주소` 로 들어가보시면 잘 적용이 된 것을 볼 수가 있습니다!
고생 많으셨어요! 제가 기획한 시리즈는 여기까지이지만, 필요에 따라서 트러블 슈팅 게시글이 올라올 수 있습니다! 여기까지 따라오셔서 너무 수고 많으셨고 도움 많이 되셨으면 좋겠습니다. 오류 사항이 있으면 댓글로 꼭 알려주시고 즐거운 개발 되세요! :)
'웹 > Django' 카테고리의 다른 글
Django 서비스 AWS로 배포하기 - [5] 도메인 연결하기 (가비아) (10) | 2020.03.26 |
---|---|
Django 서비스 AWS로 배포하기 - [4] nginx 연결하기 (74) | 2020.03.15 |
Django 서비스 AWS로 배포하기 - [3] uWSGI 연결하기 (46) | 2020.03.15 |
Django 서비스 AWS로 배포하기 - [2] github과 프로젝트 업로드 (6) | 2020.03.15 |
Django 서비스 AWS로 배포하기 - [1] 프로젝트 준비와 AWS 서버 대여 (17) | 2020.03.15 |