cPanel部署Django后静态文件加载404报错,找不到wsgi-loader.py求助
cPanel部署Django静态文件404问题解决方案
日志告警说明
你看到的wsgi-loader.py相关DeprecationWarning是cPanel内置Passenger服务的Python加载器兼容性警告,该警告不会导致静态文件404,也不影响Django核心功能运行。
你无法找到该文件属于正常情况:它归属cPanel预装的ea-ruby24系统软件包,路径为系统级受限路径,普通cPanel账号没有读取权限,无需在该文件上投入排查精力。
静态文件404修复步骤
- 第一步:配置Web服务器静态文件映射规则
cPanel + Passenger部署场景下,默认所有请求都会转发给Django WSGI进程,即使静态文件存放在public_html目录下也会被拦截,不会直接由Apache处理。你需要在应用根目录的.htaccess文件最顶部添加如下规则,注意替换路径中的占位符为你自己的cPanel账号用户名、以及实际的静态目录名:
# 静态文件直接由Apache处理,不转发给Django Alias /static/ /home/你的cPanel用户名/public_html/static/ <Directory /home/你的cPanel用户名/public_html/static/> Require all granted </Directory>
后续其他Passenger相关的配置规则放在上述规则之后即可。
- 第二步:校验Django静态配置匹配性
确认settings.py中的静态配置和上述路径完全一致:
STATIC_URL = '/static/' # 路径必须和Alias中的STATIC_ROOT路径完全匹配,注意大小写 STATIC_ROOT = os.path.join(BASE_DIR, 'public_html', 'static')
重新执行python manage.py collectstatic确保静态文件都同步到目标目录。
- 第三步:检查静态文件权限
确保public_html/static目录权限为755,目录内的静态文件权限为644,文件归属为你的cPanel账号用户,不要使用root权限上传文件导致Web服务无读取权限。 - 第四步:重启应用生效
在Django应用根目录创建tmp目录,在目录内新建空文件restart.txt,Passenger检测到该文件更新会自动重启应用,无需重启服务器。
内容的提问来源于stack exchange,提问作者Luck Chhipa
相关产品推荐
相关产品推荐

