uWSGI启动报错无法加载应用,访问站点出现内部服务器错误求助
解决uWSGI无法加载os模块导致的Internal Server Error问题
从你的错误日志里能一眼看到核心问题:
Set PythonHome to /root/wxr/wxr ImportError: No module named os
os是Python的内置核心模块,连它都找不到,说明uWSGI被配置到了错误的Python环境里——你在uwsgi.ini里设置的home参数指向了项目目录,而非正确的Python安装路径(你又没用到虚拟环境),这直接导致uWSGI找不到系统Python的基础模块。
修复步骤
修正uWSGI配置
打开/etc/uwsgi/sites/wxr.ini,找到并注释掉(或直接删除)home = /root/wxr/wxr这一行:[uwsgi] project = wxr base =/root #chdir = %(base)/%(project)/%(project) #home = %(base)/%(project)/%(project) wsgi-file = /root/wxr/wxr/main/wsgi.py chdir = /root/wxr/wxr # 注释掉这行:你没有虚拟环境,不需要指定home路径 # home = /root/wxr/wxr module = main.wsgi:application master = true processes = 5 socket = /tmp/uwsgi/%(project).sock chmod-socket = 666 vacuum = true enable-threads = true no-site = true req-logger = file:/tmp/reqlog logger = file:/tmp/errlog重启uWSGI服务
执行命令让新配置生效:sudo systemctl restart uwsgi验证修复效果
再次通过IP访问站点,应该能正常加载页面了。如果还有问题,去/tmp/errlog查看最新错误日志继续排查。
额外优化建议
- 不要用root运行uWSGI:日志里反复警告
you are running uWSGI as root,这有安全隐患。建议创建普通项目用户(比如用www-data),然后在uwsgi.ini里添加uid = www-data和gid = www-data,同时确保项目目录对该用户开放权限。 - 调整Nginx访问权限:你的静态/媒体文件都在
/root目录下,Nginx的运行用户www-data可能没有读取权限。要么把项目移到/var/www这类非root目录,要么修改权限:chmod -R 755 /root/wxr chown -R root:www-data /root/wxr
内容的提问来源于stack exchange,提问作者Tsuna
相关产品推荐
相关产品推荐

