«Отказано в доступе» при попытке доступа к файлам stati c после развертывания - PullRequest
0 голосов
/ 21 января 2020

Проблемы с загрузкой файлов stati c в мое приложение django после развертывания.

Я знаю, что должен указать static_ root как путь к месту, где я хочу создать stati c Папка и затем запустите python manage.py collectstati c (не уверен, если я должен сделать это, если у меня уже есть папка stati c).

Вот структура моего проекта

gradboost
-->__pycache__
-->classroom
       __init__.py
       apps.py
       decorators.py
       forms.py
       models.py
       urls.py
------>templates
------>templatetags
-->django_school
       __pycache__
       __init__.py
       settings.py
       urls.py
       wsgi.py
-->public
-->static
-->templates
-->tmp
   manage.py
   passenger_wsgi.py
public_html

Это то, что у меня сейчас есть на settings.py

# Static files (CSS, JavaScript, Images)
# https://docs.djangoproject.com/en/2.0/howto/static-files/

STATIC_URL = '/static/'
STATIC_ROOT = '/gradboost/public/static'

STATICFILES_DIRS = [
    os.path.join(BASE_DIR, 'static'),
]

Запуск collectstati c возвращает это сообщение об ошибке

PermissionError: [Errno 13 ] Отказано в доступе: '/ градиентboostmvp

Вот что я получаю при печати настроек. dict

{'_wrapped': <Settings "django_school.settings">, 'INSTALLED_APPS': ['django.contrib.auth','django.contrib.admin', 'django.contrib.contenttypes', 'django.contrib.sessions', 'django.contrib.messages', 'django.contrib.staticfiles', 'django.contrib.humanize', 'crispy_forms', 'classroom'], 'LOGGING_CONFIG': 'logging.config.dictConfig', 'LOGGING': {}, 'FORCE_SCRIPT_NAME': None, 'DEBUG': False, 'DEFAULT_TABLESPACE': '', 'DATABASES': {'default': {'ENGINE': 'django.db.backends.sqlite3', 'NAME': '/home/thegqvow/gradboost/db.sqlite3', 'ATOMIC_REQUESTS': False, 'AUTOCOMMIT': True, 'CONN_MAX_AGE': 0, 'OPTIONS': {}, 'TIME_ZONE': None, 'USER': '', 'PASSWORD': '', 'HOST': '', 'PORT': '', 'TEST': {'CHARSET': None, 'COLLATION': None, 'NAME': None, 'MIRROR': None}}}, 'ABSOLUTE_URL_OVERRIDES': {}, 'USE_I18N': True, 'LANGUAGE_CODE': 'en-us', 'LOCALE_PATHS': [], 'DEFAULT_INDEX_TABLESPACE': '', 'AUTH_USER_MODEL': 'classroom.User', 'SECRET_KEY': '**'}

1 Ответ

0 голосов
/ 21 января 2020

Ваше состояние c root настроено неправильно - я обычно настраиваю полный путь, используя BASE_DIR

# Should contain /path/to/gradboost
BASE_DIR =  os.path.dirname(os.path.dirname(os.path.dirname(os.path.abspath(__file__))))

STATIC_ROOT = os.path.join(self.BASE_DIR, 'static')
STATICFILES_DIRS = [
    os.path.join(BASE_DIR, 'public/static'),
]

Я изменил STATIC_ ROOT и дополнительные папки stati c, кажется логичнее так.

...