我在使用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
答案 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的路径。
WSGISocketPrefix / var / run / wsgi
WSGISocketPrefix ../../ var / run / wsgi
或者
WSGISocketPrefix / home / bmhair / var / run / wsgi
我可以看到你在 bmhair 用户中,所以对你来说第二就可以了。