【问题标题】:Deployed Django 3 project doesn't sees static files部署的 Django 3 项目看不到静态文件
【发布时间】:2020-07-06 09:44:11
【问题描述】:

部署(在服务器上)Django 3 项目没有看到静态和 css 文件(整个静态文件夹),开发机器上的本地工作完美。

我遵循的指南是this

  • 我已经用 ubuntu 18.04 建立了一个数字海洋水滴
  • 我的静态文件可以在这里找到
STATICFILES_DIRS = [os.path.join(BASE_DIR, 'mymainapp/static/')]
#STATIC_ROOT = os.path.join(BASE_DIR, 'static') # Removed based [on](https://stackoverflow.com/questions/60354519/django-base-html-extended-to-homepage-html-static-images-appear-but-home-css-d)
STATIC_URL = '/static/'
MEDIA_ROOT = os.path.join(BASE_DIR, 'mymainapp/media')
MEDIA_URL = '/media/'
  • guide 中使用 Postgres、Nginx 和 Gunicorn 的所有其他员工
  • 但静态文件(图片、SVG、css、文件未加载)
  • 我已将引导 CSS 文件下载到本地目录
  • 网站在线,如果我在 chrome 中按 F12,它会显示以下错误消息(打开 DEBUG = True 不会再提供任何错误消息或错误页面)
Failed to load resource: the server responded with a status of 404 (Not Found)
homepage03_comp.png:1 Failed to load resource: the server responded with a status of 404 (Not Found)
logo_03c_small.png:1 Failed to load resource: the server responded with a status of 404 (Not Found)
jquery.min.js:1 Failed to load resource: the server responded with a status of 404 (Not Found)
bootstrap.min.js:1 Failed to load resource: the server responded with a status of 404 (Not Found)
popper.min.js:1 Failed to load resource: the server responded with a status of 404 (Not Found)
tiktok_col.svg:1 Failed to load resource: the server responded with a status of 404 (Not Found)
instagram_col.svg:1 Failed to load resource: the server responded with a status of 404 (Not Found)
twitch_col.svg:1 Failed to load resource: the server responded with a status of 404 (Not Found)
twitter_col.svg:1 Failed to load resource: the server responded with a status of 404 (Not Found)
youtube_col.svg:1 Failed to load resource: the server responded with a status of 404 (Not Found)
facebook_col.svg:1 Failed to load resource: the server responded with a status of 404 (Not Found)
bootstrap.min.js:1 Failed to load resource: the server responded with a status of 404 (Not Found)
mobile_features_large_compressed.png:1 Failed to load resource: the server responded with a status of 404 (Not Found)
creator_platforms_comp.png:1 Failed to load resource: the server responded with a status of 404 (Not Found)
creator_sm_comp.png:1 Failed to load resource: the server responded with a status of 404 (Not Found)
reoccuring_f.svg:1 Failed to load resource: the server responded with a status of 404 (Not Found)
stripe_f.svg:1 Failed to load resource: the server responded with a status of 404 (Not Found)
customerchat.php?app_id=&attribution=setup_tool&channel=https%3A%2F%2Fstaticxx.facebook.com%2Fconnect%2Fxd_arbiter.php%3Fversion%3D46%23cb%3Df2ca0722231e688%26domain%3D159.65.234.146%26origin%3Dhttp%3A%2F%2F159.65.234.146%2Ff167133a445f9a4%26relation%3Dparent.parent&container_width=0&locale=en_US&page_id=2172253486430236&sdk=joey:1 Failed to load resource: the server responded with a status of 500 ()
paypal_f.svg:1 Failed to load resource: the server responded with a status of 404 (Not Found)
googleads1_f.svg:1 Failed to load resource: the server responded with a status of 404 (Not Found)
googlepay_f.svg:1 Failed to load resource: the server responded with a status of 404 (Not Found)
amazon_f.svg:1 Failed to load resource: the server responded with a status of 404 (Not Found)
bitcoin_f.svg:1 Failed to load resource: the server responded with a status of 404 (Not Found)
logo_02_Background.png:1 Failed to load resource: the server responded with a status of 404 (Not Found)
shirts_f.svg:1 Failed to load resource: the server responded with a status of 404 (Not Found)
message_f.svg:1 Failed to load resource: the server responded with a status of 404 (Not Found)
sopnsor2_f.svg:1 Failed to load resource: the server responded with a status of 404 (Not Found)
socialmedia_f.svg:1 Failed to load resource: the server responded with a status of 404 (Not Found)
combinedbarnad_f.svg:1 Failed to load resource: the server responded with a status of 404 (Not Found)
applepay_f.svg:1 Failed to load resource: the server responded with a status of 404 (Not Found)
check.svg:1 Failed to load resource: the server responded with a status of 404 (Not Found)
feature_description_laptop_cut.png:1 Failed to load resource: the server responded with a status of 404 (Not Found)
self_image_comp.png:1 Failed to load resource: the server responded with a status of 404 (Not Found)
reddit_col.svg:1 Failed to load resource: the server responded with a status of 404 (Not Found)
linkedin_col.svg:1 Failed to load resource: the server responded with a status of 404 (Not Found)
collie_2_comp.jpg:1 Failed to load resource: the server responded with a status of 404 (Not Found)
bootstrap.min.css:1 Failed to load resource: the server responded with a status of 404 (Not Found)
DevTools failed to parse SourceMap: chrome-extension://hnmpcagpplmpfojmgmnngilcnanddlhb/browser-polyfill.min.js.map
DevTools failed to parse SourceMap: chrome-extension://gighmmpiobklfepjocnamgkkbiglidom/include.preload.js.map
DevTools failed to parse SourceMap: chrome-extension://hnmpcagpplmpfojmgmnngilcnanddlhb/browser-polyfill.min.js.map
DevTools failed to parse SourceMap: chrome-extension://gighmmpiobklfepjocnamgkkbiglidom/include.postload.js.map
  • 在阅读指南之前我遇到了同样的错误,我只是有一个基本的拉取 git 版本并使用 python3 manage.py runserver 运行它会加载站点,但不会加载 css 和静态元素
  • 我已将基本的/media/static 文件夹放入git ignore(这些应该是在元素上收集静态夹头的地方)。原静态在myowndjango-project/myowndjango/staticmyowndjango-project/myowndjango/media
  • 我也设置了nginx如下
...
location /static/ {
        root /home/myserveruser/myowndjango-project;
    }
    location /media/ {
        root /home/myserveruser/myowndjango-project;
    }
...

我试图解决的问题

  • 查找服务器访问日志
    • 运行/var/log/nginx/access.log 结果:-bash: /var/log/nginx/access.log: Permission denied
    • 运行sudo /var/log/nginx/access.log 结果:sudo: /var/log/nginx/access.log: command not found
  • 更改 nginx 文件
...
location /static/ {
        root /home/myserveruser/myowndjango-project/myowndjango/static;
    }
    location /media/ {
        root /home/myserveruser/myowndjango-project/myowndjango/media;
    }
...
  • 运行python3 manage.py collectstatic(重新启动 nginx 和 gunicorn)仍然出现同样的错误。

【问题讨论】:

  • 查看 http 服务器访问日志以查看失败资源的实际请求 URL。网址是否正确?
  • 我该怎么做?
  • 您的 http 服务器必须在某处记录请求。找到该日志文件并查看它。
  • 运行/var/log/nginx/access.log 结果:-bash: /var/log/nginx/access.log: Permission denied 运行sudo /var/log/nginx/access.log 结果:sudo: /var/log/nginx/access.log: command not found

标签: python css django nginx django-3.0


【解决方案1】:

您在 nginx 中的静态文件位置有错误的文件夹,您应该将完整路径放入确切的静态文件/媒体文件文件夹

location /static/ {
        root /home/myserveruser/myowndjango-project/myowndjango/static;
}

【讨论】:

  • 我对此有点困惑。当我在项目上执行collect static 时,它会将myowndjango/static 和绑定到myowndjango-project/static 中,即在git 中忽略为/static。比为什么我不使用它以及为什么 tat 被忽略的文件夹?
  • 我已经按照你说的做了修改。重新启动了 nginx 和 gunicorn sudo nginx -t && sudo systemctl restart nginxsudo systemctl restart gunicorn 但我仍然遇到错误
【解决方案2】:

官方 Django 3 文档中有 3 个有用的资源可以回答这个问题

创建一个 local_settings.py 文件,该文件应在部署模式下将属性替换/添加到您的正常设置文件。

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

根据你的情况进口

【讨论】:

    猜你喜欢
    • 2021-09-12
    • 2017-02-01
    • 1970-01-01
    • 2022-07-22
    • 2016-04-16
    • 2016-03-11
    • 2022-11-01
    • 2013-05-21
    • 2014-05-26
    相关资源
    最近更新 更多