Django网站部署Apache后图片无法显示(404错误)求助
Django部署Apache后图片无法显示(404错误)求助
错误截图:
我用Django框架搭建的网站部署到Apache服务器后,图片无法显示且报404错误(查看截图)。已确认路径正确,csv等其他文件可正常获取,本地服务器运行时图片显示完全正常,恳请帮忙解决!
我尝试修改路径指定方式,但问题仍未解决。
代码片段
settings.py
# Static files (CSS, JavaScript, Images) # https://docs.djangoproject.com/en/4.2/howto/static-files/ STATIC_URL = '/static/' STATICFILES_DIRS = [ os.path.join(BASE_DIR, 'static/') ] STATIC_ROOT = os.path.join(BASE_DIR, 'staticfiles')
metrics.html
{% extends "base.html" %} {% block content %} {% load static %} .... <img src="{% static "images/metrics.jpg" %}" alt="metrics" height="250px" width="500px" />
解决步骤:
执行静态文件收集命令
生产环境部署必须运行python manage.py collectstatic,把static目录下的所有文件(包括图片)复制到STATIC_ROOT指定的staticfiles文件夹。本地开发时Django自动处理静态文件,但Apache依赖这个收集后的目录读取资源。配置Apache静态文件映射
确保Apache配置文件中添加了/static/路径的别名映射,指向STATIC_ROOT的绝对路径:Alias /static/ /你的项目绝对路径/staticfiles/ <Directory /你的项目绝对路径/staticfiles/> Require all granted </Directory>注意路径结尾的斜杠要对应,避免匹配错误。
检查文件权限
Apache进程需要读取staticfiles目录及文件的权限,执行以下命令调整:chmod -R 755 /你的项目绝对路径/staticfiles/ chown -R www-data:www-data /你的项目绝对路径/staticfiles/(注:CentOS系统的Apache运行用户为
apache,需替换对应用户名)验证文件存在性
手动检查staticfiles/images/目录下是否存在metrics.jpg,同时注意Linux服务器区分文件名大小写,避免本地Windows开发时的大小写差异导致匹配失败。
内容的提问来源于stack exchange,提问作者Ravi Kumar Reddy
相关产品推荐
相关产品推荐

