You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何在Django WSGI项目中正确配置静态文件?

Django生产环境(uWSGI)静态文件无法加载问题解决

核心问题分析

  1. 配置冲突:settings.py中STATIC_ROOT与STATICFILES_DIRS指向同一目录,导致collectstatic无法正常收集静态文件;
  2. 生产环境特性:Django的runserver会自动处理静态文件服务,但uWSGI等生产服务器不会,必须手动收集静态文件并配置服务端映射。

分步解决方案

1. 修正settings.py静态配置

打开/home/alevt/health_check/client/app/settings.py,调整静态文件相关配置:

INSTALLED_APPS = [
    # 其他应用...
    'django.contrib.staticfiles',
    'health_app',
]

STATIC_URL = '/static/'
# 注释或修改STATICFILES_DIRS,避免与STATIC_ROOT路径重复(无全局静态目录可直接删除该行)
# STATICFILES_DIRS = [os.path.join(BASE_DIR, 'static'), ]
# 指定独立的静态文件收集目录,与应用内静态目录区分开
STATIC_ROOT = os.path.join(BASE_DIR, 'collected_static')

2. 收集静态文件

进入项目client目录,激活虚拟环境后执行收集命令:

cd /home/alevt/health_check/client
source ../env/bin/activate
python manage.py collectstatic

确认执行提示后,此命令会将所有应用(如health_app/static)中的静态文件统一复制到STATIC_ROOT指定的collected_static目录。

3. 配置uWSGI映射静态文件

编辑/home/alevt/health_check/client/my.ini,添加静态文件路由规则:

[uwsgi]
http = 10.107.14.161:8000
module=app.wsgi:application
chdir = /home/alevt/health_check/client/
wsgi-file = /home/alevt/health_check/client/app/wsgi.py
virtualenv=/home/alevt/health_check/env
single-interpreter = true
enable-threads = true
master = true
# 添加静态文件映射,将前端请求的/static路径指向收集后的静态目录
static-map = /static=/home/alevt/health_check/client/collected_static

4. 重启uWSGI服务

systemctl restart myapp

额外检查:权限验证

确保uWSGI服务运行用户对collected_static目录拥有读取权限,若权限不足可执行:

chown -R <uwsgi运行用户>:<用户组> /home/alevt/health_check/client/collected_static
chmod -R 755 /home/alevt/health_check/client/collected_static

内容的提问来源于stack exchange,提问作者Alevtina

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.08.12 19:50:24