Hướng dẫn cài đặt Django Web Framework trên Debian 12

theanh

Administrator
Nhân viên
Django là một framework web Python mã nguồn mở và miễn phí được sử dụng để phát triển các trang web và ứng dụng động. Nó được sử dụng để phát triển các ứng dụng Python phức tạp và dựa trên cơ sở dữ liệu.

Django tuân theo kiến trúc MVC (Model-View-Controller), cho phép các nhà phát triển viết ít mã hơn và tạo một trang web mới trong thời gian ngắn. Django có thể được cài đặt trên bất kỳ hệ điều hành nào chạy Python, bao gồm Windows, macOS, Linux/Unix và Solaris.

Hướng dẫn này sẽ chỉ cho bạn cách cài đặt framework web Django trên máy chủ Debian 12. Bạn sẽ bắt đầu với Django bằng cách tạo dự án Django đầu tiên của mình bằng cách sử dụng PostgreSQL làm cơ sở dữ liệu mặc định, máy chủ Gunicorn WSGI và Nginx làm proxy ngược.

Điều kiện tiên quyết​

Để bắt đầu, hãy đảm bảo bạn có những thứ sau:
  • Máy Debian 12.
  • Người dùng không phải root có quyền quản trị viên sudo.

Cài đặt các phụ thuộc​

Trong bước đầu tiên, bạn sẽ cài đặt các phụ thuộc gói cho cài đặt khung web Django của mình, bao gồm các gói sau:
  • Máy chủ PostgreSQL: Theo mặc định, Django sử dụng SQLite và ví dụ này sẽ chỉ cho bạn cách sử dụng PostgreSQL làm cơ sở dữ liệu cho dự án Django của mình.
  • Giám sát: Đây là trình quản lý quy trình và bạn sẽ chạy ứng dụng Django của mình với Gunicorn và Giám sát.
  • Máy chủ web Nginx: Ví dụ này sẽ chỉ cho bạn cách sử dụng Nginx làm proxy ngược cho dự án Django của mình. Điều này cho phép dự án Django của bạn có thể truy cập thông qua tên miền cục bộ
Đầu tiên, hãy thực hiện lệnh apt bên dưới để cập nhật và làm mới chỉ mục gói của bạn.
Mã:
sudo apt update
Bây giờ hãy cài đặt các gói phụ thuộc như môi trường ảo Python, trình quản lý gói pip, trình điều khiển PostgreSQL và libpq5, Nginx và Giám sát.
Mã:
sudo apt install build-essential python3-dev python3-pip python3-venv nginx supervisor postgresql libpq5 libpq-dev
Nhập y để xác nhận và tiếp tục cài đặt.


data:image/svg+xml,%3Csvg%20xmlns=%22http://www.w3.org/2000/svg%22%20width=%22750%22%20height=%22283%22%3E%3C/svg%3E


Sau khi cài đặt các phụ thuộc, hãy chạy các lệnh sau để xác minh các dịch vụ PostgreSQL, Nginx và Giám sát và đảm bảo các dịch vụ đó đang chạy và được bật.

Kiểm tra dịch vụ PostgreSQL sử dụng lệnh bên dưới.
Mã:
sudo systemctl is-enabled postgresql
sudo systemctl status postgresql
Nếu PostgreSQL đang chạy và được bật, bên dưới đầu ra bạn sẽ nhận được.


data:image/svg+xml,%3Csvg%20xmlns=%22http://www.w3.org/2000/svg%22%20width=%22750%22%20height=%22187%22%3E%3C/svg%3E


Kiểm tra dịch vụ Nginx bằng lệnh bên dưới.
Mã:
sudo systemctl is-enabled nginx
sudo systemctl status nginx
Nếu Nginx đang chạy và được bật, bên dưới là đầu ra bạn sẽ nhận được.


data:image/svg+xml,%3Csvg%20xmlns=%22http://www.w3.org/2000/svg%22%20width=%22750%22%20height=%22286%22%3E%3C/svg%3E


Cuối cùng, hãy kiểm tra Supervisor bằng cách sử dụng bên dưới lệnh.
Mã:
sudo systemctl is-enabled supervisor
sudo systemctl status supervisor
Bạn sẽ thấy Supervisor đang chạy và được bật.


data:image/svg+xml,%3Csvg%20xmlns=%22http://www.w3.org/2000/svg%22%20width=%22750%22%20height=%22243%22%3E%3C/svg%3E

Cài đặt Django qua Pip​

Khung web Django có thể được cài đặt theo nhiều cách khác nhau, bao gồm cài đặt thủ công qua Git, thông qua trình quản lý gói Pip Python hoặc kết hợp với môi trường bị cô lập với mô-đun venv và Pip. Trong ví dụ này, bạn sẽ cài đặt Django thông qua trình quản lý gói Pip trên môi trường Python bị cô lập.

Đăng nhập vào người dùng của bạn thông qua lệnh bên dưới.
Mã:
su - username
Bây giờ hãy tạo một thư mục dự án mới ~/testdjango và di chuyển vào đó.
Mã:
mkdir -p ~/testdjango; cd ~/testdjango
Tiếp theo, hãy chạy lệnh sau để tạo một môi trường ảo Python mới có tên là venv trong thư mục dự án hiện tại.
Mã:
python3 -m venv venv
Sau đó kích hoạt nó bằng lệnh bên dưới. Sau khi môi trường ảo được kích hoạt, dấu nhắc hiện tại của bạn sẽ có dạng (venv) bob@hostname:.
Mã:
source venv/bin/activate

data:image/svg+xml,%3Csvg%20xmlns=%22http://www.w3.org/2000/svg%22%20width=%22560%22%20height=%22253%22%3E%3C/svg%3E


Trong môi trường ảo venv, hãy thực thi lệnh pip bên dưới để cài đặt nền tảng web Django. Thao tác này sẽ cài đặt Django trong môi trường ảo Python của bạn chứ không phải trên toàn hệ thống.
Mã:
pip install django

or

pip install django==4.2.4
Bên dưới là quá trình cài đặt Django đang chạy.


data:image/svg+xml,%3Csvg%20xmlns=%22http://www.w3.org/2000/svg%22%20width=%22750%22%20height=%22250%22%3E%3C/svg%3E


Xác minh phiên bản Django của bạn sau khi quá trình cài đặt hoàn tất bằng lệnh django-admin bên dưới.
Mã:
django-admin --version
Đầu ra sau đây xác nhận Django 4.2.4 đã được cài đặt trong môi trường ảo venv thông qua Trình quản lý gói Python Pip.


data:image/svg+xml,%3Csvg%20xmlns=%22http://www.w3.org/2000/svg%22%20width=%22552%22%20height=%2292%22%3E%3C/svg%3E

Tạo dự án Django đầu tiên​

Phần này sẽ hướng dẫn bạn cách tạo dự án Django đầu tiên và sử dụng máy chủ PostgreSQL làm cơ sở dữ liệu mặc định. Để đạt được điều đó, hãy hoàn thành các bước sau:
  • Chuẩn bị cơ sở dữ liệu và người dùng.
  • Tạo Dự án Django thông qua django-admin.
  • Di chuyển cơ sở dữ liệu và tạo các tệp tĩnh.
  • Tạo người dùng quản trị và chạy Django.

Chuẩn bị Cơ sở dữ liệu và Người dùng​

Chạy lệnh pip bên dưới để cài đặt gói Python psycopg2 vào môi trường ảo của bạn. Đây là trình điều khiển Python sẽ được Django sử dụng để kết nối với máy chủ cơ sở dữ liệu PostgreSQL.
Mã:
pip install psycopg2
exit

data:image/svg+xml,%3Csvg%20xmlns=%22http://www.w3.org/2000/svg%22%20width=%22750%22%20height=%22253%22%3E%3C/svg%3E


Bây giờ hãy chạy lệnh sau để đăng nhập vào PostgreSQL shell.
Mã:
sudo -u postgres psql
Thực hiện các truy vấn sau để tạo cơ sở dữ liệu và người dùng mới cho dự án Django của bạn. Ví dụ sau sẽ tạo một cơ sở dữ liệu mới djangodb, người dùng django và mật khẩu p4ssw0rd.
Mã:
CREATE USER django WITH PASSWORD 'p4ssw0rd';
CREATE DATABASE djangodb OWNER django;

data:image/svg+xml,%3Csvg%20xmlns=%22http://www.w3.org/2000/svg%22%20width=%22577%22%20height=%22238%22%3E%3C/svg%3E


Tiếp theo, chạy các truy vấn sau để xác minh danh sách cơ sở dữ liệu và người dùng trên PostgreSQL của bạn máy chủ.
Mã:
\du
\l
Bạn sẽ thấy cơ sở dữ liệu djangodb và người dùng django đã được tạo.


data:image/svg+xml,%3Csvg%20xmlns=%22http://www.w3.org/2000/svg%22%20width=%22750%22%20height=%22376%22%3E%3C/svg%3E


Gõ quit để thoát khỏi máy chủ PostgreSQL.

Tạo Dự án Django​

Trước tạo dự án Django, đăng nhập vào tài khoản người dùng của bạn và kích hoạt môi trường ảo venv.
Mã:
su - bob
cd testdjango; source venv/bin/activate
Để tạo dự án Django mới, hãy chạy lệnh django-admin bên dưới. Trong trường hợp này, bạn sẽ tạo một dự án testapp mới trên thư mục làm việc hiện tại của mình.
Mã:
django-admin startproject testapp .
Sau khi dự án được tạo, thư mục mới testapp sẽ được tạo trên thư mục làm việc của bạn.


data:image/svg+xml,%3Csvg%20xmlns=%22http://www.w3.org/2000/svg%22%20width=%22664%22%20height=%22211%22%3E%3C/svg%3E


Tiếp theo, chạy lệnh sau để tạo một bí mật ngẫu nhiên cho dự án Django của bạn. Hãy chắc chắn sao chép đầu ra, vì bạn sẽ sử dụng nó để bảo mật cài đặt Django của mình.
Mã:
python3 -c 'from django.core.management.utils import get_random_secret_key; print(get_random_secret_key())'

data:image/svg+xml,%3Csvg%20xmlns=%22http://www.w3.org/2000/svg%22%20width=%22750%22%20height=%2263%22%3E%3C/svg%3E


Bây giờ hãy sử dụng trình soạn thảo ưa thích của bạn và mở testapp/settings.py tệp.
Mã:
nano testapp/settings.py
Ở đầu dòng, chèn cấu hình sau.
Mã:
import os
Chèn khóa bí mật của bạn vào SECRET_KEY tham số.
Mã:
SECRET_KEY = 'fzahzbm*wrxoleqb0^-3%%tf^y!b6lsc5-c#2^@#s6gkyrl2ef'
Nhập địa chỉ IP cục bộ và tên miền cục bộ của bạn vào tham số ALLOWED_HOSTS.
Mã:
ALLOWED_HOSTS = ['127.0.0.1','192.168.10.15','first-django.dev']
Thay đổi cấu hình cơ sở dữ liệu mặc định bằng các chi tiết máy chủ PostgreSQL như này:
Mã:
DATABASES = {
 'default': {
 'ENGINE': 'django.db.backends.postgresql_psycopg2',
 'NAME': 'djangodb',
 'USER': 'django',
 'PASSWORD': 'p4ssw0rd',
 'HOST': '127.0.0.1',
 'PORT': '5432',
 }
}
Cuối cùng, thêm tham số STATIC_ROOT để xác định thư mục lưu trữ các tệp tĩnh.
Mã:
STATIC_ROOT = os.path.join(BASE_DIR, "static/")
Lưu tệp và thoát khỏi trình chỉnh sửa khi hoàn tất.

Di chuyển cơ sở dữ liệu và tạo tệp tĩnh​

Trước Khi di chuyển cơ sở dữ liệu, hãy chạy lệnh sau để đảm bảo rằng bạn đã cấu hình cơ sở dữ liệu đúng.
Mã:
python3 manage.py check --database default
Nếu không có lỗi, hãy chạy lệnh sau để di chuyển cơ sở dữ liệu.
Mã:
python3 manage.py makemigrations
python3 manage.py migrate
Nếu mọi việc diễn ra tốt đẹp, bạn sẽ thấy quá trình di chuyển cơ sở dữ liệu như sau:


data:image/svg+xml,%3Csvg%20xmlns=%22http://www.w3.org/2000/svg%22%20width=%22737%22%20height=%22599%22%3E%3C/svg%3E


Cuối cùng, hãy chạy lệnh sau để tạo các tệp tĩnh cho dự án Django của bạn. Sau khi lệnh được thực thi, thư mục tĩnh mới sẽ được tạo và các tệp tĩnh sẽ được tạo vào đó.
Mã:
python3 manage.py collectstatic
Dưới đây là đầu ra khi tạo tệp tĩnh.


data:image/svg+xml,%3Csvg%20xmlns=%22http://www.w3.org/2000/svg%22%20width=%22621%22%20height=%22128%22%3E%3C/svg%3E

Tạo Admin Người dùng và chạy Django​

Chạy lệnh sau để tạo người dùng quản trị cho dự án Django của bạn.
Mã:
python3 manage.py createsuperuser
Nhập địa chỉ email và mật khẩu của bạn khi được nhắc.


data:image/svg+xml,%3Csvg%20xmlns=%22http://www.w3.org/2000/svg%22%20width=%22672%22%20height=%22183%22%3E%3C/svg%3E


Sau khi người dùng quản trị được tạo, hãy chạy lệnh bên dưới để chạy Django của bạn dự án.
Mã:
python3 manage.py runserver 0.0.0.0:8080
Sau khi lệnh được thực thi, dự án Django của bạn sẽ được chạy trên địa chỉ IP cục bộ của bạn trên cổng 8080.


data:image/svg+xml,%3Csvg%20xmlns=%22http://www.w3.org/2000/svg%22%20width=%22719%22%20height=%22253%22%3E%3C/svg%3E


Bây giờ hãy mở trình duyệt web của bạn và truy cập địa chỉ IP của máy chủ theo sau là cổng 8080, http://192.168.10.15:8080/. Nếu cài đặt Django thành công, bạn sẽ thấy trang Django index.html mặc định như sau:


data:image/svg+xml,%3Csvg%20xmlns=%22http://www.w3.org/2000/svg%22%20width=%22750%22%20height=%22514%22%3E%3C/svg%3E


Bây giờ hãy truy cập vào trang quản trị Django của bạn qua đường dẫn URL /admin, http://192.168.10.15:8080/admin. Nhập tên người dùng và mật khẩu quản trị Django của bạn, sau đó nhấp vào Đăng nhập.


data:image/svg+xml,%3Csvg%20xmlns=%22http://www.w3.org/2000/svg%22%20width=%22750%22%20height=%22401%22%3E%3C/svg%3E


Bạn sẽ thấy một ví dụ về bảng điều khiển người dùng Django như thế này:


data:image/svg+xml,%3Csvg%20xmlns=%22http://www.w3.org/2000/svg%22%20width=%22750%22%20height=%22225%22%3E%3C/svg%3E


Nhấn Ctrl+c để chấm dứt tiến trình.

Chạy Django với Gunicorn và Supervisor​

Lúc này, bạn đã hoàn tất cài đặt Django và tạo dự án Django đầu tiên của mình. Ở bước tiếp theo, bạn sẽ cấu hình Django để chạy ở chế độ nền bằng cách sử dụng máy chủ Gunicorn WSGI và trình quản lý tiến trình Supervisor.

Cài đặt Gunicorn​

Trong môi trường ảo venv, hãy thực thi lệnh pip bên dưới để cài đặt gunicorn.
Mã:
pip install gunicorn

data:image/svg+xml,%3Csvg%20xmlns=%22http://www.w3.org/2000/svg%22%20width=%22750%22%20height=%22229%22%3E%3C/svg%3E


Bây giờ hãy thực hiện lệnh sau để hủy kích hoạt môi trường ảo venv và quay lại người dùng gốc của bạn.
Mã:
deactivate
exit

Chạy Django với Gunicorn và Supervisor​

Tạo cấu hình giám sát mới /etc/supervisor/conf.d/testapp.conf bằng lệnh nano editor sau.
Mã:
sudo nano /etc/supervisor/conf.d/testapp.conf
Chèn cấu hình sau và đảm bảo thay đổi thông tin chi tiết về tên ứng dụng, đường dẫn của dự án và người dùng bằng thông tin của bạn. Trong ví dụ này, bạn sẽ chạy dự án Django của mình dưới socket UNIX /home/bob/testdjango/testapp.sock.
Mã:
[program:testapp] 
command=/bin/bash -c 'source /home/bob/testdjango/venv/bin/activate; gunicorn -t 3000 --workers 3 --bind unix:unix:/home/bob/testdjango/testapp.sock testapp.wsgi:application -w 2'
directory=/home/bob/testdjango
user=bob
group=www-data
autostart=true 
autorestart=true 
stdout_logfile=/home/bob/testdjango/testapp.log 
stderr_logfile=/home/bob/testdjango/error.log
Lưu và thoát tệp khi hoàn tất.

Cuối cùng, chạy lệnh sau để khởi động lại dịch vụ giám sát và áp dụng các thay đổi. Sau đó, hãy xác minh dịch vụ của người giám sát để đảm bảo rằng dịch vụ đang chạy.
Mã:
sudo systemctl restart supervisor
sudo systemctl status supervisor

data:image/svg+xml,%3Csvg%20xmlns=%22http://www.w3.org/2000/svg%22%20width=%22750%22%20height=%22258%22%3E%3C/svg%3E

Kiểm tra Django qua Supervisorctl​

Thực hiện lệnh Supervisorctl bên dưới để kiểm tra trạng thái ứng dụng đang chạy trong trình giám sát.
Mã:
sudo supervisorctl status
Bạn sẽ thấy ứng dụng testapp đang chạy trên PID 2577.


data:image/svg+xml,%3Csvg%20xmlns=%22http://www.w3.org/2000/svg%22%20width=%22639%22%20height=%22115%22%3E%3C/svg%3E


Cuối cùng, hãy kiểm tra ứng dụng Django của bạn thông qua lệnh curl bên dưới.
Mã:
curl --unix-socket /home/bob/testdjango/testapp.sock 127.0.0.1
Nếu mọi thứ diễn ra tốt đẹp, bạn sẽ thấy mã nguồn của trang index.html trong dự án Django của mình.


data:image/svg+xml,%3Csvg%20xmlns=%22http://www.w3.org/2000/svg%22%20width=%22750%22%20height=%22314%22%3E%3C/svg%3E

Cấu hình Nginx làm Proxy ngược cho Django​

Bây giờ dự án Django của bạn đang chạy ở chế độ nền, bước tiếp theo là thiết lập Nginx làm proxy ngược cho Django. Ví dụ sau sẽ sử dụng tên miền cục bộ.

Tạo cấu hình khối máy chủ Nginx mới /etc/nginx/sites-available/django bằng trình chỉnh sửa nano sau.
Mã:
sudo nano /etc/nginx/sites-available/django
Chèn cấu hình sau và đảm bảo thay đổi tên miền trong server_name tham số.
Mã:
server {
 listen 80;
 server_name first-django.dev;

 location = /favicon.ico { access_log off; log_not_found off; }
 try_files $uri @django;
 location /static {
 alias /home/bob/testdjango/static/;
 }

 location @django {
 proxy_set_header Host $http_host;
 proxy_set_header X-Real-IP $remote_addr;
 proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
 proxy_set_header X-Forwarded-Proto $scheme;
 proxy_pass http://unix:/home/bob/testdjango/testapp.sock;
 }
}
Lưu và thoát tệp khi bạn hoàn tất.

Bây giờ hãy chạy lệnh sau để kích hoạt khối máy chủ /etc/nginx/sites-available/django, sau đó xác minh cú pháp Nginx để đảm bảo rằng bạn có cú pháp phù hợp.
Mã:
sudo ln -s /etc/nginx/sites-available/django /etc/nginx/sites-enabled/
sudo nginx -t
Bạn sẽ nhận được cú pháp đầu ra là ok - thử nghiệm thành công khi bạn có cú pháp Nginx phù hợp.

Cuối cùng, khởi động lại dịch vụ Nginx của bạn bằng cách thực hiện lệnh sau và áp dụng các thay đổi bạn đã thực hiện.
Mã:
sudo systemctl restart nginx
Với lệnh này, dự án Django của bạn có thể truy cập được thông qua tên miền cục bộ.

Trên máy cục bộ của bạn, hãy chỉnh sửa tệp /etc/hosts cho Linux hoặc C:\Windows\System32\drivers\etc\hosts cho Windows. Sau đó, hãy định nghĩa địa chỉ IP máy chủ và tên miền của bạn như sau.
Mã:
192.168.10.15 first-django.dev
Lưu và thoát tệp khi hoàn tất.

Quay lại trình duyệt web và truy cập tên miền cục bộ của bạn, bạn sẽ thấy trang index.html mặc định của dự án Django.

Kết luận​

Tóm lại, bằng cách làm theo hướng dẫn từng bước này, bạn đã cài đặt được nền tảng web Django với PostgreSQL, Nginx, Gunicorn và Supervisor trên Debian 12. Bạn đã học cách tạo dự án Django với PostgreSQL làm cơ sở dữ liệu mặc định và chạy Django với Gunicorn và Supervisor. Bây giờ bạn có thể tạo và phát triển ứng dụng của mình bằng Django.
 
Back
Bên trên