Azure Linux免费F1层部署Django后静态文件缺失、MIME类型错误
Azure Linux实例部署Django静态文件缺失解决方案
- 检查Django settings.py 配置项
确认以下参数配置正确:
生产环境# 静态文件访问路由 STATIC_URL = '/static/' # 生产环境收集静态文件的目标目录 STATIC_ROOT = os.path.join(BASE_DIR, 'staticfiles') # 自定义静态文件存放目录(如果有单独的static目录存业务静态资源需要加这行) STATICFILES_DIRS = [os.path.join(BASE_DIR, 'static')]DEBUG = False时必须配置STATIC_ROOT,否则Django不会处理admin等自带静态文件的映射。 - 执行静态文件收集命令
部署完成后可通过SSH连接到Azure实例,执行命令:python manage.py collectstatic --noinput
该命令会将admin自带静态文件、业务自定义静态文件全部汇总到STATIC_ROOT指定的目录下。也可以将该命令加入部署脚本,实现部署时自动执行。 - 配置WhiteNoise处理静态文件
Azure Linux Python实例默认使用Gunicorn作为应用服务器,本身不支持处理静态资源,推荐通过WhiteNoise实现静态文件服务:- 安装依赖:
pip install whitenoise,并将whitenoise加入requirements.txt - 在settings.py的MIDDLEWARE列表中添加中间件,放在
django.middleware.security.SecurityMiddleware之后:'whitenoise.middleware.WhiteNoiseMiddleware' - 新增配置项指定静态文件存储方式:
STATICFILES_STORAGE = 'whitenoise.storage.CompressedManifestStaticFilesStorage'
重新部署后即可生效。
- 安装依赖:
- 检查部署文件完整性
确认.gitignore文件中没有屏蔽staticfiles目录,或者部署流程中已经自动执行collectstatic生成该目录,不会因为目录被忽略导致静态文件缺失。 - 检查目录权限
进入实例SSH终端,查看staticfiles目录权限是否为可读,可执行命令修改权限:chmod -R 755 staticfiles
内容的提问来源于stack exchange,提问作者Vitaliy Terziev
相关产品推荐
相关产品推荐

