【问题标题】:Django Static Files Not Loading in Deployment部署中未加载 Django 静态文件
【发布时间】:2017-03-01 19:50:59
【问题描述】:

我已经做了大约 3 个小时了,我完全迷失了方向,并且在原地转圈。我正在尝试将我的静态和媒体文件部署到部署中。

我的设置文件如下所示:

DEBUG = False 

...

STATIC_ROOT = '/home/huhu/webapps/eng30_static_media/static'
MEDIA_ROOT =  '/home/huhu/webapps/eng30_static_media/media'

STATIC_URL = '/static/'
MEDIA_URL = '/media/'

我运行了 collectstatic 并且我的静态文件位于 /home/huhu/webapps/eng30_static_media/static 我仍然不知道如何处理媒体文件。我在这里想念什么?我目前没有通过管理面板显示的任何静态 js、静态 img、静态 css 或媒体上传。

【问题讨论】:

  • 没什么。一旦你通过你的网站或管理员上传了一些东西,我将创建 MEDIA_ROOT 目录并将文件保存在那里。
  • 您应该提供更多上下文,您的服务器类型是什么,部署方法是什么,Web 服务器是什么?
  • 查看djangodeployment.com/2016/10/18/… 并检查/var/log/nginx/error.log/var/log/apache2/error.log 的Web 服务器日志文件。

标签: django django-staticfiles django-deployment


【解决方案1】:

如果您使用的是 nginx,则将以下位置添加到您的服务器块

location /static/ {
    root /home/huhu/webapps/eng30_static_media;
}

因为您将DEBUG 设置为False,django 不会像在您的开发服务器上那样在生产中为您提供静态文件。这是设计使然,因为正如文档所述,静态文件应用程序效率极低并且可能不安全:https://docs.djangoproject.com/en/1.10/howto/static-files/

【讨论】:

    【解决方案2】:

    打开浏览器控制台,查看获取静态文件时返回的响应。

    您必须让您的网络服务器提供文件。 Make sure that your web server (apache/nginx) have proper permissions to access the static directory,在您的情况下为“/home/huhu/webapps/eng30_static_media/static”。 如果您仍然遇到问题,请move static files to /var/www/static directory if you are using apache 并将您的静态根目录更改为

    STATIC_ROOT = '/var/www/static'
    

    使用ls -l检查文件的权限/所有权

    ls -l
    -rw-r--r-- 1 www-data www-data 11321 Jul 28 17:08 index.html
    

    对于 apache user/group www-data/www-data 必须有权访问需要通过服务器提供的文件。如果文件归他人所有,请尝试在文件/目录上添加chown 以更改所有权。

    chown -R chown -R username:group directory
    

    如果你使用的是 nginx,那么define your static files directory in nginx conf 并尝试重新加载页面。

    【讨论】:

      猜你喜欢
      • 2017-12-06
      • 1970-01-01
      • 2015-08-22
      • 2014-06-18
      • 2021-07-31
      • 2017-02-01
      • 2019-08-31
      • 2014-11-12
      • 2021-04-03
      相关资源
      最近更新 更多