如何配置phoenix以使用带有postgresql的套接字

时间:2016-05-01 00:25:45

标签: phoenix-framework ecto

PostgreSQL支持使用unix套接字而不是TCP套接字。如何配置以下块以使用unix套接字。

# Configure your database
config :my_app, Sample.Repo,
  adapter: Ecto.Adapters.Postgres,
  database: "ecto_simple",
  username: "postgres",
  password: "postgres"

2 个答案:

答案 0 :(得分:2)

截至2018年3月,Postgrex现在支持通过套接字连接。

这可以通过提供socketsocket_dir选项来完成。这是我选择它的changelogsource code,您可以在其中查看所有选项的详尽列表。

来自源代码:

  • :socket_dir - 通过给定目录中的UNIX套接字连接到Postgres;   套接字名称是根据部件派生的。这是首选方法   用于配置套接字,它优先于主机名。如果你是   连接到Postgres惯例之外的套接字,请改用:socket;

  • :socket - 通过给定路径中的UNIX套接字连接到Postgres。

如果你在AppEngine上需要你通过只能通过代理连接工作的localhost(127.0.01)通过SQL代理进行连接,这是非常有用的(我想)。

答案 1 :(得分:0)

PostgreSQL基于性能和隐私优先选择unix套接字到TCP套接字。如果尚未提供:如果您遵循简单的文档并且有权访问,则可以在服务器上启用TCP。

客户端连接的途径是通过环境变量设置的,特别是:PGHOST。从经验来看,像libpq这样的驱动程序希望以这种方式工作 - 如果Postgrex不这样做,那将是令人震惊的。 请参阅:https://hexdocs.pm/postgrex/Postgrex.html

PGHOST中提供的值根据服务器的配置而有所不同,如文件中所示:“postgresql.conf”。

您可能需要为套接字创建目录并设置权限。以下内容应该有所帮助:http://iamvery.com/2013/06/17/postgresapp-with-unix-socket.html

要获得更精确的答案,您需要提及您的操作系统和版本;也是你的PostgreSQL版本。