Hướng dẫn sử dụng MariaDB với ứng dụng Django trên CentOS 7

Django là một framework linh hoạt, chúng nhanh chóng tạo ra 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 tệp cơ sở dữ liệu SQLite nhẹ. Mặc dù SQLite hoạt động tốt trong một số tải công việc, nhưng một hệ quản trị cơ sở dữ liệu (DBMS) truyền thống có thể cải thiện hiệu suất trong môi trường sản xuất.

Hướng dẫn này sẽ chỉ bạn cách cài đặt và cấu hình MariaDB để sử dụng với các ứng dụng Django của bạn. Chúng ta sẽ 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, sau đó khởi tạo và cấu hình một dự án Django mới để sử dụng cơ sở dữ liệu này.

Yêu cầu để sử dụng MariaDB với ứng dụng Django

Để bắt đầu, bạn cần có một máy chủ CentOS 7 sạch với một người dùng được cấu hình không phải là root. Người dùng không phải là root này phải có quyền sudo. 

Sử dụng MariaDB với ứng dụng Django trên CentOS 7

Cài đặt các thành phần từ kho lưu trữ CentOS và EPEL

Bước đầu tiên của bạn sẽ là cài đặt tất cả các thành phần cần thiết từ kho lưu trữ. Bạn phải 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. Bạn cũng sẽ cài đặt phần mềm cơ sở dữ liệu 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 chúng ta cần có trong kho lưu trữ EPEL chứa các gói phần mềm bổ sung. Chúng ta có thể kích hoạt kho lưu trữ này một cách dễ dàng bằng cách thực hiện lệnh sau:

sudo yum install epel-release

Sau khi EPEL đã được kích hoạt, chúng ta có thể cài đặt các thành phần cần thiết bằng cách nhập:

sudo yum install python-pip python-devel gcc mariadb-server mariadb-devel

Sau khi cài đặt xong, bạn có thể khởi động và kích hoạt dịch vụ MariaDB bằng cách nhập:

sudo systemctl start mariadb
sudo systemctl enable mariadb

Sau đó, bạn có thể chạy một kịch bản bảo mật đơn giản bằng cách chạy:

sudo mysql_secure_installation

Bạn sẽ được hỏi về mật khẩu quản trị, mặc định là trống, chỉ cần nhấn ENTER để tiếp tục. Sau đó, bạn sẽ được yêu cầu thay đổi mật khẩu cho người dùng root, bạn nên thực hiện điều này. Tiếp theo, bạn sẽ được hỏi một loạt các câu hỏi, bạn chỉ cần nhấn ENTER để chấp nhận các tùy chọn mặc định.

Sau khi hoàn tất việc cài đặt và cấu hình cơ sở dữ liệu ban đầu, chúng ta có thể tiếp tục tạo cơ sở dữ liệu và người dùng cơ sở dữ liệu.

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

Chúng ta có thể bắt đầu bằng cách đăng nhập vào một phiên tương tác với phần mềm cơ sở dữ liệu bằng cách nhập lệnh sau:

mysql -u root -p

Bạn sẽ được yêu cầu nhập mật khẩu quản trị mà bạn đã chọn trong bước trước đó. Sau đó, bạn sẽ nhận được một dấu nhắc.

Trước tiên, chúng ta sẽ tạo một cơ sở dữ liệu cho dự án Django. Mỗi dự án nên có một cơ sở dữ liệu cô lập riêng vì lý do bảo mật. Trong hướng dẫn này, chúng ta sẽ gọi cơ sở dữ liệu của mình là "myproject", nhưng tốt hơn hết là bạn nên chọn một cái tên có tính chất mô tả hơn. Chúng ta sẽ đặt kiểu mặc định cho cơ sở dữ liệu thành UTF-8, đây là kiểu mà Django mong đợi:

CREATE DATABASE myproject CHARACTER SET UTF8;

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

Tiếp theo, chúng ta sẽ tạo một user database sẽ sử dụng để kết nối và tương tác với cơ sở dữ liệu. Hãy đặt mật khẩu thành một cái gì đó mạnh mẽ và an toàn:

CREATE USER myprojectuser@localhost IDENTIFIED BY 'password';

Bây giờ, tất cả những gì chúng ta cần làm là cấp quyền truy cập cho user database vào cơ sở dữ liệu đã tạo:

GRANT ALL PRIVILEGES ON myproject.* TO myprojectuser@localhost;

Lưu các thay đổi để chúng có sẵn trong phiên làm việc hiện tại:

FLUSH PRIVILEGES;

Thoát khỏi dấu nhắc SQL để trở lại phiên làm việc bình thường của bạn:

exit

Cài đặt Django trong một Môi trường ảo (Virtual Environment)

Bây giờ khi cơ sở dữ liệu của chúng ta đã được thiết lập, bạn có thể cài đặt Django. Để tăng tính linh hoạt, chúng ta sẽ cài đặt Django và tất cả các phụ thuộc của nó trong một môi trường ảo Python.

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

sudo pip install virtualenv

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

mkdir ~/myproject
cd ~/myproject

Chúng 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 bằng cách nhập:

virtualenv myprojectenv

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

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

source myprojectenv/bin/activate

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

Khi môi trường ảo của bạn được kích hoạt, bạn có thể cài đặt Django với pip. Chúng ta cũng sẽ cài đặt gói mysqlclient, chúng cho phép sử dụng cơ sở dữ liệu mà chúng ta đã cấu hình:

pip install django mysqlclient

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

django-admin.py startproject myproject .

Cấu hình cài đặt cơ sở dữ liệu trong Django

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

Mở tệp cấu hình chính của dự án Django được đặt trong thư mục con của dự án:

nano ~/myproject/myproject/settings.py

Ở phần cuối tệp, bạn sẽ thấy một phần DATABASES nhìn như thế này:

. . .

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

. . .

Hiện tại, nó đang được cấu hình để sử dụng SQLite làm cơ sở dữ liệu. Chúng ta cần thay đổi điều này để sử dụng cơ sở dữ liệu MariaDB.

Đầu tiên, thay đổi engine để trỏ tới backend mysql thay vì backend sqlite Với NAME, sử dụng tên cơ sở dữ liệu của bạn (ví dụ myproject). Chúng ta cũng cần thêm thông tin đăng nhập như tên người dùng, mật khẩu và máy chủ để kết nối. Chúng ta sẽ thêm và để trống tùy chọn port để chọn giá trị mặc định:

. . .

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

. . .

Sau khi đã hoàn thành, bạn lưu và đóng file.

Di chuyển cơ sở dữ liệu và kiểm tra dự án

Bây giờ khi cấu hình Django đã được thiết lập, chúng ta có thể thực hiện việc chuyển đổi cấu trúc dữ liệu vào cơ sở dữ liệu và kiểm tra máy chủ.

Đầu tiên, chúng ta sẽ tạo và áp dụng các chuyển đổi vào cơ sở dữ liệu. Vì chúng ta chưa có dữ liệu thực tế nên điều này chỉ đơn giản là thiết lập cấu trúc cơ sở dữ liệu ban đầu.

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

Sau khi tạo cấu trúc cơ sở dữ liệu, chúng ta 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 và chọn cũng như xác nhận mật khẩu cho tài khoản.

Sau khi bạn đã cấu hình tài khoản quản trị, bạn có thể kiểm tra xem cơ sở dữ liệu hoạt động đúng cách hay không 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 vào tên miền hoặc địa chỉ IP của máy chủ, sau đó thêm ":8000" để đến trang chủ mặc định của Django:

http://server_domain_or_IP:8000

Bạn sẽ thấy trang chủ mặc định của Django:

Hướng dẫn sử dụng MariaDB với ứng dụng Django trên CentOS 7

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

Hướng dẫn sử dụng MariaDB với ứng dụng Django trên CentOS 7

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ẽ được đưa đến giao diện quản trị (admin interface):

Hướng dẫn sử dụng MariaDB với ứng dụng Django trên CentOS 7

Khi bạn đã hoàn thành việc khám phá, 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.

Bằng cách truy cập vào giao diện quản trị, chúng ta đã xác nhận rằng cơ sở dữ liệu đã lưu trữ thông tin tài khoản người dùng và có thể truy cập một cách thích hợp.

Trong bài viết này, bạn đã được hướng dẫn cách cài đặt và cấu hình MariaDB làm cơ sở dữ liệu backend cho dự án Django. Trong khi SQLite có thể dễ dàng xử lý tải trong quá trình phát triển và sử dụng sản xuất nhẹ, hầu hết các dự án đều có lợi khi triển khai một hệ quản trị cơ sở dữ liệu (DBMS) tích hợp đầy đủ tính năng hơn.

Mọi người cũng tìm kiếm: django.db.backends.mariadb