아마존 웹서비스 EC2 리눅스 서버에 django와 postgresql을 설치하고 연동하는 과정을 정리한다. 이미 아마존 리눅스를 운영체제로 하는 EC2 인스턴스를 할당 받았고, ssh를 통해 접속할 수 있다는 가정 하에 시작한다. python 3.5버젼, postgresql 9.5 버젼을 사용할 것이다.
django에 대한 내용이 주가 아니기 때문에, EC2 인스턴스에 올리기 위한 django 프로젝트는 이미 다 준비가 되어있으며, 그 소스코드를 github 저장소를 이용해 간단히 clone한다고 가정하겠다.
EC2 인스턴스에 이것 저것 설치하기
아마존 리눅스는 yum
이라는 패키지 매니저를 제공하므로 이를 통해 python와 postgresql을 설치한다.
# EC2 기본 계정 $ sudo yum install python35 python35-devel $ sudo yum install gcc postgresql95 postgresql95-server postgres95-devel
python 가상 환경을 사용하기 위해, 덤으로 python이 잘 설치되었는지 확인할 겸 다음과 같이 설치한다.
$ python35 -m pip install virtualenv
또 postgresql 서버가 잘 설치되었는지 아래 명령을 통해 확인한다.
$ sudo service postgresql95 initdb $ sudo service postgresql95 start
두 명령 모두 OK 사인이 뜬다면 정상적으로 설치된 것이다.
그럼 이제 postgresql의 여러 설정을 맞춰놓자. 그러기 위해 우선 postgresql 설치와 함께 기본으로 따라오는 계정 postgres을 통해 psql 터미널을 열어야 한다.
$ sudo su - postgres # 터미널이 바뀔 것이다 > psql
이제 psql 콘솔에 도착했다. postgresql의 기본 사용자인 postgres에 비밀번호를 새로 설정하자.
# psql 콘솔 - ALTER USER postgres WITH PASSWORD 'MY_COMPLEX_PASSWORD';
그리고 django 프로젝트가 연결할 데이터베이스를 생성한다. 그리고 EC2 메인 터미널로 나가자.
#psql 콘솔 - CREATE DATABASE mydb WITH OWNER postgres; - \l # 방금 생성된 데이터베이스를 확인할 수 있다. - \q # psql 콘솔을 나간다. # EC2: postgres 계정 > exit # 기본 계정으로 나간다.
마지막으로 해야 할 postgresql 설정은 접근 권한을 주는 것이다. 관리자 권한을 가지고 pg_hba.conf 파일을 수정해야 한다.
# EC2: 기본 계정 $ sudo su # 관리자 권한 > cd /var/lib/pgsql95/data > vim pg_hba.conf
이제 아주 훌륭한 vim 텍스트 편집기가 뜰 것이다. 이제 다음과 같이 파일 내용을 바꾸고 저장하자.
TYPE DATABASE USER ADDRESS METHOD
=============================================================# local
local all all trust# ip v4
host all postgres 127.0.0.1/32 md5
vim을 잘 모르는 분들을 위한 빠르고 부정확한 팁:
- 처음으로 vim 창이 뜨면 아무 키나 누르지 말자. a 키를 누름으로 수정 모드가 되며 텍스트 커서가 나오고, 수정할 수 있다.
- 수정을 다 했다면, esc를 눌러서 다시 명령어 모드로 돌아간다.
- :wq를 입력하고 엔터를 치면 저장 후 종료가 되며 터미널로 돌아간다. :q 는 저장하지 않고 그냥 종료
EC2에 django 프로젝트 설치
이제 EC2 쪽에서의 준비는 다 끝났다. 이제 github에서 준비해놓은 django 프로젝트를 가져오자. 당신이 준비해 놓은 django 프로젝트는EC2에서 설정해 놓은 postgres
의 비밀번호를 맞게 설정해 놓아야 하고, 가상 환경을 제외하는 .gitignore
파일이 있으며, pip의 손쉬운 설치를 위한 requirements.txt
가 준비되어 있다고 가정한다. 가상 환경을 제외하고 requirements.txt
파일만 준비함으로써 저장소의 용량을 크게 줄일 수 있다.
이제 다시 EC2 콘솔에 접속해서 github을 통해 django 프로젝트를 가져오자, 물론 가상 환경 위에서.
# EC2: 기본 계정 # 적당한 위치에 $ git clone https://github.com/mygithubaccount/myproject.git $ cd myproject $ python3 -m virtualenv .venv # python 3.5 가상환경을 시작하기 위해서 $ source .venv/bin/activate # (.venv) 가상 환경 시작 (.venv) $ pip install -r requirements.txt
github쪽 django 프로젝트가 실수 없이 잘 준비되어 있다면, 이제 모든 것이 준비됐다. 이제 postgresql이 잘 연결되는 지 확인해보자.
# (.venv) 가상 환경 위에서 (.venv) $ python manage.py migrate
마이그레이션이 잘 된다면 성공.
우선 큰 틀만 써 놓았고, 나중에 여유가 된다면 스크린샷과 함께 더 자세한 내용을 추가하겠다.
참조 링크
postgresql 권한 설정: pg_hba.conf에 대해서
http://www.postgresdba.com/bbs/board.php?bo_table=B12&wr_id=36
https://www.postgresql.org/docs/9.5/static/auth-pg-hba-conf.html
'etc' 카테고리의 다른 글
filebeat과 logstash에서 여러 다양한 input 다루기 (0) | 2017.01.11 |
---|---|
무료 클라우드 저장소 리스트업 (3) | 2016.12.20 |
redis 설치 (리눅스, 윈도 환경에서) (0) | 2016.09.25 |
Google Adsense 승인 가능성을 높여보자 (2) | 2016.09.07 |
Windows에서 Apache2.4 + mod_wsgi 설치 (7) | 2016.08.28 |