【问题标题】:Why gunicorn cannot find static files?为什么 gunicorn 找不到静态文件?
【发布时间】:2018-02-10 20:09:26
【问题描述】:

运行Django开发服务器没有问题:'python manage.py runserver 9000' 但是如果使用 gunicorn,它会抱怨:

'http://innovindex.com/pubmed/static/js/jquery-3.2.1.min.js'

为什么 gunicorn 找不到本地 jquery 而 Django 可以?

设置如下:

settings.py(似乎不相关):

STATIC_URL = '/pubmed/static/'

在'/etc/nginx/sites-enabled/django'中

location /static {
   alias /home/django/innovindex/pubmed/static/;
}

我的应用看起来像这样:

/home/django/innovindex

是“manage.py”所在的位置。

非常感谢!!!

【问题讨论】:

  • 你跑collectstatic了吗?
  • 正如@The_Cthulhu_Kid 提到的,您需要运行python manage.py collectstatic 将静态文件生成到单个目录中才能正常工作。如果你做一个ls -al /home/django/innovindex/pubmed/static/,你会发现它现在是空的
  • gunicorn 为什么要搞静态文件呢? gunicorn 是一个 WSGI 服务器,它不处理静态文件。
  • 您的静态文件由 Nginx 而非 Gunicorn 提供。检查你的 nginx 配置,更好地使用 nginx 提供静态文件
  • 应该是别名 /home/django/innovindex/pubmed 而不是 /home/django/innovindex/pubmed/static

标签: python django nginx gunicorn digital-ocean


【解决方案1】:

从 Django 文档中的 Deploying static files 开始,除了设置 STATIC_ROOT 设置之外,您还必须运行 collectstatic 命令。

首先确保您的 STATIC_ROOT 设置为与您的 nginx 配置匹配的正确路径:

STATIC_ROOT = '/home/django/innovindex/pubmed/static/'

注意这是绝对路径。

然后运行:

python manage.py collectstatic

在您的项目目录中。

这会将你所有的静态文件复制到/home/django/innovindex/pubmed/static/

【讨论】:

猜你喜欢
  • 2021-06-20
  • 2021-11-16
  • 2019-02-12
  • 2016-06-01
  • 2017-11-08
  • 2021-08-26
  • 2012-12-06
  • 1970-01-01
相关资源
最近更新 更多