이번 포스팅은 저번시간까지 만들었던 웹소켓 채팅을 서버에 배포를 해보고자한다.
나는 github repository에 private로 저장 및 관리를 해오고 있었고 이제 클라우드 플랫폼인 AWS의 EC2에 배포를 해보려고한다.
일반적으로 Django는 wsgi 동기식으로 nginx와 gunicorn으로 서버에서 동작하지만 웹소켓은 비동기 방식이므로 asgi로 daphne를 사용하여 서버에 배포를 해야한다.
이 포스팅은 먼저 배포를 해야할 aws EC2를 설정하고 접속까지 해보는 것 까지 해보겟다. 이제 아래의 과정을 따라해보자!
먼저 aws를 검색하여 들어가서 서비스 검색창에 EC2를 검색하고 난후 왼쪽 목록에 인스턴스를 클릭한다.
화면 가운데에 보이는 인스턴스 항목을 보면 먼저 생성되어있는 EC2를 볼수있는데 이 블로그를 쓰기위해 먼저 만들어놓은것이다. 자 이제 우리도 만들어보자.
넘어간 페이지에서 오른쪽 상단에 있는 인스턴스 시작버튼을 누른다.
그럼 생성할 EC2의 이름을 입력한다.
이제 이 페이지에서 항목을 선택하여 내려가보며 생성절차를 따라가보자!
우리는 Ubuntu 20.0.04 OS
를 사용할것이다. aws를 첫가입하였다면 1년동안 프리티어 서버를 무료로 이용할수있다. 1년이 지나거나 프리티어가 아닌 항목을 이용할경우 요금이 부과되니 참고하자.
서버 스펙도 프리티어 항목인 t2.micro
을 선택한다. 개발 연습용으로 충분하다.
그리고 키를 생성하여야한다. 이 키를 통해서 우리가 만든 EC2 ubuntu 서버에 접속할수있으니 꼭 기억할수있는곳에 저장을 해두자. 그리고 이 키는 절대 다른 외부에 공유를 해서는 안된다. 악의가 있는 사람이 이키를 가지고 여러분의 서버에 접속할수 있기 때문이다. 이제 새 키페어 생성 버튼을 눌러보자
아래처럼 키 이름을 짓고 나는 window환경에서 EC2에 접속할거라 putty
를 사용해야하기때문에 .ppk
를 선택하였다. putty를 사용하는법도 설명을 할것이니 걱정하지 않아도 된다.
SSH를 위치무관으로 해두면 해킹을 당할 위헙이 크다. 하지만 나는 연습용이니 위치무관으로 해두겠다.
그리고 프론트 서버와 http통신을 해야하니 http와 https 트래픽을 허용
해두겠다.
서버 스토리지는 연습용으로 2,4 GB저도면 충분하지만 프리티어를 이용하면 30 GB 까지 무료이니 꽉꽉채워서 이용을 해보겠다. 자 이제 인스턴스 시작을 눌러 인스턴스를 생성해보자.
아래 화면처럼 인스턴스가 생성된것을 볼수있다.
마지막으로 해야할 것이 남아있다. 탄력적 IP를 설정해주어야하는것이다. AWS에서 EC2 인스턴스를 만들 때 탄력적 IP(Elastic IP)를 설정하는 이유
중 하나는 기본적으로 EC2 인스턴스에 할당된 공용 IP 주소가 인스턴스가 정지되거나 종료될 때 변경될 수 있기 때문이다.
탄력적 IP를 사용하면 인스턴스에 고정된 공용 IP 주소를 제공하여 인스턴스가 재시작되거나 다른 인스턴스로 옮겨져도 동일한 IP 주소를 유지할 수 있다. 이는 특히 프론트엔드 서버를 운영하는 경우에 접속 지점의 안정성을 보장하는 데 유용하다. 이 블로그에서는 설정한 IP를 통해 프론트와 통신을 한다.
이제 aws EC2설정을 다 마쳤으니 인스턴스에 접속을 해야한다. window환경에서는 putty
라는 프로그램을 사용한다.
아래는 putty 사용법이다. putty가 깔려있지 않은 분은 다운로드를 한후에 다시 아래의 절차를 따르자.
[Putty다운로드] : https://www.chiark.greenend.org.uk/~sgtatham/putty/latest.html
위의 다운로드 링크로 들어가서 아래사진에 형광색으로 칠해져 있는 putty.exe
와 puttygen.exe
를 설치하자.
이제 다운 받은 putty.exe를 눌러 실행시키자. 아래의 화면이 나올것이다. 먼저 Host Name (or IP address) 밑의 텍스트박스에 퍼블릭 IPv4 주소를 입력한다. aws ec2 인스턴스를 클릭하면 아래에서 찾을 수 있다.
이제 왼쪽 Category항목에서 SSH를 누르고 Auth를 누르고 Credentials to authenticate with항목 페이지에서 Private key file for authentications: 여기의 Browse.. 버튼을 클릭한다.
그리고 EC2를 생성할때 생성한 키를 클릭한다.
그러면 동의하라는 로달창이 뜨고 accept버튼을 누르면 아래와 같은 화면이 뜬다. ububtu를 입력한다.
그럼 아래와 같이 이제 EC2에 접속을 성공한것을 볼수 있다.
이제 다음 포스팅에 이 EC2의 ubuntu 환경에서 git repository에 있는 내 프로젝트를 git clone하여 docker와 nginx를 사용해서 배포를하는 작업을 마무리하도록 하겠다.