2부에서는 DB 설치 및 Django 세팅을 다룰 예정이다. PostgreSQL 9.3.8, Django 1.8.2 버전을 기준으로 작성했다. 작성하면서 Digital Ocean의 튜토리얼을 참고했다.
1. DB 설치 및 접속
sudo apt-get install postgresql postgresql-contrib
로 postgresql를 설치한다.- virtualenv에
pip install psycopg2
로 PostgreSQL 파이썬 커넥터를 설치한다. 오류가 발생하는 경우 apt-get으로libpq-dev
패키지를 설치한다. sudo -u postgres psql
로 SQL 환경을 시작할 수 있다.
유용한 명령어들
\?
명령어 도움말을 보여준다.\l
데이터베이스 목록을 보여준다.\dt
테이블 목록을 보여준다.\dg
유저 목록을 보여준다.\c DATABASE_NAME
데이터베이스에 접속\q
SQL Environment 종료
template database
PostgreSQL을 설치하면 기본적으로 postgres, template0, template1 데이터베이스가 있다. PostgreSQL에서는 데이터베이스를 만들 때 기본적으로 template1을 복제해서 만들어지기 때문에 여기에 모든 데이터베이스에 적용할 확장 기능을 설치하는 식으로 이용한다. template0은 데이터베이스 초기의 순수한 상태 템플릿으로 이용하며, template0을 복제할 때는 DB의 인코딩이나 locale을 세팅할 수 있다.
2. 사용자 계정 생성
CREATE DATABASE toytest;
로 toytest 데이터베이스 생성. #CREATE USER toytest with PASSWORD 'password';
로 계정 생성. 패스워드는 랜덤 제너레이터를 사용했다. #GRANT ALL PRIVILEGES ON DATABASE toytest TO toytest;
로 toytest DB에 대한 권한을 toytest Role에 할당한다.
3. Django 세팅 파일 수정
Django를 VCS로 관리할 때 비밀 정보들이나 사이트마다 다른 로컬 세팅들은 VCS에 포함해서는 안 된다. 이런 정보들은 local_settings.py
에 옮겨서 저장하자.
# SECURITY WARNING: keep the secret key used in production secret! SECRET_KEY = 'SECRET_KEY' # SECURITY WARNING: don't run with debug turned on in production! DEBUG = False ALLOWED_HOSTS = ['toytest.qwaz.io',] # Database # https://docs.djangoproject.com/en/1.8/ref/settings/#databases DATABASES = { 'default': { 'ENGINE': 'django.db.backends.postgresql_psycopg2', 'NAME': 'toytest', 'USER': 'toytest', 'PASSWORD': 'PASSWORD', 'HOST': 'localhost', 'PORT': '', # default port } }
PostgreSQL의 기본 포트는 5432고, 기본 포트를 사용하는 경우 비워 놓아도 된다.
settings.py에서는 겹치는 설정을 제거해주고 LANGUAGE_CODE와 TIME_ZONE을 수정한다. LANGUAGE_CODE는 프로젝트 성격에 따라 en-us 또는 ko-kr로 설정하고, TIME_ZONE은 서버가 있는 Asia/Tokyo로 설정해 주자.
설정을 마치고 settings.py에 from .local_settings import *
를 추가한다.
수정한 프로젝트를 다시 읽어오기 위해서는 여러가지 방법이 있는데 touch toytest_uwsgi.ini
가 가장 편리하다. Emperor Mode로 uWSGi를 실행시켜두었기 때문에 ini 파일의 수정을 감지해 uWSGI가 다시 로드된다.
DB 연결이 끝나면 python manage.py migrate
를 실행해 데이터베이스 연결이 잘 되었나 확인한다.