OpenLiteSpeed+CyberPanel部署Django出现503/404错误如何解决?
问题根因
你遇到的404问题和index配置没有直接关系,核心是两个问题:
- OpenLiteSpeed默认会优先匹配静态首页文件(index.html/index.php),优先级高于WSGI应用上下文,所以保留index.html时会返回默认页,删除后没有静态文件匹配就直接返回404,没有转发到Django应用
- 你当前vHost配置里的PYTHONPATH参数填写错误,同时缺少Django配置文件的环境变量声明,导致WSGI进程无法正确加载Django项目
修复步骤
1. 修改重写规则,强制转发非静态请求到Django
替换你vHost配置中的rewrite段为以下内容,直接关闭自动加载.htaccess,手动配置规则优先级:
rewrite { enable 1 autoLoadHtaccess 0 # 静态文件、媒体文件直接返回,不转发到WSGI rewrite ^/static/(.*)$ /static/$1 [L] rewrite ^/media/(.*)$ /media/$1 [L] # 其余所有请求转发到WSGI应用 rewrite ^/(.*)$ /$1 [QSA,L,H=application/x-wsgi] }
你可以直接删除项目根目录下的默认index.html文件,不需要保留。
2. 修正WSGI上下文配置
首先找到你虚拟环境的Python版本,假设你用的是Python3.8,对应site-packages路径为/home/unionelectronics.in/public_html/lib/python3.8/site-packages(如果是其他版本把3.8改成对应版本号即可),替换你vHost配置中的context /段为以下内容:
context / { type App Server location /home/unionelectronics.in/public_html/KPECproject/ binPath /usr/local/lsws/fcgi-bin/lswsgi appType WSGI startupFile KPECproject/wsgi.py # 修正PYTHONPATH,改为虚拟环境依赖包路径+项目路径,不要写python二进制路径 env PYTHONPATH=/home/unionelectronics.in/public_html/lib/python3.x/site-packages:/home/unionelectronics.in/public_html/KPECproject env LS_PYTHONBIN=/home/unionelectronics.in/public_html/bin/python3 # 新增Django配置文件声明 env DJANGO_SETTINGS_MODULE=KPECproject.settings }
3. 修正项目权限
执行以下命令确保项目目录权限和vHost运行用户一致,避免WSGI进程无法读取项目文件:chown -R union9108:union9108 /home/unionelectronics.in/public_html/
4. 重启服务生效
执行以下命令重启OpenLiteSpeed服务,修改即可生效:systemctl restart lsws
内容的提问来源于stack exchange,提问作者Dark Sorrow
相关产品推荐
相关产品推荐

