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
在普通用户的范围内,而不是特殊的 apache
或 nobody
用户。
要修复它,您需要修改 WSGIDaemonProcess
指令配置并添加选项:
socket-user=#3708
或:
socket-user=username
其中 username
替换为具有 3708
的 uid
的用户的实际名称。
由于 Apache 的 CPanel 配置最近发生了变化,因此似乎需要添加此选项。
有时 socket-user 设置不起作用。
这可能是因为 WSGISocketPrefix 找不到路径
如果是VPS:
WSGISocketPrefix /var/run/wsgi
如果您在共享主机中:
WSGISocketPrefix ../../var/run/wsgi
谢谢
我正在使用 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
在普通用户的范围内,而不是特殊的 apache
或 nobody
用户。
要修复它,您需要修改 WSGIDaemonProcess
指令配置并添加选项:
socket-user=#3708
或:
socket-user=username
其中 username
替换为具有 3708
的 uid
的用户的实际名称。
由于 Apache 的 CPanel 配置最近发生了变化,因此似乎需要添加此选项。
有时 socket-user 设置不起作用。 这可能是因为 WSGISocketPrefix 找不到路径
如果是VPS:
WSGISocketPrefix /var/run/wsgi
如果您在共享主机中:
WSGISocketPrefix ../../var/run/wsgi
谢谢