Gunicorn 与 Django 出现静态文件问题

Tia*_*ica 5 python django ubuntu static-files gunicorn

有一个名为 django_server 的 Django 项目。当我跑步时

\n\n
python manage.py runserver\n
Run Code Online (Sandbox Code Playgroud)\n\n

页面按预期显示

\n\n

DRF 工作正常

\n\n

然后,如果我跑

\n\n
gunicorn django_server.wsgi:application --bind 0.0.0.0:8000\n
Run Code Online (Sandbox Code Playgroud)\n\n

页面显示无样式

\n\n

Gunicorn Django 没有风格

\n\n

检查控制台,可以看到 .css 和 .js 文件均出现以下错误

\n\n
\n

由于 MIME 类型 (\xe2\x80\ x9ctext / html\xe2\x80\x9d) 不匹配 (X-Content-Type-Options:\n nosniff)。

\n
\n\n

Guniorn DRF 控制台错误\n在执行gunicorn命令的终端中,可以读取到

\n\n
NOT FOUND: /static/rest_framework/css/bootstrap.min.css\nNOT FOUND: /static/rest_framework/css/bootstrap-tweaks.min.css\n...\n
Run Code Online (Sandbox Code Playgroud)\n\n

在settings.py中我提到

\n\n
BASE_DIR = os.path.dirname(os.path.dirname(os.path.abspath(__file__)))\nSTATIC_URL = \'/static/\'\nSTATIC_ROOT = os.path.join(BASE_DIR,\'static\')\n
Run Code Online (Sandbox Code Playgroud)\n\n

这是文件夹结构

\n\n

文件夹结构

\n\n

检查静态文件夹 ( ) 中的权限ls -l,它们显示为

\n\n
drwxrwxr-x 4 tiago tiago 4096 jun 2 15:49 static\n
Run Code Online (Sandbox Code Playgroud)\n\n

检查发生问题的文件的权限并

\n\n

Ubuntu 文件权限

\n\n

也添加到settings.py

\n\n
import mimetypes\n\nmimetypes.add_type("text/css",".css",True)\nmimetypes.add_type("text/javascript",".js",True)\n
Run Code Online (Sandbox Code Playgroud)\n\n

但错误仍然存​​在。

\n

Mig*_*tos 4

你需要跑python manage.py collectstatic


我建议settings.py您使用它whitenoise来提供您的文件。


1) pip install whitenoise


2)添加STATICFILES_STORAGEsettings.py

STATICFILES_STORAGE = 'whitenoise.storage.CompressedManifestStaticFilesStorage'


3)添加到你的MIDDLEWAREsettings.py

`MIDDLEWARE = [

  'whitenoise.middleware.WhiteNoiseMiddleware',

  'django.middleware.security.SecurityMiddleware',
  ...

]
Run Code Online (Sandbox Code Playgroud)