Tôi đang sử dụng Máy nén Django để quản lý các tệp/cà phê của tôi và nó rất tuyệt để phát triển, nhưng tôi đã có một số vấn đề để làm cho nó hoạt động để triển khai sản xuất của tôi.Làm thế nào để sử dụng django-máy nén với apache?
Ý tưởng của tôi là có apache để lưu trữ các tệp tĩnh, có thể trong máy chủ khác. Tôi đang đặt COMPRESS_OFFLINE = True
trên tệp settings.py
.
Sau đó, tôi làm như sau
python manage.py compress
- Đây populates thư mục trong thư mụcCACHE
static
của tôi, nơi tất cả các file tĩnh sẽ được thu thập.python manage.py collectstatic
- Điều này thu thập các tệp tĩnh từ tất cả các ứng dụng trong dự án của tôi (một số trong đó không sử dụng máy nén) vào thư mụcstatic
của tôi.- Sao chép thư mục
static
ở đâu đó để được lưu trữ bằng apache. Và thiết lập apache để phục vụ các tập tin. - Sửa đổi biến số
static_url
trong tệpsettings.py
để trỏ đến máy chủ tĩnh.
Nếu tôi mở bất kỳ trang, tôi nhận được lỗi sau trên máy chủ của tôi, điều này dường như chỉ xảy ra khi tôi có DEBUG = False
và COMPRESS_OFFLINE = True
trên settings.py
tập tin của tôi:
TemplateSyntaxError: Caught OfflineGenerationError while rendering: You have offline compression enabled but key "777ba26736d046ab043dc151e7e9a060" is missing from offline manifest. You may need to run "python manage.py compress".
Khi tôi kiểm tra thư mục static/CACHE
, tôi xác nhận những gì các lỗi nói, đây là manifest.json
tập tin của tôi:
{
"6189b8598993d1cbdbd35d4dfd1a6711": "<script type=\"text/javascript\" src=\"http://192.168.1.123/CACHE/js/2f6ca6616bd6.js\"></script>",
"5c66dbed0e5b766c6e32773cd8585f3c": "<link rel=\"stylesheet\" href=\"http://192.168.1.123/CACHE/css/154d95903951.css\" type=\"text/css\" />"
}
Nếu tôi xóa các thư mục CACHE và chạy lại 012.343., tôi nhận được một bộ ID mới trên cả thông báo lỗi và tệp kê khai, nhưng ID trên lỗi vẫn bị thiếu trên tệp kê khai.
Vì vậy, tôi đoán có hai câu hỏi ở đây. Tại sao nó không làm việc? Cách thích hợp để đạt được điều này là gì?
Cảm ơn.
Bạn có trình tìm kiếm của máy nén trong 'STATICFILES_FINDERS' trong cài đặt không? – ilvar
Vui lòng hiển thị mã mẫu của bạn nơi bạn sử dụng thẻ '{% compress%}', điều này sẽ giúp gỡ lỗi 'TemplateSyntaxError' :) – vdboor