部署后尝试访问静态文件时“权限被拒绝”

时间:2020-01-21 16:09:50

标签: python django cpanel

部署后在django应用程序中加载静态文件时遇到问题。

我知道我应该将static_root设置为要创建静态文件夹的路径,然后运行python manage.py collectstatic(不确定是否已经有一个静态文件夹,是否必须这样做)。 / p>

这是我的项目的结构

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'),
]

运行collectstatic返回此错误消息

PermissionError:[Errno 13]权限被拒绝:'/ gradientboostmvp'

这是我打印设置时得到的。 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 :(得分:0)

您的静态根目录配置错误-我通常使用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和其他静态文件夹,这样看起来更合乎逻辑。