정보공간_1

[7기 수원 박성진] EC2 접속 후 django 설치 본문

IT 놀이터/Elite Member Tech & Talk

[7기 수원 박성진] EC2 접속 후 django 설치

알 수 없는 사용자 2015. 7. 2. 16:49

저번 포스팅 때 AWS EC2를 런칭 하는 방법을 알아보았습니다. 그럼 이번엔 EC2위에 Django를 연동하는 방법을 알아보도록 하겠습니다.

 

1. 아마존 EC2 접속

1.1 *.pem 파일 확인

  EC2 SSH를 통해 접속을 하려면 필요한 파일이 있습니다. 바로 pem이라는 확장자를 가진 파일인데요 지난번 포스팅때 저는 newkey라는 이름으로 발급받아 다운 받아 놓았습니다. 여러분도 아시다시피 pem확장자는 SSL인증을 위한 인증서입니다. 또한 지난 번 포스팅 때도 강조를 했지만 이 파일은 EC2 뿐만아니라 AWS의 수 많은 서비스를 이용 할때 사용자를 인증하는 수단으로 쓰이므로 절대!! 절대!!! 분실하거나 유출 시키면 안됩니다.

  만약 pem 확장자 파일을 확인 했다면 EC2를 이용할 준비가 모두 끝난 것 입니다. 물론 당연한 말이겠지만 여러분이 런칭한 EC2와 매칭 되는 pem파일을 이용하셔야 합니다. 아무리 한 계정에서 할당 받은 pem파일 이라 하더라도 런칭 할 때 매칭시킨 pem파일이 아니라면 인증이 불가합니다.

1.2 ubuntu에서 SSH를 사용한 원격 접근

  제가 주로 Ubutu를 사용 하기 때문에 이 포스팅에서는 Ubuntu에서 SSH로 접속 하는 방법을 포스팅 하도록 하겠습니다.

  먼저 터미널을 실행 시킨후 다음 명령어를 입력 합니다.

ssh -i {인증서 경로 및 파일 이름} ubuntu@{런칭한 ec2 host}

( {} 안에 해당 하는걸 넣으시면 됩니다.)

  일반적으로 비밀번호를 통해 원격 접속을 할 때 사용하지 않는 '-i' 옵션은 비밀번호 대신 identity파일을 사용하여 인증을 할 때 사용 하는 ssh 옵션 입니다. AWS EC2 같은 경우 인증서를 사용하여 접속하므로  '-i' 옵션이 필요합니다.

  위의 방법으로 한 번에 접속이 되면 좋겠지만 아래의 그림과 같은 오류가 생깁니다.



  이는 인증서의 권한 문제 때문에 발생 합니다. 이 문제를 해결 하기 위해선 인증서의 권한을 변경해 주어야 합니다. 아래의 그림을 보겠습니다.



  권한 문제가 생긴 세 번째의 newkey.pem과 정상적으로 접속이 되는 네 번째의 sungjin.pem의 차이가 보이시나요? 앞에 권한을 보면 바로 알 수 있습니다. 문제가 생긴 인증서는 슈퍼 유저가 아닌 사람에게도 읽을 권한이 있지만 문제가 없는 인증서는 슈퍼 유저만 읽을 권한이 있습니다. 따라서 새로 발급받은 인증서의 권한도 바꿔보도록 하겠습니다.

  chmod 400 {인증서 경로 및 파일 이름}

  위의 명령어를 입력하시면 다음과 같이 바뀐 것을 확인 할 수 있습니다.



 두 개의 인증서의 권한이 같아졌습니다. 다시 ssh 명령어를 사용하여 접속하면 아래와 같이 성공적으로 접속할 수 있습니다.



 

1.3 해당 계정 수퍼유저 등록

  이것은 조금 선택적인 부분입니다. 리눅스를 사용하다보면 슈퍼 유저로 작업 할 때가 굉장히 많은데요, 저 같은 경우 클라우드 환경에서 작업 할 때는 항상 sudo su 명령어를 사용해 슈퍼 유저로 접속해 작업을 합니다. 하지만 아무것도 설정이 안된 상태에서 sudo su 명령어를 사용하면 아래와 같은 경고가 뜨게 됩니다.

sudo: unable to resolve host {hostname}

  /etc/hostname 에 있는 호스트 이름이 /etc/hosts에 등록 되지 않아서 생기는 문제입니다. vim으로 /etc/hosts를 열고 아래와 같이 추가해 주면 해결됩니다.

 127.0.0.1 {hostname} (저 같은 경우는 127.0.0.1 ip-172-30-0-54)

  이제 아무런 경고 없이 sudo su 명령어를 사용 할 수 있습니다.

 

 

2. Django 프로젝트 설치

  클라우드에 접속에 성공했으니 웹 프로젝트를 시작 해 보도록 하겠습니다. 블로그나 단순한 웹 페이지 같은 경우에는 웹 프레임 워크를 쓸 필요 없이 Nginx Apache같은 웹 서버를 통해 바로 서비스하면 편하겠지만 WAS를 구현하여 서비스 하고 싶은 경우에는 아무래도 스프링과 같은 웹 프레임워크를 통해 구현하는 것이 비교적 쉽습니다. 그 중 저는 Python을 기반으로한 Django Web Framework를 아마존 가상 서버에 설치 한 후 구동 직전까지의 과정을 여러분께 소개 시켜 드리려고 합니다.

2.1 Django 설치

  먼저 django ec2에 설치해 보겠습니다. 이 때 사용할 툴은 pip라는 것인데 명령어 만으로 쉽게 설치가 가능합니다. 일단 apt 저장소를 아래의 두 명령어를 통해 최신으로 유지합니다.

  apt-get upgrade

  apt-get update

   그 다음 django를 설치하려면 pip라는 python 툴이 필요 합니다. 이런 pip를 설치 하는데 그 전에 pip가 무엇인지에 대해 알아보겠습니다. Python 같은 경우는 내장 함수 외에도 수 많은 패키지들을 지원합니다. 이런 패키지들을 쉽게 관리 할 수 있게 해 주는 툴입니다. 굳이 비교를 해 보자면 Java Gradle이나 Maven과 비슷한 역할을 해 주는 툴입니다. 이 툴을 이용하면 각종 패키지들을 웹사이트에 들어가서 굳이 다운 받지 않고도 명령어 만으로 쉽게 다운 받을 수 있습니다.

  Pip 설치는 ubuntu라면 다음 명령어를 통해 쉽게 설치 할 수 있습니다.

  apt-get install python-pip

  Pip를 설치 했으니 django 를 설치하는 것은 간단합니다.

  pip install django

  위의 명령어를 입력시켜 주면 django 설치가 완료됩니다. Django가 성공적으로 설치 되었는지 확인해 보려면 python을 실행 해 다음과 같이 확인해 보면 쉽게 확인해 볼 수 있습니다..

  


  위와 같이 import django를 입력 했을때 ImportError가 뜨지 않는다면 django 설치에 성공한 것입니다.

 

2.2 Django 포트 설정

  django EC2 가상 서버에 올렸으니 이제 웹을 통해 django에서 구동 되는 서버에 직접 접속해 보도록 하겠습니다. 이번 포스팅 에서는 80 포트 대신에 8000번 포트를 사용 할 것이므로 EC2 인스턴스를 관리하는 페이지로 가서 Security 그룹을 설정 해 보도록 하겠습니다.



  앞에서 소개한 대로 인스턴스를 클릭하고 security group 클릭 후 inbound 설정 탭으로 들어갑니다. 그 후 EditTCP 8000 포트를 추가 한 후 세이브를 클릭하면 Security 그룹에 추가가 되는 것을 확인 할 수 있습니다



  이제 django 웹 서버를 구동 시킬 준비가 전부 끝이 났습니다. 다음 포스팅에서는 django 웹 프로젝트를 생성하고 DB와 연동 하는 방법과 구동 후 외부에서 접속 하는 방법을 알려드리도록 하겠습니다.