Notice
Recent Posts
Recent Comments
Link
«   2025/04   »
1 2 3 4 5
6 7 8 9 10 11 12
13 14 15 16 17 18 19
20 21 22 23 24 25 26
27 28 29 30
Tags
more
Archives
Today
Total
관리 메뉴

Ododododo

[CentOS 서버 구축] PostgreSQL - Django DB로 설정 본문

자하의 0/CentOS 7 서버 구축

[CentOS 서버 구축] PostgreSQL - Django DB로 설정

오도도도도 2017. 2. 25. 10:41

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에 대한 이야기를 시작해보겠다.


Comments