Thứ tư, 25/03/2015 | 00:00 GMT+7

Cách sử dụng PostgreSQL với Ứng dụng Django của bạn trên CentOS 7

Django là một khuôn khổ linh hoạt để tạo nhanh các ứng dụng Python. Theo mặc định, các ứng dụng Django được cấu hình để lưu trữ dữ liệu vào một file database SQLite nhẹ. Mặc dù điều này hoạt động tốt dưới một số tải, nhưng DBMS truyền thống hơn có thể cải thiện hiệu suất trong production .

Trong hướng dẫn này, ta sẽ trình bày cách cài đặt và cấu hình PostgreSQL để sử dụng với các ứng dụng Django của bạn. Ta sẽ cài đặt phần mềm cần thiết, tạo thông tin đăng nhập database cho ứng dụng của bạn , sau đó bắt đầu và cấu hình một dự án Django mới để sử dụng phần backend này.

Yêu cầu

Để bắt đầu, bạn cần một version server CentOS 7 sạch với user không phải root được cài đặt . User không phải root phải được cấu hình với các quyền sudo . Tìm hiểu cách cài đặt điều này theo hướng dẫn cài đặt server ban đầu của ta .

Khi đã sẵn sàng để tiếp tục, hãy đọc tiếp.

Cài đặt các thành phần từ các kho CentOS và EPEL

Bước đầu tiên của ta sẽ là cài đặt tất cả các phần mà ta cần từ repository . Ta sẽ cài đặt pip , trình quản lý gói Python, để cài đặt và quản lý các thành phần Python của ta . Ta cũng sẽ cài đặt phần mềm database và các thư viện liên quan cần thiết để tương tác với chúng.

Một số phần mềm ta cần có trong repository EPEL, nơi chứa các gói bổ sung. Ta có thể kích hoạt repository này một cách dễ dàng bằng cách buộc:

sudo yum install epel-release 

Với EPEL được bật, ta có thể cài đặt các thành phần cần thiết bằng lệnh :

sudo yum install python-pip python-devel gcc postgresql-server postgresql-devel postgresql-contrib 

Thực hiện cấu hình PostgreSQL ban đầu

Sau khi cài đặt, bạn cần khởi tạo database PostgreSQL bằng lệnh :

sudo postgresql-setup initdb 

Sau khi database đã được khởi tạo, ta có thể khởi động dịch vụ PostgreSQL bằng lệnh :

sudo systemctl start postgresql 

Khi database khởi động, ta thực sự cần điều chỉnh các giá trị trong một trong các file cấu hình đã được điền. Sử dụng editor và sudo để mở file ngay bây giờ:

sudo nano /var/lib/pgsql/data/pg_hba.conf 

File này có nhiệm vụ cấu hình các phương thức xác thực cho hệ thống database . Hiện tại, nó được cấu hình để chỉ cho phép kết nối khi user hệ thống trùng với user database . Điều này là ổn đối với các việc bảo trì local , nhưng version Django của ta sẽ có một user khác được cấu hình bằng password .

Ta có thể cấu hình điều này bằng cách sửa đổi hai dòng host ở cuối file . Thay đổi cột cuối cùng (phương thức xác thực) thành md5 . Điều này sẽ cho phép xác thực password :

. . .  # TYPE  DATABASE        USER            ADDRESS                 METHOD  # "local" is for Unix domain socket connections only local   all             all                                     peer # IPv4 local connections: #host    all             all             127.0.0.1/32            ident host    all             all             127.0.0.1/32            md5 # IPv6 local connections: #host    all             all             ::1/128                 ident host    all             all             ::1/128                 md5 

Khi bạn hoàn tất, hãy lưu file .

Với những thay đổi cấu hình mới của ta , ta cần khởi động lại dịch vụ. Ta cũng sẽ kích hoạt PostgreSQL để nó tự động khởi động khi server khởi động :

sudo systemctl restart postgresql sudo systemctl enable postgresql 

Tạo Database và User Database

Theo mặc định, Postgres sử dụng một schemas xác thực được gọi là “xác thực ngang hàng” cho các kết nối local . Ta có thể thấy điều này cho mục nhập local trong file pg_hba.conf mà ta đã chỉnh sửa. Về cơ bản, điều này nghĩa là nếu tên user hệ điều hành của user trùng với tên user Postgres hợp lệ, user đó có thể đăng nhập mà không cần xác thực thêm.

Trong quá trình cài đặt Postgres, user hệ điều hành có tên là postgres đã được tạo để tương ứng với admin-user PostgreSQL của postgres . Ta cần thay đổi thành user này để thực hiện các việc quản trị:

sudo su - postgres 

Đến đây bạn sẽ ở trong một phiên shell dành cho user postgres . Đăng nhập vào phiên Postgres bằng lệnh :

psql 

Đầu tiên, ta sẽ tạo một database cho dự án Django của ta . Mỗi dự án nên có database riêng biệt vì lý do bảo mật. Ta sẽ gọi database của bạn là myproject trong hướng dẫn này, nhưng tốt hơn hết là nên chọn một cái gì đó mang tính mô tả hơn:

CREATE DATABASE myproject; 

Hãy nhớ kết thúc tất cả các lệnh tại dấu nhắc SQL bằng dấu chấm phẩy.

Tiếp theo, ta sẽ tạo một user database mà ta sẽ sử dụng để kết nối và tương tác với database . Đặt password thành password mạnh và an toàn:

CREATE USER myprojectuser WITH PASSWORD 'password'; 

Sau đó, ta sẽ sửa đổi một vài thông số kết nối cho user mà ta vừa tạo. Điều này sẽ tăng tốc hoạt động database để các giá trị chính xác không phải được truy vấn và đặt mỗi khi kết nối được cài đặt .

Ta đang đặt mã hóa mặc định thành UTF-8, mà Django mong đợi. Ta cũng đang đặt schemas cách ly giao dịch mặc định thành “đọc được commit ”, ngăn chặn việc đọc từ các giao dịch không được commit . Cuối cùng, ta đang đặt múi giờ. Theo mặc định, các dự án Django của ta sẽ được đặt để sử dụng UTC :

ALTER ROLE myprojectuser SET client_encoding TO 'utf8'; ALTER ROLE myprojectuser SET default_transaction_isolation TO 'read committed'; ALTER ROLE myprojectuser SET timezone TO 'UTC'; 

Bây giờ, tất cả những gì ta cần làm là cấp cho user database quyền truy cập vào database mà ta đã tạo:

GRANT ALL PRIVILEGES ON DATABASE myproject TO myprojectuser; 

Thoát khỏi dấu nhắc SQL để quay lại phiên shell của user postgres:

\q 

Thoát khỏi phiên shell của user postgres để quay lại phiên shell của regular user của bạn:

exit 

Cài đặt Django trong Môi trường ảo

Bây giờ database của ta đã được cài đặt , ta có thể cài đặt Django. Để có tính linh hoạt tốt hơn, ta sẽ cài đặt Django và tất cả các phụ thuộc của nó trong môi trường ảo Python.

Bạn có thể nhận gói virtualenv cho phép bạn tạo các môi trường này bằng lệnh :

sudo pip install virtualenv 

Tạo một folder để chứa dự án Django của bạn. Di chuyển vào folder sau đó:

mkdir ~/myproject cd ~/myproject 

Ta có thể tạo một môi trường ảo để lưu trữ các yêu cầu Python của dự án Django của ta bằng lệnh :

virtualenv myprojectenv 

Điều này sẽ cài đặt một bản sao local của Python và pip vào một folder gọi là myprojectenv trong folder dự án của bạn.

Trước khi cài đặt các ứng dụng trong môi trường ảo, ta cần kích hoạt nó. Bạn có thể thực hiện bằng cách gõ:

source myprojectenv/bin/activate 

Dấu nhắc của bạn sẽ thay đổi để cho biết rằng bạn hiện đang hoạt động trong môi trường ảo. Nó sẽ trông giống như thế này ( myprojectenv ) user @ host :~/ myproject $ .

Khi môi trường ảo của bạn đang hoạt động, bạn có thể cài đặt Django bằng pip . Ta cũng sẽ cài đặt gói psycopg2 cho phép ta sử dụng database mà ta đã cấu hình :

pip install django psycopg2 

Bây giờ ta có thể bắt đầu một dự án Django trong folder myproject của ta . Thao tác này sẽ tạo một folder con có cùng tên để chứa mã, và sẽ tạo một tập lệnh quản lý trong folder hiện tại. Đảm bảo thêm dấu chấm ở cuối lệnh để điều này được cài đặt chính xác:

django-admin.py startproject myproject . 

Cấu hình Cài đặt Database Django

Bây giờ ta có một dự án, ta cần cấu hình nó để sử dụng database ta đã tạo.

Mở file cài đặt dự án Django chính nằm trong folder dự án con:

nano ~/myproject/myproject/settings.py 

Ở cuối file , bạn sẽ thấy phần DATABASES trông giống như sau:

. . .  DATABASES = {     'default': {         'ENGINE': 'django.db.backends.sqlite3',         'NAME': os.path.join(BASE_DIR, 'db.sqlite3'),     } }  . . . 

Điều này hiện được cấu hình để sử dụng SQLite làm database . Ta cần thay đổi điều này để database PostgreSQL của ta được sử dụng thay thế.

Đầu tiên, thay đổi công cụ để nó trỏ đến phần backend postgresql_psycopg2 thay vì phần backend sqlite3 . Đối với NAME , sử dụng tên của database của bạn ( myproject trong ví dụ của ta ). Ta cũng cần thêm thông tin đăng nhập. Ta cần tên user , password và server để kết nối. Ta sẽ thêm và để trống tùy chọn cổng để mặc định được chọn:

. . .  DATABASES = {     'default': {         'ENGINE': 'django.db.backends.postgresql_psycopg2',         'NAME': 'myproject',         'USER': 'myprojectuser',         'PASSWORD': 'password',         'HOST': 'localhost',         'PORT': '',     } }  . . . 

Khi bạn hoàn tất, hãy lưu file .

Di chuyển Database và Kiểm tra Dự án của bạn

Bây giờ cài đặt Django đã được cấu hình , ta có thể di chuyển cấu trúc dữ liệu của bạn vào database của ta và kiểm tra server .

Ta có thể bắt đầu bằng cách tạo và áp dụng chuyển đổi vào database của bạn . Vì ta chưa có bất kỳ dữ liệu thực tế nào, điều này sẽ chỉ đơn giản là cài đặt cấu trúc database ban đầu:

cd ~/myproject python manage.py makemigrations python manage.py migrate 

Sau khi tạo cấu trúc database , ta có thể tạo account quản trị bằng lệnh :

python manage.py createsuperuser 

Bạn cần chọn tên user , cung cấp địa chỉ email, chọn và xác nhận password cho account .

Khi bạn đã cài đặt account quản trị, bạn có thể kiểm tra xem database của bạn có hoạt động chính xác hay không bằng cách khởi động server phát triển Django:

python manage.py runserver 0.0.0.0:8000 

Trong trình duyệt web , hãy truy cập domain hoặc địa chỉ IP của server , sau đó là :8000 để truy cập trang root Django mặc định:

http://server_domain_or_IP:8000 

Bạn sẽ thấy trang index mặc định:

Chỉ số Django

Nối /admin vào cuối URL và bạn có thể truy cập màn hình đăng nhập vào giao diện administrator :

Đăng nhập quản trị Django

Nhập tên user và password bạn vừa tạo bằng lệnh createsuperuser . Sau đó, bạn sẽ được đưa đến giao diện quản trị:

Giao diện quản trị Django

Khi điều tra xong, bạn có thể dừng server phát triển bằng cách nhấn CTRL-C trong cửa sổ terminal của bạn .

Bằng cách truy cập vào giao diện quản trị, ta đã xác nhận database của ta đã lưu trữ thông tin account user của ta và nó có thể được truy cập một cách thích hợp.

Kết luận

Trong hướng dẫn này, ta đã trình bày cách cài đặt và cấu hình PostgreSQL làm database backend cho một dự án Django. Mặc dù SQLite có thể dễ dàng xử lý tải trong quá trình phát triển và sử dụng production nhẹ, hầu hết các dự án được hưởng lợi từ việc triển khai DBMS đầy đủ tính năng hơn.


Tags:

Các tin liên quan

Cách sử dụng PostgreSQL với Ứng dụng Django của bạn trên Ubuntu 14.04
2015-03-25
Cách sử dụng PostgreSQL với ứng dụng Ruby on Rails của bạn trên Ubuntu 14.04
2015-03-18
Cách sử dụng PostgreSQL với ứng dụng Ruby on Rails của bạn trên CentOS 7
2015-03-18
Cách cài đặt và sử dụng PostgreSQL trên Ubuntu 14.04
2014-04-28
Cách cài đặt và sử dụng Zope 2 và PostgreSQL trên Ubuntu 13.10
2014-03-25
Cách mở rộng quy mô theo chiều ngang một ứng dụng Laravel 4 với database PostgreSQL
2014-02-27
Mở rộng quy mô Ruby on Rails: Thiết lập một server PostgreSQL chuyên dụng (Phần 3)
2014-02-27
Cách thiết lập bản sao Master Slave trên PostgreSQL trên VPS Ubuntu 12.04
2013-10-29
Cách cài đặt và sử dụng PostgreSQL trên CentOS 6
2013-10-23
Cách backup database PostgreSQL trên VPS Ubuntu
2013-08-28