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.
Sau khi cả hai gói được cài đặt, bạn có thể tiến hành bước tiếp theo.
Sau khi cài đặt Django, bạn có thể kiểm tra phiên bản Django bằng lệnh sau:
Bạn sẽ thấy phiên bản Django trong đầu ra:
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:
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:
Bạn sẽ nhận được đầu ra sau:
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:
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:
Sau khi hoàn tất, bạn có thể tiến hành bước tiếp theo.
Thay đổi dòng sau:
Lưu và đóng tệp. Sau đó, khởi động ứng dụng Django bằng lệnh sau:
Bạn sẽ thấy đầu ra sau:
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.
Tiếp theo, cấu hình SELinux bằng lệnh sau:
Sau khi hoàn tất, bạn có thể tiến hành bước tiếp theo.
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:
Trước tiên, cài đặt Nginx bằng lệnh sau:
Tiếp theo, cài đặt Gunicorn bằng lệnh PIP như hiển thị bên dưới:
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:
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:
Thêm các dòng sau:
Lưu và đóng tệp, sau đó tải lại daemon systemd bằng lệnh sau lệnh:
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:
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:
Bạn sẽ thấy đầu ra sau:
Thêm các dòng sau:
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:
Nếu mọi thứ đều ổn, bạn sẽ nhận được kết quả sau:
Tiếp theo, hãy khởi động lại dịch vụ Nginx để triển khai các thay đổi:
Bạn cũng có thể xác minh Nginx bằng lệnh sau:
Bạn sẽ nhận được kết quả sau:
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.
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
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
Mã:
django-admin --version
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
Mã:
cd djangoproject
python3 manage.py migrate
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
Mã:
python3 manage.py createsuperuser
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.
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
Mã:
ALLOWED_HOSTS = ['your-server-ip']
Mã:
cd /opt/djangoproject
python3 manage.py runserver 0.0.0.0:8000
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.
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
Mã:
setsebool httpd_can_network_connect on -P
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
Mã:
pip3 install gunicorn
Mã:
systemctl start nginx
systemctl enable nginx
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
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
Mã:
systemctl daemon-reload
Mã:
systemctl start django
systemctl enable django
Mã:
systemctl status django
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
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; }}
Mã:
nginx -t
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
Mã:
systemctl start nginx
Mã:
systemctl status nginx
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.