【问题标题】:Django Statics not accessible (Digital Ocean) [duplicate]Django Static 无法访问(Digitalocean)[重复]
【发布时间】:2019-05-02 10:35:52
【问题描述】:

我在 Digital Ocean 液滴上构建了一个 Django 站点,但静态文件似乎无法访问。

四处寻找解决方案我认为问题出在服务器设置 (Nginx) 上,但由于这对我来说更新,我想在搞砸之前验证这一点。

CSS 位于django_project/static/css 中,无法使用浏览器访问此文件夹:

IPadress/static/css/style.css 在 CSS 上提供“404 Not Found”错误

编辑

我刚刚发现了 Nginx 错误日志,其中指出正在寻找 django_project/django_project/static/css 中不存在的静态文件。我认为这应该在 settings.py 中更正。我说的对吗?

Settings.py 静态:

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

【问题讨论】:

  • 请分享静态文件设置,nginx设置。
  • @IvanStarostin 这是 nginx.conf 吗? (对不起,这对我来说是全新的......)。如果是这样的话;这是否意味着整个 http 部分?
  • 在 nginx conf 中是否定义了/static/ url 的位置?你在 django 错误日志中看到这个 404 了吗?
  • @IvanStarostin 就是这样!我找到了 nginx 的 django 设置,其中提到了双目录。感谢大家的支持!

标签: django nginx digital-ocean


【解决方案1】:

这是您第一次尝试将网站部署到生产环境吗?

如果您使用“python manage.py runserver”在本地运行站点,那么只要文件路径匹配,您的设置看起来就可以,但是如果您尝试在生产环境中提供静态文件,则需要以不同的方式提供它们,我个人使用白噪声从网络服务器本身执行此操作。

文档:https://djangobook.com/serving-files-production/

【讨论】:

    【解决方案2】:

    网络服务器将查看 /static/ 位置,您需要提供虚拟路径 /static/ 到物理路径的映射,并授予所有人访问权限。

    以下设置需要放入您的网络服务器配置文件。将“/opt/tutor/static/”替换为 os.path.join(BASE_DIR, 'static') 的值。

    Alias /static /opt/tutor/static/
    Alias /media /opt/tutor/media/
    <Directory /opt/tutor/static/>
        Require all granted
    </Directory>
    <Directory /opt/tutor/media/>
        Require all granted
    </Directory>
    

    将上面的东西放在块内。如果您不需要 IPAddress/media/ url,请删除媒体设置。

    【讨论】:

      猜你喜欢
      • 2022-01-26
      • 2016-09-01
      • 2022-08-23
      • 2012-04-04
      • 2016-11-25
      • 2017-03-14
      • 2020-02-28
      • 2013-09-01
      • 2019-08-10
      相关资源
      最近更新 更多