无法使用Cpanel / WHM连接到Centos7中的WSGI守护程序进程mod_wsgi

时间:2017-06-25 05:25:19

标签: django apache sockets mod-wsgi whm

我在使用TreeNode和WHM的VPS中部署Django时出现问题。它似乎有效,除了Centos 7.3的套接字问题。

mod_wsgi

我读过将 WSGISocketPrefix 作为指令插入,所以我编辑了[Sun Jun 25 00:37:03.254774 2017] [wsgi:error] [pid 29756] (13)Permission denied: [client 66.249.83.220:35523] mod_wsgi (pid=29756): Unable to connect to WSGI daemon process 'brunamaiahair.com.br' on '/var/run/apache2/wsgi.721.27.1.sock' as user with uid=1004. 并放了:

httpd.conf

但我收到同样的错误。这是Apache重启后修改后的WSGISocketPrefix /var/run/apache2/wsgi 的日志:

httpd.conf

这是我的[Sat Jun 24 21:10:56.084269 2017] [mpm_prefork:notice] [pid 721] AH00163: Apache/2.4.25 (cPanel) OpenSSL/1.0.2k mod_bwlimited/1.4 mod_wsgi/4.5.7 Python/2.7 configured -- resuming normal operations 配置:

VirtualHost

2 个答案:

答案 0 :(得分:2)

请参阅:

中的socket-user选项

最近的CPanel安装似乎使用PrivilegesMode设置为SECURE,因此您需要声明谁应该拥有套接字。它应该是Apache在处理请求时更改的用户/ uid,而不是Apache用户的默认值。

例如,如果CPanel设置为在Apache下运行您的请求的用户是bmhair,则需要在Apache配置中添加WSGIDaemonProcess指令选项:

socket-user=bmhair

重新启动Apache后,检查放置套接字文件的目录,例如/var/run/apache2,并检查该套接字文件是否由用户bmhair拥有。

请注意,这将要求目录/var/run/apache2提供对其他用户的访问权限,即,不只是root或用户Apache运行您的代码。如果不是这种情况,则使用WSGISocketPrefix将套接字文件移动到用户bmhair可访问的另一个目录。通常,您甚至不需要覆盖WSGISocketPrefix,因为使用的默认位置很好。如果您出于某种原因明确设置了它,并且不允许使用默认值,那么这也可能是问题的一部分。

答案 1 :(得分:0)

路径/ var / run / apache2 bmhair无权访问该文件夹。只有root用户和已批准的用户才能访问。 所以我们需要向apache显示wsgi socket的路径。

  • 如果是VPS:
  

WSGISocketPrefix / var / run / wsgi

  • 如果您在共享主机中:
  

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

或者

  

WSGISocketPrefix / home / bmhair / var / run / wsgi

我可以看到你在 bmhair 用户中,所以对你来说第二就可以了。