Django создает статическую папку

При загрузке моих статиков с помощью `collectstatic' на Google Cloud Storage, он загружает файлы в основной корень ведра, а не в папку "/static/", поэтому веб на продакшене не может прочитать статику. Как я могу создать папку "/static/" и загрузить туда файлы на GCS?

Вот мои настройки:

ALLOWED_HOSTS = ["*"]
DEBUG = True

INSTALLED_APPS += ["django_extensions", ]

DEFAULT_FILE_STORAGE = "storages.backends.gcloud.GoogleCloudStorage"
STATICFILES_STORAGE = "storages.backends.gcloud.GoogleCloudStorage"

GS_BUCKET_NAME = "static-bucket"

GS_MEDIA_BUCKET_NAME = "bucket-name"

Требование для загрузки статических файлов GCS

Перейдите в GCP: Cloud Storage (GCS) и нажмите на CREATE BUCKET (заполняйте по мере необходимости)

После создания вы можете сделать его публичным, если хотите, чтобы он действовал как CDN вашего сайта (хранение статических файлов, таких как css, изображения, видео и т.д.)

Перейдите к только что созданному ведру Перейдите в раздел Разрешения, а затем нажмите Добавить членов Добавьте нового члена "allUsers" с ролью "Cloud Storage - Storage Object Viewer". Ссылка: https://cloud.google.com/storage/docs/quickstart-console. Основные ссылки:

https://django-storages.readthedocs.io/en/latest/backends/gcloud.html https://medium.com/@umeshsaruk/upload-to-google-cloud-storage-using-django-storages-72ddec2f0d05. Необходимые шаги

Перейдите в GCP: Cloud Storage (GCS) и нажмите на CREATE BUCKET (заполняйте по мере необходимости)

После создания вы можете сделать его публичным, если хотите, чтобы он действовал как CDN вашего сайта (хранение статических файлов, таких как css, изображения, видео и т.д.)

Перейдите к только что созданному ведру Перейдите в раздел Разрешения, а затем нажмите Добавить членов Добавьте нового члена "allUsers" с ролью "Cloud Storage - Storage Object Viewer". Ссылка: https://cloud.google.com/storage/docs/quickstart-console

Шаг первый 1 (проще и быстрее, но требует постоянного ручного копирования файлов в GCS)

Настройте параметры статических файлов вашего Django в файле settings.py

STATICFILES_DIRS = [
    os.path.join(BASE_DIR, 'templates'),
    os.path.join(BASE_DIR, "yourapp1", "templates"),
    os.path.join(BASE_DIR, "yourapp2", "static"),
    os.path.join(BASE_DIR, "watever"),
    "/home/me/Music/TaylorSwift/",
    "/home/me/Videos/notNsfw/",
]

STATIC_ROOT = "/var/www/mywebsite/"

STATIC_URL = "https://storage.googleapis.com/<your_bucket_name>/"

Шаг 2 Если у вас есть HTML файлы или CSS файлы, которые обращаются к другим статическим файлам, убедитесь, что они ссылаются на эти другие статические файлы с помощью обновленной настройки STATIC_URL.

В вашем доме.html

{% load static %}
<link rel="stylesheet" type="text/css" href="{% static 'home/css/home.css' %}">

Затем в файле home.css

background-image: url("../assets/img/myHandsomeImage.jpg");

Вы можете прочитать ссылку, которую я предоставил.

https://django-storages.readthedocs.io/en/latest/backends/gcloud.html. https://medium.com/@umeshsaruk/upload-to-google-cloud-storage-using-django-storages-72ddec2f0d05

You home CSS link now will translate to : 
https://storage.googleapis.com/[your_bucket_name]/home/css/home.css

При желании вы можете просто указать абсолютный путь (полный URL), но такая конфигурация всегда будет требовать обновления используемых URL вручную, например, если вы перешли в режим разработки и хотите просто получить доступ к статическим файлам локально, а не из GCS. Это скопирует все файлы из каждого каталога в STATICFILES_DIRS в каталог STATIC_ROOT.

python3 manage.py collectstatic

# or if your STATIC_ROOT folder requires permissions to write to it then:
# sudo python3 manage.py collectstatic

Хорошо, после поиска в stackoverflow я вижу, что эта проблема была решена, и я не хочу, чтобы это было дубликатом. Итак, вот ссылка на решение в stackoverflow:Serve Static files from Google Cloud Storage Bucket (for Django App hosted on GCE) .

Вернуться на верх