Cách cài đặt Django Python Framework trên CentOS 8

theanh

Administrator
Nhân viên
Django là một nền tảng web miễn phí, mã nguồn mở và cấp cao được sử dụng để phát triển Ứng dụng web Python. Nó đi kèm với một bộ công cụ giúp bạn xây dựng các ứng dụng web an toàn và có thể mở rộng. Mục tiêu chính của nó là giúp việc tạo các ứng dụng phức tạp trở nên dễ dàng hơn và xử lý cấu trúc bên trong.

Trong hướng dẫn này, chúng ta sẽ tìm hiểu cách cài đặt Django và cấu hình Nginx làm proxy ngược cho Django trên CentOS 8.

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

  • Một máy chủ chạy CentOS 8.
  • Mật khẩu gốc được cấu hình trên máy chủ của bạn.

Cài đặt các gói bắt buộc​

Django là một nền tảng dựa trên Python nên bạn sẽ cần cài đặt Python và PIP trong hệ thống của mình. Bạn có thể cài đặt chúng bằng cách chạy lệnh sau:
Mã:
dnf install python36 python3-pip -y
Sau khi cả hai gói được cài đặt, bạn có thể tiến hành bước tiếp theo.

Cài đặt Django​

Bạn có thể cài đặt Django bằng lệnh PIP như hiển thị bên dưới:
Mã:
pip3 install Django
Sau khi cài đặt Django, bạn có thể kiểm tra phiên bản Django bằng lệnh sau:
Mã:
django-admin --version
Bạn sẽ thấy phiên bản Django trong đầu ra:
Mã:
3.0.3

Tạo một dự án Django​

Tại thời điểm này, Django đã được cài đặt. Bây giờ, đã đến lúc tạo một ứng dụng Django mới.

Bạn có thể tạo một ứng dụng Django mới bằng lệnh django-admin bên trong thư mục /opt như được hiển thị bên dưới:
Mã:
cd /opt
 django-admin startproject djangoproject
Sau khi dự án django đã được tạo, hãy thay đổi thư mục thành djangoproject và di chuyển các thay đổi bằng lệnh sau:
Mã:
cd djangoproject
 python3 manage.py migrate
Bạn sẽ nhận được đầu ra sau:
Mã:
Các thao tác cần thực hiện: Áp dụng tất cả các lần di chuyển: admin, auth, contenttypes, sessionsĐang chạy các lần di chuyển: Đang áp dụng contenttypes.0001_initial... OK Đang áp dụng auth.0001_initial... OK Đang áp dụng admin.0001_initial... OK Đang áp dụng admin.0002_logentry_remove_auto_add... OK Đang áp dụng admin.0003_logentry_add_action_flag_choices... OK Đang áp dụng contenttypes.0002_remove_content_type_name... OK Đang áp dụng auth.0002_alter_permission_name_max_length... OK Đang áp dụng auth.0003_alter_user_email_max_length... OK Đang áp dụng auth.0004_alter_user_username_opts... OK Đang áp dụng auth.0005_alter_user_last_login_null... OK Đang áp dụng auth.0006_require_contenttypes_0002... OK Đang áp dụng auth.0007_alter_validators_add_error_messages... OK Đang áp dụng auth.0008_alter_user_username_max_length... OK Đang áp dụng auth.0009_alter_user_last_name_max_length... OK Đang áp dụng auth.0010_alter_group_name_max_length... OK Applying auth.0011_update_proxy_permissions... OK Applying sessions.0001_initial... OK
Tiếp theo, bạn sẽ cần tạo một tài khoản người dùng quản trị để quản lý dự án Django. Bạn có thể tạo tài khoản này bằng lệnh sau:
Mã:
python3 manage.py createsuperuser
Bạn sẽ được yêu cầu cung cấp tên người dùng, email và mật khẩu. Bạn có thể cung cấp chúng theo lựa chọn của mình như hiển thị bên dưới:
Mã:
Tên người dùng (để trống để sử dụng 'root'): dadminĐịa chỉ email: [emailprotected]Mật khẩu:Mật khẩu (một lần nữa):Siêu người dùng đã được tạo thành công.
Sau khi hoàn tất, bạn có thể tiến hành bước tiếp theo.

Khởi động ứng dụng Django​

Theo mặc định, không thể truy cập ứng dụng Django từ các máy chủ từ xa. Vì vậy, bạn sẽ cần cho phép Django cho các máy chủ bên ngoài. Bạn có thể thực hiện bằng cách thêm IP máy chủ của mình vào settings.py:
Mã:
nano /opt/djangoproject/djangoproject/settings.py
Thay đổi dòng sau:
Mã:
ALLOWED_HOSTS = ['your-server-ip']
Lưu và đóng tệp. Sau đó, khởi động ứng dụng Django bằng lệnh sau:
Mã:
cd /opt/djangoproject
 python3 manage.py runserver 0.0.0.0:8000
Bạn sẽ thấy đầu ra sau:
Mã:
Watching for file changes with StatReloaderĐang thực hiện kiểm tra hệ thống...Kiểm tra hệ thống không phát hiện ra sự cố nào (0 đã tắt tiếng).Ngày 03 tháng 03 năm 2020 - 02:31:19Django phiên bản 3.0.3, sử dụng cài đặt 'djangoproject.settings'Khởi động máy chủ phát triển tại http://0.0.0.0:8000/Thoát khỏi máy chủ bằng CONTROL-C.Ứng dụng Django hiện đã được khởi động và chạy trên cổng 8000.
Tại thời điểm này, ứng dụng Django hiện đã được khởi động và chạy trên cổng 8000. Bây giờ bạn có thể tiến hành bước tiếp theo.

Cấu hình SELinux và Tường lửa​

Tiếp theo, bạn sẽ cần cho phép cổng 8000 và 80 thông qua firewalld. Bạn có thể cho phép chúng bằng lệnh sau:
Mã:
firewall-cmd --permanent --add-port=8000/tcp
 firewall-cmd --permanent --add-port=80/tcp
 firewall-cmd --reload
Tiếp theo, cấu hình SELinux bằng lệnh sau:
Mã:
setsebool httpd_can_network_connect on -P
Sau khi hoàn tất, bạn có thể tiến hành bước tiếp theo.

Truy cập ứng dụng Django​

Bạn có thể truy cập ứng dụng Django bằng cách truy cập URL http://your-server-ip:8000. Bạn sẽ thấy trang sau:



Bạn cũng có thể truy cập giao diện quản trị Django bằng URL http://your-server-ip:8000/admin. Bạn sẽ thấy trang sau:



Cung cấp tên người dùng, mật khẩu quản trị viên và nhấp vào nút Đăng nhập vào. Bạn sẽ thấy trang sau:


Cài đặt Nginx và Gunicorn​

Trong phần này, chúng ta sẽ cài đặt Gunicorn để tạo và quản lý dịch vụ Django và Nginx để phục vụ ứng dụng Django.

Trước tiên, cài đặt Nginx bằng lệnh sau:
Mã:
dnf install nginx -y
Tiếp theo, cài đặt Gunicorn bằng lệnh PIP như hiển thị bên dưới:
Mã:
pip3 install gunicorn
Sau khi cả hai gói được cài đặt, hãy khởi động dịch vụ Nginx và cho phép nó khởi động sau khi hệ thống khởi động lại bằng lệnh sau:
Mã:
systemctl start nginx
 systemctl enable nginx
Tiếp theo, thay đổi quyền sở hữu thư mục /opt/djangoproject thành Nginx như hiển thị bên dưới:
Mã:
chown -R nginx:nginx /opt/djangoproject

Tạo tệp dịch vụ Systemd cho Django​

Tiếp theo, tạo tệp dịch vụ systemd để quản lý dịch vụ Django bằng lệnh sau:
Mã:
nano /etc/systemd/system/django.service
Thêm các dòng sau:
Mã:
[Unit]Description=django daemonAfter=network.target[Service]User=nginxGroup=nginxWorkingDirectory=/opt/djangoprojectExecStart=/usr/local/bin/gunicorn --workers 3 --bind unix:/opt/djangoproject/djangoproject.sock djangoproject.wsgi:application[Install]WantedBy=multi-user.target
Lưu và đóng tệp, sau đó tải lại daemon systemd bằng lệnh sau lệnh:
Mã:
systemctl daemon-reload
Tiếp theo, khởi động dịch vụ Django và cho phép nó khởi động sau khi hệ thống khởi động lại bằng lệnh sau:
Mã:
systemctl start django
 systemctl enable django
Bây giờ bạn có thể kiểm tra trạng thái của dịch vụ Django bằng lệnh sau:
Mã:
systemctl status django
Bạn sẽ thấy đầu ra sau:
Mã:
? django.service - daemon django Đã tải: đã tải (/etc/systemd/system/django.service; disabled; vendor preset: disabled) Đang hoạt động: đang hoạt động (đang chạy) kể từ Thứ Hai 2020-03-02 22:27:51 EST; 3 phút 32 giây trước PID chính: 960 (django) Nhiệm vụ: 4 (giới hạn: 25028) Bộ nhớ: 95,2M CGroup: /system.slice/django.service ??960 /usr/bin/python3.6 /usr/local/bin/gunicorn --workers 3 --bind unix:/opt/djangoproject/djangoproject.sock djangoproject.wsgi:a> ??964 /usr/bin/python3.6 /usr/local/bin/gunicorn --workers 3 --bind unix:/opt/djangoproject/djangoproject.sock djangoproject.wsgi:a> ??965 /usr/bin/python3.6 /usr/local/bin/gunicorn --workers 3 --bind unix:/opt/djangoproject/djangoproject.sock djangoproject.wsgi:a> ??966 /usr/bin/python3.6 /usr/local/bin/gunicorn --workers 3 --bind unix:/opt/djangoproject/djangoproject.sock djangoproject.wsgi:a>02/03 22:27:51 centos8 systemd[1]: Đã khởi động daemon django.02/03 22:27:52 centos8 django[960]: [02/03/2020 22:27:52 -0500] [960] [THÔNG TIN] Đang khởi động django 20.0.402/03 22:27:52 centos8 django[960]: [02/03/2020 22:27:52 -0500] [960] [THÔNG TIN] Đang nghe tại: unix:/opt/djangoproject/djangoproject.sock (960)02/03 22:27:52 centos8 django[960]: [02/03/2020 22:27:52 -0500] [960] [THÔNG TIN] Đang sử dụng worker: sync02/03 22:27:52 centos8 django[960]: [2020-03-02 22:27:52 -0500] [964] [INFO] Công nhân khởi động với pid: 96402-03 22:27:52 centos8 django[960]: [2020-03-02 22:27:52 -0500] [965] [INFO] Công nhân khởi động với pid: 96502-03 22:27:52 centos8 django[960]: [2020-03-02 22:27:52 -0500] [966] [INFO] Công nhân khởi động với pid: 966h pid: 966

Cấu hình Nginx cho Django​

Tiếp theo, bạn sẽ cần để cấu hình Nginx làm proxy ngược cho Django. Để thực hiện, hãy tạo tệp cấu hình Nginx mới bằng lệnh sau:
Mã:
nano /etc/nginx/conf.d/django.conf
Thêm các dòng sau:
Mã:
server { listen 80; server_name your-server-ip location = /favicon.ico { access_log off; log_not_found off; } location /static/ { root /opt/djangoproject; } 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:/opt/djangoproject/djangoproject.sock; }}
Lưu và đóng tệp khi bạn hoàn tất. Sau đó, hãy kiểm tra nginx xem có lỗi cú pháp nào không bằng lệnh sau:
Mã:
nginx -t
Nếu mọi thứ đều ổn, bạn sẽ nhận được kết quả sau:
Mã:
nginx: cú pháp tệp cấu hình /etc/nginx/nginx.conf là oknginx: kiểm tra tệp cấu hình /etc/nginx/nginx.conf thành công
Tiếp theo, hãy khởi động lại dịch vụ Nginx để triển khai các thay đổi:
Mã:
systemctl start nginx
Bạn cũng có thể xác minh Nginx bằng lệnh sau:
Mã:
systemctl status nginx
Bạn sẽ nhận được kết quả sau:
Mã:
? nginx.service - Máy chủ proxy ngược và HTTP nginx Đã tải: đã tải (/usr/lib/systemd/system/nginx.service; đã tắt; cài đặt trước của nhà cung cấp: đã tắt) Đang hoạt động: đang hoạt động (đang chạy) kể từ Thứ Hai 2020-03-02 22:28:13 EST; 4 phút 14 giây trước Tiến trình: 984 ExecStart=/usr/sbin/nginx (code=exited, status=0/SUCCESS) Tiến trình: 982 ExecStartPre=/usr/sbin/nginx -t (code=exited, status=0/SUCCESS) Tiến trình: 980 ExecStartPre=/usr/bin/rm -f /run/nginx.pid (code=exited, status=0/SUCCESS) PID chính: 985 (nginx) Nhiệm vụ: 3 (giới hạn: 25028) Bộ nhớ: 5,5M CGroup: /system.slice/nginx.service ??985 nginx: tiến trình chính /usr/sbin/nginx ??986 nginx: tiến trình công nhân ??987 nginx: tiến trình công nhân02/03 22:28:12 centos8 systemd[1]: Bắt đầu nginx HTTP và đảo ngược máy chủ proxy...02/03 22:28:12 centos8 nginx[982]: nginx: cú pháp tệp cấu hình /etc/nginx/nginx.conf là ok02/03 22:28:12 centos8 nginx[982]: nginx: tệp cấu hình /etc/nginx/nginx.conf đã kiểm tra thành công02/03 22:28:13 centos8 systemd[1]: Đã bắt đầu máy chủ proxy ngược và HTTP nginx.
Bây giờ bạn có thể truy cập ứng dụng Django của mình bằng URL http://your-server-ip.

Kết luận​

Trong hướng dẫn này, chúng ta đã tìm hiểu cách cài đặt Django trên CentOS 8. Chúng ta cũng đã tìm hiểu cách sử dụng Gunicorn để tạo và quản lý dịch vụ Django và cấu hình Nginx làm proxy ngược để phục vụ ứng dụng Django.
 
Back
Bên trên