Cách cài đặt Django Python Framework trên Ubuntu 22.04

theanh

Administrator
Nhân viên
Django là một framework python được sử dụng để phát triển các trang web và ứng dụng động. Nó tuân theo kiến trúc MVC (Model-View-Controller). Sử dụng Django giúp tăng tốc quá trình phát triển vì hầu hết các tác vụ cơ bản đều được Django xử lý.

Hướng dẫn này sẽ hướng dẫn bạn cách cài đặt framework Django trên máy chủ Ubuntu 22.04. Bạn cũng sẽ tạo một dự án demo và thử nghiệm nó.

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


  • Máy chủ chạy Ubuntu 22.04.

  • Người dùng sudo không phải root.

  • Đảm bảo mọi thứ được cập nhật.
Mã:
$ sudo apt update
$ sudo apt upgrade

Cài đặt Django​

Có một số phương pháp để bạn có thể cài đặt Django. Quyết định phương pháp nào phù hợp nhất với bạn phụ thuộc vào cách bạn muốn định cấu hình môi trường phát triển và nhu cầu của mình. Mỗi phương pháp đều có ưu và nhược điểm riêng. Chúng ta hãy cùng xem qua tất cả các phương pháp này.

Cài đặt từ kho lưu trữ Ubuntu​

Phương pháp đơn giản nhất để cài đặt Django là sử dụng kho lưu trữ của Ubuntu. Ubuntu 22.04 được tích hợp sẵn Python 3.10. Bạn có thể xác minh bằng lệnh sau.
Mã:
$ python3 -V
Python 3.10.4
Cài đặt Django bằng lệnh sau.
Mã:
$ sudo apt install python3-django
Chạy lệnh sau để xác minh thành công cài đặt.
Mã:
$ django-admin --version
3.2.12
Phiên bản Django đi kèm với Ubuntu là phiên bản LTS hiện tại được hỗ trợ cho đến năm 2024. Tuy nhiên, đây không phải là phiên bản hiện tại. Nếu bạn muốn cài đặt bản phát hành gần đây, phương pháp này không dành cho bạn.

Cài đặt bằng pip​

Đây là cách phổ biến nhất để cài đặt Django. Cách được khuyến nghị là tạo môi trường Python ảo. Điều này cho phép bạn cài đặt các gói Python mà không ảnh hưởng đến hệ thống.

Cài đặt pip và mô-đun venv. venv được sử dụng để tạo môi trường ảo Python và pip cài đặt Python packages.
Mã:
$ sudo apt install python3-pip python3-venv
Chúng ta hãy tạo một thư mục dự án demo.
Mã:
$ mkdir ~/sampleproject
$ cd ~/sampleproject
Tạo một môi trường ảo bằng lệnh sau. Thay thế sample_env bằng tên bạn muốn gọi cho môi trường ảo của mình.
Mã:
$ python3 -m venv sample_env
Thao tác này sẽ cài đặt phiên bản Python di động, pip trong thư mục dự án của bạn. Để cài đặt bất kỳ gói nào vào dự án, bạn phải kích hoạt môi trường bằng lệnh sau.
Mã:
$ source sample_env/bin/activate
Dấu nhắc shell của bạn sẽ thay đổi để phản ánh môi trường ảo.
Mã:
(sample_env) navjot@django:~/sampleproject$
Bây giờ môi trường ảo đã được kích hoạt, hãy sử dụng pip để cài đặt Django. Chạy lệnh sau để cài đặt Django.
Mã:
(sample_env) $ pip install django
Xác minh cài đặt.
Mã:
(sample_env) $ django-admin --version
4.0.5
Tùy thuộc vào yêu cầu của dự án, bạn có thể cài đặt phiên bản Django khác trong các mục sau cách.
Mã:
(sample_env) $ pip install django==3.2.1
Xác minh cài đặt.
Mã:
(sample_env) $ django-admin --version
3.2.1
Như bạn thấy, phương pháp này cài đặt phiên bản Django mới hơn phiên bản lấy từ kho lưu trữ Ubuntu.

Để thoát khỏi môi trường ảo, hãy chạy lệnh sau lệnh.
Mã:
(sample_env) $ deactivate

Cài đặt phiên bản phát triển​

Bạn cũng có thể sử dụng pip để cài đặt phiên bản phát triển của Django. Đối với điều này, chúng ta sẽ lấy phiên bản phát triển từ kho lưu trữ Github của Django.

Sao chép kho lưu trữ vào thư mục ~/django-dev bằng lệnh sau.
Mã:
$ git clone https://github.com/django/django ~/django-dev
Chuyển sang thư mục mới tạo thư mục.
Mã:
$ cd ~/django-dev
Tạo môi trường ảo.
Mã:
$ python3 -m venv dev_django_env
Kích hoạt môi trường.
Mã:
$ source dev_django_env/bin/activate
Cài đặt Django bằng pip. Cờ -e cài đặt nó ở chế độ có thể chỉnh sửa, chế độ này là bắt buộc nếu bạn cài đặt từ kiểm soát phiên bản.
Mã:
(dev_django_dev) $ pip install -e ~/django-dev
Xác minh cài đặt.
Mã:
(dev_django_dev) $ django-admin --version
4.2.dev20220628195651
Như bạn thấy, phiên bản ở đây là phiên bản phát triển mới nhất. Phiên bản phát triển của Django không hữu ích cho môi trường sản xuất.

Tạo một dự án mẫu​

Chúng ta hãy xây dựng một dự án Django mẫu. Tạo một thư mục cho dự án mẫu.
Mã:
$ mkdir ~/dj-sample
$ cd ~/dj-sample
Tạo một môi trường ảo Python.
Mã:
$ python3 -m venv sample_proj
Kích hoạt môi trường.
Mã:
$ source sample_proj/bin/activate
Cài đặt Django.
Mã:
(sample_proj) $ pip install django
Để xây dựng dự án, chúng ta cần sử dụng Lệnh startproject. Lệnh này tạo một thư mục khác bao gồm:
  • Một tập lệnh quản lý, manage.py,được sử dụng để quản lý các tác vụ cụ thể của Django.
  • Một thư mục có cùng tên với dự án bao gồm mã dự án.
Chúng ta sẽ tạo thư mục dự án trong thư mục làm việc hiện tại của mình. Để thực hiện điều đó, hãy sử dụng ký tự dot(.) ở cuối lệnh sau.
Mã:
(sample_proj) $ django-admin startproject demoproject .
Tiếp theo, chúng ta cần di chuyển cơ sở dữ liệu bằng lệnhmigrate. Di chuyển trong Django sẽ truyền bá những thay đổi bạn thực hiện cho các mô hình của mình vào lược đồ cơ sở dữ liệu. Python sử dụng cơ sở dữ liệu SQLite theo mặc định.
Mã:
(sample_proj) $ python manage.py migrate
Bạn sẽ nhận được kết quả đầu ra sau.
Mã:
Operations to perform: Apply all migrations: admin, auth, contenttypes, sessions
Running migrations: Applying contenttypes.0001_initial... OK Applying auth.0001_initial... OK Applying admin.0001_initial... OK Applying admin.0002_logentry_remove_auto_add... OK Applying admin.0003_logentry_add_action_flag_choices... OK Applying contenttypes.0002_remove_content_type_name... OK Applying auth.0002_alter_permission_name_max_length... OK Applying auth.0003_alter_user_email_max_length... OK Applying auth.0004_alter_user_username_opts... OK Applying auth.0005_alter_user_last_login_null... OK Applying auth.0006_require_contenttypes_0002... OK Applying auth.0007_alter_validators_add_error_messages... OK Applying auth.0008_alter_user_username_max_length... OK Applying auth.0009_alter_user_last_name_max_length... OK Applying auth.0010_alter_group_name_max_length... OK Applying auth.0011_update_proxy_permissions... OK Applying auth.0012_alter_user_first_name_max_length... OK Applying sessions.0001_initial... OK
Tiếp theo, tạo một người dùng quản trị để truy cập vào trang quản trị của Django giao diện.
Mã:
(sample_proj) $ python manage.py createsuperuser
Bạn sẽ được nhắc nhập tên người dùng, email và mật khẩu.
Mã:
Username (leave blank to use 'navjot'):
Email address: [emailprotected]
Password:
Password (again):
Superuser created successfully.

Kiểm tra Máy chủ phát triển​

Đã đến lúc kiểm tra ứng dụng. Để thực hiện được điều đó, bạn cần sửa đổi lệnh ALLOWED_HOSTS trong cài đặt Django. Chỉ thị này định nghĩa danh sách các địa chỉ IP và tên miền được cấp quyền truy cập vào ứng dụng Django.

Mở tệp cài đặt bằng lệnh sau.
Mã:
(sample_proj) $ nano demoproject/settings.py
Tìm mục sau.
Mã:
ALLOWED_HOSTS = []
Nhập địa chỉ IP máy chủ của bạn vào trong dấu ngoặc vuông. Mỗi mục phải được đặt trong dấu ngoặc kép và nhiều mục phải được phân tách bằng dấu phẩy. Nhập www.example.com sẽ được khớp chính xác. Tuy nhiên, .example.com sẽ khớp với example.comwww.example.com và bất kỳ tên miền phụ nào khác của example.com. Do đó, nên sử dụng dấu chấm để thêm tiền tố cho tên miền để khớp với tên miền đó và các tên miền phụ của nó.
Mã:
ALLOWED_HOSTS = ['']
Chúng tôi đã sử dụng địa chỉ IP để khớp với máy chủ của mình. Lưu tệp bằng cách nhấn Ctrl + X và nhập Y khi được nhắc.

Trước khi bạn kiểm tra máy chủ phát triển, bạn cần định cấu hình tường lửa để cho phép Django hoạt động. Django sử dụng cổng 8000 theo mặc định. Mở cổng bằng Tường lửa đơn giản (UFW).
Mã:
(sample_proj) $ sudo ufw allow 8000
Khởi động máy chủ phát triển.
Mã:
(sample_proj) $ python manage.py runserver 0.0.0.0:8000
Khởi chạy URL http://:8000 trong trình duyệt của bạn và bạn sẽ nhận được màn hình sau.


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


Bạn có thể truy cập vào giao diện quản trị bằng cách theo URL http://:8000/admin/ và bạn sẽ thấy màn hình đăng nhập sau.


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


Nhập thông tin đăng nhập đã tạo trước đó để đăng nhập vào bảng quản trị được hiển thị bên dưới.


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


Sau khi hoàn thành dự án demo, bạn có thể đóng máy chủ bằng cách nhấn Ctrl + C trong terminal.

Cài đặt và kiểm tra Gunicorn​

Chạy máy chủ Django liên tục bằng nohup​

Cho đến nay, dịch vụ của Django không liên tục. Để làm cho dịch vụ liên tục, có hai phương pháp. Phương pháp đầu tiên liên quan đến việc sử dụng tiện ích nohup. nohup là lệnh POSIX có nghĩa là không cúp máy. Nó được sử dụng để thực thi các lệnh theo cách không dừng lại ngay cả khi người dùng đăng xuất.

Đảm bảo rằng bạn đã thoát khỏi máy chủ từ thiết bị đầu cuối bằng cách nhấn Ctrl + C.

Chạy lệnh sau để chạy máy chủ phát triển Django.
Mã:
(sample_proj) $ nohup python manage.py runserver 0.0.0.0:8000 &
Bây giờ, máy chủ Django của bạn sẽ tiếp tục chạy cho đến khi bạn tắt nó theo cách thủ công. Lệnh sẽ cung cấp cho bạn ID tiến trình và xuất ra một lệnh khác.
Mã:
[1] 42595
(sample_proj) $ nohup: ignoring input and appending output to 'nohup.out'
^C
Nhấn Ctrl + C để thoát. Máy chủ Django gốc sẽ tiếp tục chạy. Bạn có thể xác minh bằng cách mở URL trong trình duyệt của mình.

Sau khi hoàn tất, bạn cần phải kết thúc tiến trình. Lệnh nohup cung cấp cho bạn một ID tiến trình. Nhưng trên thực tế, có hai tiến trình đang được chạy. Để tìm ID cho cả hai tiến trình, hãy chạy lệnh sau.
Mã:
(sample_proj) $ ps aux | grep manage.py
navjot 42650 3.6 1.8 47792 38168 pts/0 S 02:28 0:00 python manage.py runserver 0.0.0.0.:8000
navjot 42651 7.9 2.0 344904 41708 pts/0 Sl 02:28 0:00 /home/navjot/dj-sample/sample_proj/bin/python manage.py runserver 0.0.0.0:8000
navjot 42657 0.0 0.1 6612 2172 pts/0 S+ 02:28 0:00 grep --color=auto manage.py
Như bạn thấy, có hai tiến trình đang được chạy, một tiến trình có ID 42650 và tiến trình còn lại có ID 42651.

Chạy lệnh sau để tắt máy chủ bằng ID tiến trình bạn đã lấy được ở trên.
Mã:
(sample_proj) $ sudo kill -9 42650 42651

Cài đặt Gunicorn​

Phương pháp thứ hai để chạy máy chủ Django liên tục yêu cầu bạn cài đặt máy chủ web Gunicorn và Nginx. Gunicorn là máy chủ Python WSGI HTTP. Nó sẽ giao tiếp với ứng dụng Django và sau đó Nginx sẽ hoạt động như một proxy ngược cho Gunicorn. Phương pháp này có thêm lợi ích là cung cấp cho bạn tính bảo mật và hiệu suất đi kèm với việc sử dụng Nginx.

Cài đặt Gunicorn.
Mã:
(sample_proj) $ pip install gunicorn
Trước khi tiếp tục, chúng ta cần kiểm tra khả năng phục vụ dự án của Gunicorn. Chạy lệnh sau để chạy Gunicorn.
Mã:
(sample_proj) $ gunicorn --bind 0.0.0.0:8000 demoproject.wsgi
Điều này sẽ khởi động Gunicorn trên cùng một giao diện mà Django đang chạy. Để xác minh, hãy mở URL http://:8000 trong trình duyệt của bạn và bạn sẽ nhận được trang chủ Django tương tự. Điều này có nghĩa là Gunicorn đang chạy hoàn hảo.

Khi bạn hoàn tất quá trình kiểm tra, hãy nhấn Ctrl + C trên thiết bị đầu cuối để thoát Gunicorn.

Hủy kích hoạt môi trường ảo để quay lại shell thông thường của bạn.
Mã:
(sample_proj) $ deactivate

Tạo tệp Socket và Dịch vụ cho Gunicorn​

Bước đầu tiên là tạo tệp socket Gunicorn. Socket Gunicorn sẽ được tạo khi khởi động và lắng nghe các kết nối. Khi có kết nối xảy ra, systems sẽ tự động khởi động tiến trình Gunicorn để xử lý kết nối đó.

Tạo và mở tệp socket Gunicorn để chỉnh sửa.
Mã:
$ sudo nano /etc/systemd/system/gunicorn.socket
Dán mã sau vào nó.
Mã:
[Unit]
Description=gunicorn socket
[Socket]
ListenStream=/run/gunicorn.sock
[Install]
WantedBy=sockets.target
Lưu tệp bằng cách nhấn Ctrl + X và nhập Y khi được nhắc.

Tiếp theo, tạo và mở tệp dịch vụ Gunicorn để chỉnh sửa.
Mã:
$ sudo nano /etc/systemd/system/gunicorn.service
Dán mã sau vào đó.
Mã:
[Unit]
Description=django gunicorn daemon
Requires=gunicorn.socket
After=network.target
[Service]
User=navjot
Group=nginx
WorkingDirectory=/home/navjot/dj-sample
ExecStart=/home/navjot/dj-sample/sample_proj/bin/gunicorn \ --access-logfile - \ --workers 3 \ --bind unix:/run/gunicorn.sock \ demoproject.wsgi:application
[Install]
WantedBy=multi-user.target
Lưu tệp bằng cách nhấn Ctrl + X và nhập Y khi được nhắc. Thay thế navjot bằng tên người dùng hệ thống của bạn. Nhóm nginx sẽ cho phép máy chủ Nginx giao tiếp với Django.

Tải lại daemon hệ thống để làm mới các tệp systemd.
Mã:
$ sudo systemctl daemon-reload
Kích hoạt và khởi động socket Gunicorn tập tin.
Mã:
$ sudo systemctl start gunicorn.socket
$ sudo systemctl enable gunicorn.socket
Kiểm tra trạng thái của ổ cắm Gunicorn.
Mã:
$ sudo systemctl status gunicorn.socket
Bạn sẽ nhận được một đầu ra.
Mã:
? gunicorn.socket - gunicorn socket Loaded: loaded (/etc/systemd/system/gunicorn.socket; disabled; vendor preset: enabled) Active: active (listening) since Thu 2022-06-30 01:43:24 UTC; 20s ago Triggers: ? gunicorn.service Listen: /run/gunicorn.sock (Stream) CGroup: /system.slice/gunicorn.socket
Jun 30 01:43:24 django systemd[1]: Listening on gunicorn socket.
Dịch vụ Gunicorn vẫn chưa chạy như bạn có thể kiểm tra.
Mã:
$ sudo systemctl status gunicorn.service
? gunicorn.service - django gunicorn daemon Loaded: loaded (/etc/systemd/system/gunicorn.service; disabled; vendor preset: enabled) Active: inactive (dead)
TriggeredBy: ? gunicorn.socket
Để kiểm tra cơ chế kích hoạt ổ cắm, hãy chạy lệnh sau lệnh.
Mã:
$ curl --unix-socket /run/gunicorn.sock localhost
Bạn sẽ nhận được đầu ra HTML của trang chủ Django trong thiết bị đầu cuối của mình. Điều này cũng khởi động Gunicorn để phục vụ ứng dụng. Kiểm tra lại trạng thái của dịch vụ và bạn sẽ thấy rằng nó đang chạy ngay bây giờ.
Mã:
$ sudo systemctl status gunicorn.service
? gunicorn.service - django gunicorn daemon Loaded: loaded (/etc/systemd/system/gunicorn.service; disabled; vendor preset: enabled) Active: active (running) since Thu 2022-06-30 01:45:09 UTC; 12s ago
TriggeredBy: ? gunicorn.socket Main PID: 42365 (gunicorn) Tasks: 4 (limit: 2241) Memory: 91.7M CPU: 1.128s CGroup: /system.slice/gunicorn.service ??42365 /home/navjot/dj-sample/sample_proj/bin/python3 /home/navjot/dj-sample/sample_proj/bin/gunicorn --access-logfile - --workers 3 --bind unix:/run/gunicorn.sock demoproject.wsgi:application ??42366 /home/navjot/dj-sample/sample_proj/bin/python3 /home/navjot/dj-sample/sample_proj/bin/gunicorn --access-logfile - --workers 3 --bind unix:/run/gunicorn.sock demoproject.wsgi:application ??42367 /home/navjot/dj-sample/sample_proj/bin/python3 /home/navjot/dj-sample/sample_proj/bin/gunicorn --access-logfile - --workers 3 --bind unix:/run/gunicorn.sock demoproject.wsgi:application ??42368 /home/navjot/dj-sample/sample_proj/bin/python3 /home/navjot/dj-sample/sample_proj/bin/gunicorn --access-logfile - --workers 3 --bind unix:/run/gunicorn.sock demoproject.wsgi:application
Jun 30 01:45:09 django systemd[1]: Started django gunicorn daemon.
Jun 30 01:45:09 django gunicorn[42365]: [2022-06-30 01:45:09 +0000] [42365] [INFO] Starting gunicorn 20.1.0
Jun 30 01:45:09 django gunicorn[42365]: [2022-06-30 01:45:09 +0000] [42365] [INFO] Listening at: unix:/run/gunicorn.sock (42365)
Jun 30 01:45:09 django gunicorn[42365]: [2022-06-30 01:45:09 +0000] [42365] [INFO] Using worker: sync
Jun 30 01:45:09 django gunicorn[42366]: [2022-06-30 01:45:09 +0000] [42366] [INFO] Booting worker with pid: 42366
.......

Cài đặt Nginx​

Bước cuối cùng là cài đặt và cấu hình Nginx. Ubuntu 22.04 đi kèm với phiên bản Nginx cũ hơn. Bạn cần tải xuống kho lưu trữ Nginx chính thức để cài đặt phiên bản mới nhất.

Nhập khóa ký của Nginx.
Mã:
$ curl https://nginx.org/keys/nginx_signing.key | gpg --dearmor \
| sudo tee /usr/share/keyrings/nginx-archive-keyring.gpg >/dev/null
Thêm kho lưu trữ cho phiên bản ổn định của Nginx.
Mã:
$ echo "deb [signed-by=/usr/share/keyrings/nginx-archive-keyring.gpg arch=amd64] \
http://nginx.org/packages/ubuntu `lsb_release -cs` nginx" \
| sudo tee /etc/apt/sources.list.d/nginx.list
Cập nhật hệ thống kho lưu trữ.
Mã:
$ sudo apt update
Cài đặt Nginx.
Mã:
$ sudo apt install nginx
Xác minh cài đặt.
Mã:
$ nginx -v
nginx version: nginx/1.22.0

Cấu hình Nginx​

Tạo và mở tệp /etc/nginx/conf.d/django-gunicorn.conf để chỉnh sửa.
Mã:
$ sudo nano /etc/nginx/conf.d/django-gunicorn.conf
Dán mã sau vào nó.
Mã:
server { listen 80; server_name server_domain_or_IP; location = /favicon.ico { access_log off; log_not_found off; } location /static/ { root /home/navjot/dj-sample; } location / { 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:/run/gunicorn.sock; }
}
Thay thế vị trí gốc trong tệp trên bằng thư mục trên máy chủ của bạn.

Lưu tệp bằng cách nhấn Ctrl + X và nhập Y khi được nhắc.

Mở tệp /etc/nginx/nginx.conf để chỉnh sửa.
Mã:
$ sudo nano /etc/nginx/nginx.conf
Thêm dòng sau vào trước dòng include /etc/nginx/conf.d/*.conf;.
Mã:
server_names_hash_bucket_size 64;
Lưu tệp bằng cách nhấn Ctrl + X và nhập Y khi được nhắc.

Xác minh Nginx của bạn cấu hình.
Mã:
$ sudo nginx -t
Nếu bạn không thấy lỗi nào, điều đó có nghĩa là bạn có thể tiếp tục.

Bạn cũng sẽ cần thêm tên miền vào chỉ thị ALLOWED_HOSTS của mình. Mở tệp settings.py.
Mã:
$ nano ~/dj-sample/demoproject/settings.py
Thay đổi giá trị cho ALLOWED_HOSTS biến.
Mã:
ALLOWED_HOSTS = ['','django.example.com']
Lưu tệp bằng cách nhấn Ctrl + X và nhập Y khi được nhắc.

Khởi động lại Gunicorn Socket và Dịch vụ.
Mã:
$ sudo systemctl restart gunicorn.socket
$ sudo systemctl restart gunicorn.service
Khởi động máy chủ Nginx.
Mã:
$ sudo systemctl start nginx
Mở cổng HTTP. Bạn cũng có thể xóa cổng 8000 nếu không sử dụng nữa.
Mã:
$ sudo ufw delete allow 8000
$ sudo ufw allow http
Xác minh bằng cách mở URL http://django.example.com và trang chủ Django sẽ tải lên.

Cài đặt SSL​

Cho đến nay, ứng dụng Django của bạn đang được phục vụ qua kết nối HTTP dạng văn bản thuần túy. Chúng tôi khuyên bạn nên bảo vệ nó thông qua chứng chỉ SSL. Để làm được điều này, hãy sử dụng công cụ Certbot bằng công cụ Snapd. Công cụ này đã được cài đặt trên hệ thống Ubuntu 22.04.

Cài đặt kho lưu trữ Snapd cốt lõi.
Mã:
$ sudo snap install core
Cài đặt Certbot.
Mã:
$ sudo snap install --classic certbot
$ sudo ln -s /snap/bin/certbot /usr/bin/certbot
Tạo chứng chỉ. Lệnh sau cũng sẽ tự động cấu hình Nginx.
Mã:
$ sudo certbot --nginx --agree-tos --no-eff-email --staple-ocsp --preferred-challenges http -m [emailprotected] -d django.example.com
Mở cổng HTTPS trước.
Mã:
$ sudo ufw allow https
Truy cập URL https://django.example.com trong trình duyệt của bạn để xác nhận.

Kết luận​

Bài hướng dẫn của chúng tôi kết thúc tại đây, nơi bạn đã học cách cài đặt Django, Gunicorn và Nginx trên máy chủ Ubuntu 22.04. Bạn cũng đã cài đặt chứng chỉ SSL để tăng cường bảo mật cho dự án Django của mình. Nếu bạn có bất kỳ câu hỏi nào, hãy đăng chúng trong phần bình luận bên dưới.
 
Back
Bên trên