Bước 1: Đưa code của bạn lên vps Ubuntu
1. Tạo thư mục lưu dự án django
mkdir /opt/aznetproject
cd /opt/aznetproject
aznetproject sẽ là thư mục chứa môi trường ảo và dự án của bạn.
2. Tạo và kích hoạt môi trường ảo (python3.10)
python3.10 -m venv .venv
source .venv/bin/activate
3. Cài đặt django trong môi trường ảo
pip install django
4. Lấy code từ github
Cài đặt git nếu chưa có
sudo apt-get install git
Lấy code từ git
git clone <your-repo-url>
Nếu repo của bạn là riêng tư, bạn sẽ cần cung cấp username và mã xác thực của github
5. Cài đặt các gói
cd
đến thư mục dự án, ví dụ: aznet
- nơi chứa manage.py
, db.sqlite3
…
cd /opt/aznetproject/aznet
pip install -r requirements.txt
6. chạy kiểm tra
python3 manage.py runserver 0.0.0.0:8000
Bước 2: Cài đặt gunicorn
pip install gunicorn
Chạy kiểm tra:
gunicorn --bind 0.0.0.0:8000 aznet.wsgi:application
Lưu ý:
aznet chính là <project_name>
mà bạn đã tạo lúc đầu bằng lệnhdjango-admin startproject <project_name>
Bạn sẽ thấy
[2022-02-08 15:20:17 +0000] [12789] [INFO] Starting gunicorn 20.1.0
[2022-02-08 15:20:17 +0000] [12789] [INFO] Listening at: http://0.0.0.0:8000 (12789)
[2022-02-08 15:20:17 +0000] [12789] [INFO] Using worker: sync
[2022-02-08 15:20:17 +0000] [12791] [INFO] Booting worker with pid: 12791
Có nghĩa là bạn đã liên kết thành công gunicorn của mình để chạy ứng dụng Django và ứng dụng Django của bạn hiện đã sẵn sàng để được liên kết với một máy chủ web (trong trường hợp của chúng tôi là NGINX). Điều này đánh dấu sự hoàn thành của Giai đoạn 1. Để kiểm tra thành công Giai đoạn 1, bạn có thể nhập IP có cổng :8000
của mình và xem ứng dụng của bạn chạy.
Bước 3: Thiết lập supervisor
để Gunicorn tự động khởi động lại ứng dụng Django của bạn khi khởi động lại và sau lần khởi động đầu tiên.
1. Cài đặt supervisor
sudo apt-get install -y supervisor
2. Tạo file cấu hình
cd /etc/supervisor/conf.d/
sudo touch gunicorn.conf
Thêm nội dung sau vào tệp cấu hình vừa tạo, thay đổi cho phù hợp với thôn tin của bạn
Mở trình soạn thảo
sudo nano gunicorn.conf
Nhập nội dung:
[program:gunicorn]
directory = /opt/aznetproject/aznet ## <path to manage.py>
command = /opt/aznetproject/.venv/bin/gunicorn --workers 3 --bind unix:/opt/aznetproject/aznet.sock aznet.wsgi:application
autostart = true
autorestart = true
stderr_logfile = /var/log/gunicorn/gunicorn.err.log
stdout_logfile = /var/log/gunicorn/gunicorn.out.log
[group:guni]
programs:gunicorn
Lưu ý: Các hướng dẫn trên internet có thể sẽ hướng dẫn bạn đặt tệp
.sock
bên trong thư mục dự án, cùng thư mục với tệp manage.py. Nếu làm vậy tệp.sock
có thể bị xóa nếu bạngit pull
.
Vì vậy, hãy đặt tệp.sock
cùng cấp với thư mục dự án.
Tạo thư mục nhật ký
sudo mkdir /var/log/gunicorn,
3. Đọc file cấu hình và cập nhật, chạy lần lượt các lệnh sau:
sudo supervisorctl reread
Nếu bạn thấy guni:available
ở đây, điều đó có nghĩa là Supervisor đã sẵn sàng và bạn đã làm đúng mọi thứ cho đến thời điểm hiện tại.
sudo supervisorctl update
Nếu bạn thấy guni: added process group
đây là một điểm đánh dấu khác nghĩa là bạn đã thực hiện đúng các bước.
sudo supervisorctl status
Nếu bạn thấy guni:gunicorn RUNNING
đây là chỉ báo thứ ba và cuối cùng cho thấy gunicorn của bạn đã được thiết lập đúng cách.
Sau tất cả các bước này, nó được xác nhận rằng gunicorn của bạn hiện đang giao tiếp hai chiều với một tệp aznet.sock
được tạo tự động bên trong thư mục aznetproject
.
Bước 4: Liên kết Gunicorn với Nginx
Đảm bảo bạn đã cài đặt nginx, hoặc có thể cài đặt bằng lệnh: sudo apt-get install -y nginx
Khi đã có nginx , chạy các lện sau để tạo cấu hình web với nginx
cd /etc/nginx/sites-available
sudo touch aznet.conf
sudo nano aznet.conf
Trình chỉnh sửa mở ra, nhập nội dung sau
server {
listen 80;
server_name aznet.io ;
#server_name 192.168.0.1 yourdomain.com your_alternate_domain.com; this is how you can add multiple hosts. Do not add any comma just separate it with spaces
location / {
include proxy_params;
proxy_pass http://unix:/opt/aznetproject/aznet.sock;
}
}
Kiểm tra cú pháp file trên:
sudo nginx -t
Đảm bảo không có lỗi đánh máy cho lện dưới đây, nó tạo một liên kết tượng trưng
sudo ln aznet.conf /etc/nginx/sites-enabled/
Kiểm tra và khởi động lại nginx
sudo nginx -t && nginx -s reload
Bây giờ bạn đã liên kết Nginx của mình với gunicorn trên aznet.sock, vì vậy hãy truy cập trình duyệt của bạn và nhập địa chỉ web hoặc ip và bạn sẽ thấy ứng dụng của mình hoạt động.
Nếu bạn có thể thấy trang web của mình mà không có bất kỳ CSS nào (vỡ giao diện) thì bạn đã làm theo mọi thứ đúng cách. Ta sẽ đọc bài tiếp theo để biết cách cung cấp tệp tĩnh Django trên nginx