Tôi đã phát triển một ứng dụng web với Django và tôi đang cố xuất bản ứng dụng đó trong một máy ảo được tạo bằng Azure. Để làm điều đó, tôi đang sử dụng ngăn xếp phần mềm sau:
- Ubuntu (20.04)
- Django (3.0.7)
- Virtualenv (20.0.17)
- Gunicorn (20.1.0)
- Nginx (1.18.0)
Để triển khai ứng dụng, tôi đã làm theo hướng dẫn đó: https://www.digitalocean.com/community/tutorials/how-to-set-up-django-with-postgres-nginx-and-gunicorn-on-ubuntu-16-04
Các thư mục dự án django của tôi được tổ chức như sau:
Trang Chủ/
ââ useradmin/
â ââ myproject/
â â ââ dự án/
â â â ââ settings.py
â â â ââ urls.py
â â â ââ wsgi.py
â â â ââ...
â â ââ tĩnh/
â â ââ mẫu/
â â ââ venv/
â â ââ manage.py
â â ââ ...
Đây là của tôi /etc/systemd/system/gunicorn.service
:
[Đơn vị]
Mô tả = daemon gunicorn
Sau=mạng.mục tiêu
[Dịch vụ]
Người dùng = quản trị viên người dùng
Nhóm=www-dữ liệu
WorkingDirectory=/home/useradmin/myproject
ExecStart=/home/useradmin/myproject/venv/bin/gunicorn --access-logfile - --workers 3 --bind unix:/home/useradmin/myproject/myproject.sock proj.wsgi:application
[Cài đặt]
WantedBy=multi-user.target
Đây là của tôi /etc/nginx/sites-available/myproject
:
người phục vụ {
nghe 80;
server_name mydomain.com;
vị trí = /favicon.ico { truy cập_đăng xuất; log_not_found tắt; }
vị trí /tĩnh/ {
gốc /home/useradmin/myproject;
}
địa điểm / {
bao gồm proxy_params;
proxy_pass http://unix:/home/useradmin/myproject/myproject.sock;
}
}
Khi tôi điều hướng đến mydomain.com, tôi gặp lỗi 502 Bad Gateway. Nếu tôi kiểm tra nhật ký Nginx bằng cách chạy "sudo tail -F /var/log/nginx/error.log", tôi thấy lỗi sau:
2022/03/16 08:27:33 [crit] 64480#64480: *3 connect() to unix:/home/useradmin/myproject/myproject.sock không thành công (2: Không có tệp hoặc thư mục như vậy) trong khi kết nối với thượng nguồn, máy khách: XX.XX.XX.XX, máy chủ: mydomain.com, yêu cầu: "GET / HTTP/1.1", ngược dòng: "http://unix:/home/useradmin/myproject/myproject.sock:/", máy chủ lưu trữ : "mydomain.com"
Để tạo tệp sock, tôi chạy các hướng dẫn sau nhưng không có gì thay đổi:
systemctl daemon-tải lại
systemctl khởi động lại gunicorn.service
CẬP NHẬT 1:
Đang cố gắng thực hiện hướng dẫn ls -la /home/useradmin/myproject/myproject.sock
tôi nhận được lỗi ls: không thể truy cập '/home/useradmin/myproject/myproject.sock': Không có tệp hoặc thư mục như vậy