Ododododo
[CentOS 서버 구축] PostgreSQL - Django DB로 설정 본문
Nginx uWSGI 설치 및 Django와의 연결 http://jaha01.tistory.com/12
이번에는 Django / Nginx / uWSGI에 DB로 PostgreSQL 사용에 대해 작성하겠다.
Django는 default DB로 SQLite가 설정되어있다. Django의 settings.py에 DB Backend 설정을 보면 확인할 수 있다.
내가 PostgreSQL을 DB로 선택한 이유는 일단 Django의 가장 큰 장점인 ORM을 지원한다는 이유가 가장 컸다. 또 NoSQL 적인 부분도 약간 필요했었는데 PostgreSQL은 NoSQL Type인 JSON이나 Array Type을 지원해준다.
https://www.postgresql.org/docs/9.5/static/datatype-json.html
또 여러 통계들과 자료들로 보았을 때 NoSQL을 사용하는 것과 PostgreSQL의 NoSQL Type을 사용하는 것이 성능적인 부분에서 거의 차이가 없고 오히려 PostgreSQL을 사용하는 것이 더 나을 수 있다는 자료들을 많이 봤다. 직접 사용해보지 않았기에 모르는 부분이지만 사실 2개의 DB로 나눠서 관리하는 것도 불편함이 있을 것 같아 PostgreSQL로 같이 사용하기로 결정했다.
참고 사이트 : http://tecadmin.net/install-postgresql-9-5-on-centos/
1. PostgreSQL Repository 추가 및 설치
1 2 3 | sudo rpm -Uvh http: //yum .postgresql.org /9 .5 /redhat/rhel-7-x86_64/pgdg-centos95-9 .5-2.noarch.rpm sudo yum install postgresql95-server postgresql95 postgresql95-devel sudo postgresql-setup initdb |
PostgreSQL 의 Repository를 추가해주고 설치해주었다. initdb를 통해 PostgreSQL의 data를 만들어주었다. data들은 /var/lib/pgsql/9.5/data 에 있다.
2. DB 생성 및 User 추가
이제 Django project에 사용할 DB를 생성하고 DB User를 만들어보겠다.
1 2 3 4 5 6 7 8 9 | sudo su - postgres psql >>> CREATE DATABASE mydb; >>> CREATE USER myuser WITH PASSWORD 'password' ; >>> ALTER ROLE myuser SET client_encoding TO 'utf8' ; >>> ALTER ROLE myuser SET default_transaction_isolation TO 'read committed' ; >>> ALTER ROLE myuser SET timezone TO 'Asia/Seoul' ; >>> GRANT ALL PRIVILEGES ON DATABASE mydb TO myuser; >>> \q |
3. PostgreSQL 설정
위에서 말했던 PostgreSQL의 data directory에 여러 설정 파일들이 있다. 그 중에 pg_hba.conf와 postgresql.conf 를 수정하겠다.
postgresql.conf
listen_address = '*'
pg_hba.conf
host all all 0.0.0.0/0 md5
설정을 저장한 후 PostgreSQL을 다시 시작해준다.
1 2 | sudo systemctl restart postgresql-9.5 sudo systemctl enable postgresql-9.5 |
4. Django settings.py
위에서 PostgreSQL에 대한 설치 및 설정은 끝났다. 이제 Django와 PostgreSQL을 연결해보겠다.
1 2 | workon myvirtualenv pip install psycopg2 |
먼저 python 가상환경을 활성화해주고 psycopg2를 설치해준다. 이제 settings.py 파일을 수정해야한다.
1 2 3 4 5 6 7 8 9 | # Database DATABASES = { 'default' : { 'ENGINE' : 'django.db.backends.sqlite3' , 'NAME' : os.path.join(BASE_DIR, 'db.sqlite3' ), } } |
위의 코드가 Django가 default로 사용하는 SQLite 설정이다. 이제 이것을 PostgreSQL 설정으로 바꿔보겠다.
1 2 3 4 5 6 7 8 9 10 11 12 13 14 | # Database DATABASES = { DATABASES = { 'default' : { 'ENGINE' : 'django.db.backends.postgresql_psycopg2' , 'NAME' : 'mydb' , 'USER' : 'myuser' , 'PASSWORD' : 'password' , 'HOST' : 'YOUR_DB_SERVER_IP' , 'PORT' : '5432' } } |
위의 설정을 마치고 makemigrations / migrate를 하면 PostgreSQL에 project DB가 생성된 것을 pgAdmin 이나 혹은 postgres로 로그인해서 psql로 확인할 수 있을 것이다.
이제 거의 모든 설정 및 설치가 끝났다. 이후에 필요한 설정이 있으면 그때 그때 써보도록 하겠다. 다음 포스트부터는 Django에 대한 이야기를 시작해보겠다.
'자하의 0 > CentOS 7 서버 구축' 카테고리의 다른 글
[CentOS 서버 구축] Nginx uWSGI 설치 및 Django와의 연결 (0) | 2017.02.14 |
---|---|
[CentOS 서버 구축] python3.5와 Django 설치 (0) | 2017.01.27 |
[CentOS 서버 구축] CentOS7 설치 및 ftp 서버 설정 (14) | 2017.01.23 |
[CentOS 서버 구축] 시작 & 부팅 USB 만들기 (0) | 2017.01.15 |