mod_wsgi 无法连接 WSGI 守护进程

mod_wsgi unable to connect WSGI daemon process

我正在使用 Easy apache 4、mod_wsgi 和 Python 3.5。当我在服务器中调用 Django 项目时,出现以下错误:

(13)Permission denied: mod_wsgi (pid=24223): Unable to connect to WSGI daemon
process 'user123' on '/var/run/wsgi.8442.6.7.sock' as user with uid=3708.

您的 Apache 安装可能设置为具有 SECURE 特权模式的 运行。这意味着 Apache 子工作进程在处理请求之前被分叉并且特权被删除,在这种情况下只是试图将请求代理到 mod_wsgi 守护进程。这样做的结果是它无法连接到守护进程的套接字,因为它在特权被删除之前设置了所有权以匹配原始 Apache 子工作进程。

这是显而易见的,因为错误消息有 uid 在普通用户的范围内,而不是特殊的 apachenobody 用户。

要修复它,您需要修改 WSGIDaemonProcess 指令配置并添加选项:

socket-user=#3708

或:

socket-user=username

其中 username 替换为具有 3708uid 的用户的实际名称。

由于 Apache 的 CPanel 配置最近发生了变化,因此似乎需要添加此选项。

有时 socket-user 设置不起作用。 这可能是因为 WSGISocketPrefix 找不到路径

  • 如果是VPS:

    WSGISocketPrefix /var/run/wsgi

  • 如果您在共享主机中:

    WSGISocketPrefix ../../var/run/wsgi

谢谢