【发布时间】:2014-05-20 10:07:45
【问题描述】:
我在 centos 系统上安装了 Postgres、mod_wsgi 和 python3.5。我已经测试了连接,它在交互式 Python shell 和开发应用程序中都能正常工作(它是一个 Pyramid 应用程序,因此它是开发服务器)。
我收到以下错误:
postgresql.exceptions.ClientCannotConnectError: could not establish connection to server
CODE: 08001
LOCATION: CLIENT
CONNECTION: [failed]
failures[0]:
socket('127.0.0.1', 5432)
Traceback (most recent call last):
File "/var/www/wsgi/lib/python3.3/site-packages/postgresql/protocol/client3.py", line 136, in connect
self.socket = self.socket_factory(timeout = timeout)
File "/var/www/wsgi/lib/python3.3/site-packages/postgresql/python/socket.py", line 64, in __call__
s.connect(self.socket_connect)
PermissionError: [Errno 13] Permission denied
The above exception was the direct cause of the following exception:
postgresql.exceptions.ConnectionRejectionError: Permission denied
CODE: 08004
LOCATION: CLIENT
CONNECTOR: [Host] pq://username:***@localhost:5432/db_name
category: None
DRIVER: postgresql.driver.pq3.Driver
我花了一些时间查看 mod_wsgi 文档,发现有一个possible issue with sockets。但是,我已经实现了该更改(并且来自 apache 的相应错误消失了)。
我的假设是它仍然是一个套接字错误,因为连接字符串在同一个 Python 安装的其他地方甚至在开发设置中都可以正常工作。
有人可以从这里指出正确的方向吗?
【问题讨论】:
-
所以它适用于开发配置,但不适用于生产配置?
-
这些可能很明显:两个实例是否以同一用户身份运行?锁定/套接字位置的权限是您期望的以及它们应该是什么?作为快速测试(如果安全),将这些目录的权限更改为完全访问。还要确保在开发模式下使用预期的所有者/组和权限创建 UNIX 套接字。
-
@daveydave400 两个配置中的连接字符串相同,不同之处在于脚本的调用方式。我做了一个“chmod -R 777 wsgi”,恐怕我得到了一个相同的错误。
标签: python postgresql mod-wsgi pyramid