Ошибка Django 403 после установки пакета pip с моим статическим файловым сервером
Итак, у меня есть сайт Django, который должен использовать как пакет pip, который представляет новые статические файлы для администратора, так и статический файловый сервер от Linode (технически он эквивалентен AWS S3 buckets из всего, что я видел, только дешевле для моих случаев использования). Это пакет pip, он в основном добавляет виджет на стороне администратора сайта Django, чтобы пользователи администратора могли вводить определенные поля из модели в виде насыщенного текста, а не простого текста.
https://github.com/django-ckeditor/django-ckeditor
А это то, что я считаю соответствующим исходным кодом к моему settings.py:
import os
from pathlib import Path
import environ
env = environ.Env()
# reading .env file
environ.Env.read_env()
# Build paths inside the project like this: BASE_DIR / 'subdir'.
BASE_DIR = Path(__file__).resolve().parent.parent.parent
# Quick-start development settings - unsuitable for production
# See https://docs.djangoproject.com/en/3.2/howto/deployment/checklist/
# SECURITY WARNING: don't run with debug turned on in production!
DEBUG = True
ALLOWED_HOSTS = []
# Application definition
INSTALLED_APPS = [
'ckeditor',
'django.contrib.admin',
'django.contrib.auth',
'django.contrib.contenttypes',
'django.contrib.sessions',
'django.contrib.messages',
'django.contrib.staticfiles',
'django.contrib.sites',
'products.apps.ProductsConfig',
# ...
]
CRISPY_TEMPLATE_PACK = 'bootstrap4'
# Static files (CSS, JavaScript, Images)
# https://docs.djangoproject.com/en/3.2/howto/static-files/
STATIC_ROOT = os.path.join(BASE_DIR, "live-static-files", "static-root")
STATIC_URL = '/static/'
STATICFILES_DIRS = [
os.path.join(BASE_DIR,'static')
]
MEDIA_ROOT = os.path.join(os.path.dirname(BASE_DIR), 'static', 'media-root')
MEDIA_URL = '/media/'
# LINODE
DEFAULT_FILE_STORAGE = 'storages.backends.s3boto3.S3Boto3Storage'
STATICFILES_STORAGE = 'storages.backends.s3boto3.S3Boto3Storage'
LINODE_BUCKET = env('LINODE_BUCKET_NAME')
LINODE_BUCKET_REGION = env('LINODE_BUCKET_REGION')
LINODE_BUCKET_ACCESS_KEY = env('LINODE_BUCKET_ACCESS_KEY')
LINODE_BUCKET_SECRET_KEY = env('LINODE_BUCKET_SECRET_KEY')
AWS_S3_ENDPOINT_URL = f'https://{LINODE_BUCKET_REGION}.linodeobjects.com'
AWS_ACCESS_KEY_ID = LINODE_BUCKET_ACCESS_KEY
AWS_SECRET_ACCESS_KEY = LINODE_BUCKET_SECRET_KEY
AWS_S3_REGION_NAME = LINODE_BUCKET_REGION
AWS_S3_USE_SSL = True
AWS_STORAGE_BUCKET_NAME = LINODE_BUCKET
Переменные окружения опущены, и я также делаю то, что в Django называется staging, где у меня есть разные версии settings.py для локального и производственного окружения. Подробнее об этом здесь: https://www.codingforentrepreneurs.com/blog/staging-django-production-development/
Я знаю, что проблема основана на разрешениях, потому что сервер возвращает 403 ошибку. Мой админ выглядит так, что нет ничего там, где должен быть виджет богатого текста из пакета ckeditor. Это просто пустой пробел, что логично, если у Django нет разрешения от S3 bucket/Linode object storage на получение статических файлов, добавленных пакетом. Я запустил collectstatic в обычном режиме, и ошибки при загрузке не было. Так что есть какие-нибудь подсказки?