Gunicorn 找不到静态文件

问题描述 投票:0回答:4

通过使用没有 nginx 的 gunicorn 来自 digitalcloud 教程 我的服务器正在运行并且在控制台上是

not found: /static/style.css

设置.py

STATIC_URL = '/static/'
STATIC_ROOT = os.path.join(BASE_DIR, 'static/')

我已经试过了

  1. 收集静电

  2. 在 urls.py 文件中做

    urlpatterns += staticfiles_urlpatterns()

  3. makemigrations + 迁移

django gunicorn django-staticfiles
4个回答
0
投票

也许 django 尝试阅读 'static//static/style.css' 但你需要这个:'style.css' ;) ?


0
投票

MEDIA_URL = '/media/'

MEDIA_ROOT = os.path.join(BASE_DIR, 'media')

STATIC_URL = '/static/'

STATIC_ROOT = os.path.join(BASE_DIR, "static/")

urlpatterns = [你的网址] + static(settings.MEDIA_URL, document_root=settings.MEDIA_ROOT)


0
投票

您是否尝试更新 Nginx 配置以解决此问题?如果不工作,你为什么不试试 Django 包Whitenoise。如果您按照说明进行操作,它很容易安装和使用。

一些简化的步骤:

  1. 收集静态 - 确保静态文件存在

     python manage.py collectstatic
    
  2. 安装 Whitenoise - 这一步取决于您如何管理软件包、更新适当的文件(例如 Pipfile 或 requirements.txt)并安装

     pip install whitenoise
    
  3. 在 settings.py 中添加以下内容

    STATICFILES_STORAGE
    - 这将压缩和缓存静态文件(来自 Whitenoise docs

     STATICFILES_STORAGE = 'whitenoise.storage.CompressedManifestStaticFilesStorage'
    
  4. 在 settings.py 中将以下内容添加到您的

    MIDDLEWARE
    - 来自 Whwitenoise 文档,wWhitenoise 包应该在
    django.middleware.security.SecurityMiddleware

    之后放置中间件
     `MIDDLEWARE = [
       'django.middleware.security.SecurityMiddleware',
       'whitenoise.middleware.WhiteNoiseMiddleware',
       ...
     ]
    
  5. 现在重新启动或重建应用程序以检查它是否适合您。

如果您在安装 Whitenoise 时遇到问题,请检查 Whitenoise

使用

staticfiles_urlpatterns
的消息: 这仅在
DEBUG=True
中的
settings.py
时有效,这意味着您不应该将它用于生产环境。
请参阅参考资料here


-1
投票

您可以在项目文件夹设置中创建,然后在其中创建设置文件,如名称: 本地.py

from my_project.settings import *
DEBUG = True
ALLOWED_HOSTS = []
STATICFILES_DIRS = [
    os.path.join(BASE_DIR, "static"),
]
STATIC_ROOT = os.path.join(BASE_DIR, 'staticfiles')
MEDIA_ROOT = os.path.join(BASE_DIR, 'media')

这在 VM 中运行,如:python manage.py runserver --settings settings.local

记得在网址中添加:

if settings.DEBUG == True:
    urlpatterns += static(settings.MEDIA_URL, document_root=settings.MEDIA_ROOT)
    urlpatterns += static(settings.STATIC_URL, document_root=settings.STATIC_ROOT)

web.py

from my_project.settings import *
DEBUG = False
ALLOWED_HOSTS = ["www.side.com", "side.com"]
STATIC_ROOT = os.path.join(BASE_DIR, 'staticfiles')
MEDIA_ROOT = os.path.join(BASE_DIR, 'media')

然后在gunicorn中只导入web.py文件项目到nginx中读取

这在 VPS 服务器上运行。

© www.soinside.com 2019 - 2024. All rights reserved.