아마존 웹서비스 EC2 리눅스 서버에 django와 postgresql을 설치하고 연동하는 과정을 정리한다. 이미 아마존 리눅스를 운영체제로 하는 EC2 인스턴스를 할당 받았고, ssh를 통해 접속할 수 있다는 가정 하에 시작한다. python 3.5버젼, postgresql 9.5 버젼을 사용할 것이다.
django에 대한 내용이 주가 아니기 때문에, EC2 인스턴스에 올리기 위한 django 프로젝트는 이미 다 준비가 되어있으며, 그 소스코드를 github 저장소를 이용해 간단히 clone한다고 가정하겠다.
아마존 리눅스는 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을 잘 모르는 분들을 위한 빠르고 부정확한 팁:
이제 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
무료 클라우드 저장소 리스트업 (3) | 2016.12.20 |
---|---|
Azure 리눅스 가상머신에 원격 데스크탑 연결 (0) | 2016.07.09 |
Heroku에 django 프로젝트 배포 (2) | 2016.05.22 |