NỘI DUNG

Hosting tốc độ cao Vietnix - tốc độ tải trang trung bình dưới 1 giây
VPS siêu tốc Vietnix - trải nghiệm mượt mà, ổn định
22/04/2023
Lượt xem

Cách sử dụng PostgreSQL với ứng dụng Django trên Ubuntu 20.04

22/04/2023
14 phút đọc
Lượt xem

Đánh giá

5/5 - (94 bình chọn)

Django là một framework linh hoạt giúp phát triển nhanh chóng các ứng dụng web bằng Python. Bài viết về cách sử dụng PostgreSQL với Django trên Ubuntu 20.04 này sẽ hướng dẫn bạn làm quen, cài đặt và cấu hình PostgreSQL để sử dụng với các ứng dụng Django từ việc cài đặt phần mềm cần thiết, tạo thông tin đăng nhập cơ sở dữ liệu cho ứng dụng, bắt đầu và cấu hình một dự án Django mới.

Điều kiện để sử dụng PostgreSQL với Django trên Ubuntu 20.04

Một máy chủ Ubuntu 20.04 cấu hình đúng cách với người dùng có quyền sudo mà không phải tài khoản root.

Nếu bạn muốn phát triển ứng dụng web dựa trên framework như Django bạn cần phải có một máy chủ linh hoạt, cấu hình mạnh mẽ, phù hợp với nhiều ngôn ngữ và hỗ trợ đa dạng hệ điều hành. Giải pháp tốt nhất là lựa chọn sử dụng VPS.

Vietnix hiện đang cung cấp dịch vụ VPS tốc độ cao tại Vietnix có cấu hình đa dạng, dễ dàng mở rộng theo nhu cầu sử dụng và hỗ trợ đa dạng hệ điều hành có thể giúp bạn triển khai ứng dụng Django hiệu quả. Liên hệ Vietnix ngay bây giờ để được tư vấn gói VPS phù hợp nhé.

Bước 1: Cài đặt các thành phần từ kho lưu trữ Ubuntu

Đầu tiên bạn sẽ cài đặt các thành phần thiết yếu bao gồm pip, trình quản lý gói, quản lý các thành phần Python và cả phần mềm cơ sở dữ liệu PostgreSQL với các thư viện liên quan.

Bạn sẽ cài đặt Python 3 trên Ubuntu 20.04 bằng cách gõ câu lệnh sau trên terminal hoặc có thể tham khảo bài viết trên website Vietnix ( Link: https://vietnix.vn/cai-dat-python-3-tren-ubuntu-20-04/ ):

sudo apt update
sudo apt install python3-pip python3-dev libpq-dev postgresql postgresql-contrib

Bước 2: Tạo người dùng cơ sở dữ liệu và cơ sở dữ liệu

Mặc định Postgres sử dụng cơ chế xác thực gọi là “xác thực ngang hàng” cho các kết nối cục bộ. Về cơ bản có nghĩa là nếu tên người dùng mà bạn đăng nhập vào máy chủ Ubuntu 20.04 khớp với tên người dùng Postgres hợp lệ, người dùng Ubuntu đó có thể đăng nhập vào Postgres mà không cần xác thực thêm.

Trong quá trình cài đặt Postgres, người dùng hệ điều hành có tên Postgres đã được tạo để tương ứng với người dùng quản trị Postgres của PostgreSQL. Bạn sẽ sử dụng người dùng này khi thực hiện các tác vụ quản trị. Bạn có thể sử dụng sudo và chuyển tên người dùng với tùy chọn -u.

Đăng nhập bằng tài khoản Postgres mặc định bằng cách nhập:

sudo -u postgres psql

Sau khi vào cơ sở dữ liệu thành công, bạn cần tạo một cơ sở dữ liệu cho dự án Django. Mỗi dự án nên có cơ sở dữ liệu riêng biệt vì lý do bảo mật. Trong bài hướng dẫn này, database sẽ được đặt tên là myproject. Đối với các dự án khác, tốt hơn hết là bạn nên chọn một cái tên nào đó mô tả chính xác hơn về dự án của bạn:

CREATE DATABASE myproject;

Một lưu ý quan trọng rằng khi thao tác với Postgres rằng luôn kết thúc câu lệnh của bạn bằng dấu chấm phẩy ";".

Sau đó, bạn sẽ tạo một Postgres user mà bạn sẽ sử dụng để kết nối và tương tác với cơ sở dữ liệu. Đặt một mật khẩu mạnh để đảm bảo sự an toàn cho cơ sở dữ liệu của bạn:

CREATE USER myprojectuser WITH PASSWORD 'password';

Sau đó, thực hiện sửa đổi một vài quyền trên cơ sở dữ liệu cho người dùng bạn vừa tạo. Việc này sẽ tăng tốc các hoạt động cơ sở dữ liệu để đảm bảo các sự chính xác trong lưu trữ, đảm bảo không có truy vấn từ một người dùng không hợp lệ.

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';

Trong câu lệnh trên, bạn đặt mã hóa mặc định thành UTF-8 để phù hợp định dạng với Django. Thiết lập cơ chế cho các transactions mặc định thành “read commited”, chặn đọc dữ liệu từ các transactions không xác định. Cuối cùng là câu lệnh thiết lập múi giờ dạng UTC, phù hợp với dạng mặc định của các dự án Django. Đây là tất cả các khuyến nghị từ chính dự án Django.

Bây giờ, việc bạn cần làm là cung cấp cho người dùng myprojectuser quyền truy cập vào cơ sở dữ liệu bạn đã tạo:

GRANT ALL PRIVILEGES ON DATABASE myproject TO myprojectuser;

Thoát khỏi SQL prompt để quay lại giao diện dòng lệnh của người dùng Postgres bằng câu lệnh:

\q

Bước 3: Cài đặt Django trong môi trường ảo

Bây giờ cơ sở dữ liệu của bạn đã được thiết lập, tiếp theo bạn cần cài đặt Django. Để linh hoạt hơn, bạn sẽ cài đặt Django và tất cả các phần phụ thuộc trong môi trường ảo Python. Package virtualenv cho phép bạn tạo môi trường ảo Python này một cách dễ dàng.

Để tải xuống virtualenv, bạn thực hiện câu lệnh sau:

sudo pip3 install virtualenv

Tạo và chuyển sang một thư mục để lưu trữ dự án Django của bạn:

mkdir ~/myproject
cd ~/myproject

Bạn 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 bằng cách nhập:

python3 -m virtualenv myprojectenv

Câu lệnh này sẽ cài đặt một bản sao cục bộ của Python và lệnh pip cục bộ vào một thư mục gọi là myprojectenv trong thư mục dự án của bạn.

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

source myprojectenv/bin/activate

Prompt 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. Giao diện dòng lệnh sẽ trông giống như thế này (myprojectenv) user@host: ~/myproject $.

Khi môi trường ảo của bạn hoạt động, bạn có thể cài đặt bản phát hành chính thức của Django bằng pip. Bạn cũng cần cài đặt gói psycopg2 , gói này được sử dụng để thao tác với cơ sở dữ liệu Postgres mà bạn đã cấu hình:

pip install Django psycopg2

Lưu ý: Bất kể bạn đang sử dụng phiên bản Python nào, khi môi trường ảo được kích hoạt, bạn nên ưu tiên sử dụng lệnh pip thay vì pip3.

Bây giờ bạn có thể bắt đầu một dự án Django trong thư mục myproject. Điều này sẽ tạo ra một thư mục con có cùng tên để lưu trữ code và sẽ tạo một tập lệnh quản lý trong thư mục hiện tại. Bạn chú ý thêm dấu chấm ở cuối lệnh để thiết lập không bị lỗi nhé:

django-admin startproject myproject .

Bước 4: Cấu hình cơ sở dữ liệu Django

Trước đó bạn đã tạo thành công thư mục code và cấu hình Django thành công, bay giờ bạn cần cấu hình để sử dụng cơ sở dữ liệu mà bạn đã tạo.

Mở tệp cài đặt dự án Django chính nằm trong thư mục dự án con, bạn dùng trình soạn thảo nano để cấu hình bằng câu lệnh sau:

nano ~/myproject/myproject/settings.py

Ở cuối tệp, bạn sẽ thấy phần DATABASES giống như sau:

. . .

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

. . .

Mặc định Django được cấu hình để sử dụng SQLite làm cơ sở dữ liệu. Bạn có thể giữ nguyên cấu hình này khi bạn thao tác với cơ sở dữ liệu SQLite. Tuy nhiên, trong hướng dẫn này Vietnix hướng dẫn bạn thao tác với PostgreSQL. Vì vậy, bạn cần thay đổi cấu hình này để thao tác với cơ sở dữ liệu PostgreSQL.

Đầu tiên, thay đổi engine sang postgresql thay vì sqlite3. Đối với NAME, bạn sử dụng tên của cơ sở dữ liệu của bạn là myproject trong ví dụ này. Bạn cũng cần cấu hình các thông tin đăng nhập để đảm bảo rằng bạn có quyền thao tác với cơ sở dữ liệu đó. Bạn cần thêm các trường như username, password, host, port. Bạn sẽ điền giá trị cho các trường đó và để trống port nếu cấu hình Postgres với port mặc định hoặc nếu bạn thay đổi port của dịch vụ Postgres trong khi cấu hình thì giá trị port cần thay đổi theo, bạn thực hiện thêm các dòng lệnh sau:

. . .

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

. . .

Trong tệp cấu hình này, bạn cũng sẽ cần điều giá trị ALLOWED_HOSTS. Điều này xác định whitelist, tức danh sách cho phép các địa chỉ IP hoặc tên miền được phép kết nối với Django. Khi đó bất kỳ yêu cầu đến với máy chủ mà có địa chỉ IP hoặc tên miền không có trong danh sách này sẽ tạo ra một ngoại lệ và không cho phép kết nối với Django. Việc này được Django yêu cầu để đảm bảo ngăn chặn một nhóm lỗ hổng bảo mật nhất định.

Ví dụ cấu hình cho phép địa chỉ và tên miền được phép kết nối như sau:

. . .
# The simplest case: just add the domain name(s) and IP addresses of your Django server
# ALLOWED_HOSTS = [ 'example.com', '203.0.113.5']
# To respond to 'example.com' and any subdomains, start the domain with a dot
# ALLOWED_HOSTS = ['.example.com', '203.0.113.5']
ALLOWED_HOSTS = ['your_server_domain_or_IP']

Trong dấu ngoặc vuông, bạn liệt kê các địa chỉ IP hoặc tên miền được liên kết với máy chủ Django của bạn. Các IP hoặc tên miền phân tách bằng dấu phẩy. Khi bạn xác định hết các địa chỉ, tên miền cho phép thì thực hiện kết thúc, lưu và đóng tệp.

Bước 5: Migrate cơ sở dữ liệu và kiểm thử dự án

Migrate (hay migration) là một quá trình chuyển đổi dữ liệu từ một hệ thống này sang một hệ thống khác. Nói một cách ngắn gọn là chuyển đổi hệ thống lưu trữ dữ liệu.

Trong ví dụ này, khi các cài đặt Django đã hoàn tất, bạn thực hiện migrate để chuyển các cấu trúc dữ liệu sang cơ sở dữ liệu và thực hiện kiểm thử máy chủ.

Vì cơ sở dữ liệu chưa có bất kỳ bản ghi thực tế nào, cho nên quá trình migrate này sẽ chỉ cần thiết lập cấu trúc cơ sở dữ liệu ban đầu, bạn thực hiện bằng các câu lệnh sau:

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

Sau khi tạo cấu trúc cơ sở dữ liệu, bạn có thể tạo tài khoản quản trị bằng cách nhập:

python manage.py createsuperuser

Bạn sẽ được yêu cầu chọn tên người dùng, cung cấp địa chỉ email, mật khẩu và xác nhận mật khẩu cho tài khoản.

Nếu bạn làm theo hướng dẫn thiết lập máy chủ ban đầu, bạn nên có tường lửa UFW. Trước khi bạn có thể truy cập máy chủ phát triển Django để kiểm tra cơ sở dữ liệu của mình, bạn cần cấu hình tường lửa cho phép port hoạt động.

Cho phép các kết nối bên ngoài đến cổng được thiết lập bằng cách nhập:

sudo ufw allow 8000

Khi bạn mở port, bạn có thể kiểm tra xem cơ sở dữ liệu của bạn có hoạt động chính xác bằng cách khởi động máy chủ phát triển Django:

python manage.py runserver 0.0.0.0:8000

Trong trình duyệt web của bạn, hãy truy cập tên miền hoặc địa chỉ IP của máy chủ của bạn với cổng dịch vụ 8000 bằng tên miền như sau:

http://server_domain_or_IP:8000

Trong đó: server_domain_or_IP là tên miền bạn cấu hình cho dịch vụ hoặc IP của máy chủ dịch vụ.

Khi đó bạn sẽ thấy trang chủ mặc định như sau:

Thông báo cài đặt thành công
Thông báo cài đặt thành công

Thêm /admin vào cuối URL bạn sẽ có thể truy cập màn hình đăng nhập vào giao diện quản trị viên:

Giao diện quản trị viên
Giao diện quản trị viên

Nhập tên người dùng và mật khẩu bạn vừa tạo bằng lệnh createsuperuser. Sau đó, bạn sẽ thấy giao diện quản trị như sau:

Giao diện Django administration
Giao diện Django administration

Bạn có thể dừng máy chủ 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 giao diện quản trị viên thành công đã xác nhận rằng cơ sở dữ liệu của bạn đã lưu trữ thông tin tài khoản người dùng và có thể được truy cập một cách chính xác.

Lời kết

Với bài hướng dẫn về cách sử dụng PostgreSQL với Django trên Ubuntu 20.04 trên, bạn có thể cài đặt và cấu hình PostgreSQL làm cơ sở dữ liệu phục vụ cho các dự án với Django một cách dễ dàng. Mặc dù SQLite có thể dễ dàng xử lý trong quá trình phát triển và sử dụng để phát triển các ứng dụng web nhanh chóng, nhưng bạn cũng nên cân nhắc sử dụng PostgresSQL để thực hiện một hệ thống quản lý cơ sở dữ liệu đầy đủ tính năng hơn. Chúc bạn thành công.

THEO DÕI VÀ CẬP NHẬT CHỦ ĐỀ BẠN QUAN TÂM

Đăng ký ngay để nhận những thông tin mới nhất từ blog của chúng tôi. Đừng bỏ lỡ cơ hội truy cập kiến thức và tin tức hàng ngày

Chọn chủ đề :

Hưng Nguyễn

Co-Founder
tại

Kết nối với mình qua

Kết nối với mình qua

Theo dõi
Thông báo của
guest
0 Comments
Phản hồi nội tuyến
Xem tất cả bình luận

Tăng tốc độ website - Nâng tầm giá trị thương hiệu

Banner group
Tăng tốc tải trang

95 điểm

Nâng cao trải nghiệm người dùng

Tăng 8% tỷ lệ chuyển đổi

Thúc đẩy SEO, Google Ads hiệu quả

Tăng tốc ngay

SẢN PHẨM NỔI BẬT

Black Friday Hosting & VPS

Chương trình bắt đầu sau

Giảm giá 40% hosting VPS

50 coupon mỗi ngày

Gia hạn giá không đổi

NHẬN DEAL NGAY
Pattern

7 NGÀY DÙNG THỬ HOSTING

NẮM BẮT CƠ HỘI, THÀNH CÔNG DẪN LỐI

Cùng trải nghiệm dịch vụ hosting tốc độ cao được hơn 100,000 khách hàng sử dụng

Icon
ĐĂNG KÝ NHẬN TÀI LIỆU THÀNH CÔNG
Cảm ơn bạn đã đăng ký nhận tài liệu mới nhất từ Vietnix!
ĐÓNG

ĐĂNG KÝ DÙNG THỬ HOSTING

Asset

7 NGÀY MIỄN PHÍ

Asset 1

ĐĂNG KÝ DÙNG THỬ HOSTING

Asset

7 NGÀY MIỄN PHÍ

Asset 1
Icon
XÁC NHẬN ĐĂNG KÝ DÙNG THỬ THÀNH CÔNG
Cảm ơn bạn đã đăng ký thông tin thành công. Đội ngũ CSKH sẽ liên hệ trực tiếp để kích hoạt dịch vụ cho bạn nhanh nhất!
ĐÓNG