Hôm qua, tôi đã tạo ra bài đăng này: DjangoRestFramework browsable api looks different locally vs when deployed on server?Cách phân phối tệp tĩnh tới AWS khi triển khai ứng dụng Django (`python manage.py collectstatic` không hoạt động)?
Về cơ bản, khi tôi đã làm python manage.py runserver
, điều này xuất hiện:
Nhưng sau khi tôi triển khai nó để AWS (eb deploy
), đây là những gì tôi thấy khi truy cập site:
Câu trả lời cho bài đăng ở trên đã đề cập rằng đó là do các tệp tĩnh của tôi bị thiếu. Vì vậy, tôi đã tìm kiếm cách triển khai các tệp tĩnh trên AWS và xem qua hướng dẫn này: http://docs.aws.amazon.com/elasticbeanstalk/latest/dg/create-deploy-python-django.html#python-django-update-app
phần "Tạo quản trị viên trang web", nó đề cập đến để phân phối tệp tĩnh, trước tiên tôi phải xác định STATIC_ROOT
trong settings.py
(Tôi đã làm: STATIC_ROOT = os.path.join(BASE_DIR, "ebdjangoapp/static/")
) và sau đó tôi đã làm eb deploy
. Tuy nhiên, trang web vẫn trông giống như hình ảnh thứ 2 (không có tệp tĩnh). Sau đó tôi đã thử thực hiện python manage.py collectstatic
(điều này đã tạo thư mục tĩnh với thư mục rest_framework
bên trong nó, chứa các tệp css
v.v.) và sau đó đã làm lại eb deploy
nhưng stil của trang trông giống như hình ảnh thứ 2.
Cách các tệp tĩnh vẫn không hiển thị?
Lưu ý, tôi đã tìm kiếm xung quanh và đi qua bài viết này: Django app deployment not loading static files và câu trả lời nói:
"Sau đó, bạn cần để phục vụ settings.STATIC_ROOT
tại settings.STATIC_URL
qua máy chủ web của bạn lựa chọn, rất thường nginx như một reverse proxy đằng sau của bạn Máy chủ ứng dụng Apache-mod_wsgi. "
Nhưng tôi không biết các máy chủ web (nginx, proxy ngược, Apache-mod_wsgi) hoạt động như thế nào. Tôi có một ứng dụng Django tôi chạy cục bộ với python manage.py runserver
, và tôi có AWS beanstalk đàn hồi. Tôi triển khai ứng dụng Django của mình lên AWS bằng cách thực hiện eb deploy
. Tôi cần thực hiện các bước nào để các tệp tĩnh xuất hiện khi triển khai (giả sử tôi không biết cấu hình nginx, proxy ngược, v.v.).
Bạn có đang chạy '' python manage.py collectstatic'' bất kỳ lúc nào không? –
@GrahamDumpleton Vâng, tôi đã làm điều đó ngay trước khi tôi thực hiện 'eb deploy'. (Về cơ bản, tôi đã làm nó ở địa phương, và tất cả các tập tin đã được đặt trong thư mục tĩnh, sau đó tôi triển khai nó). – user2719875