services: postgresql: Add socket directory support.
* gnu/services/databases.scm (postgresql-config-file-socket-directory): New procedure. (<postgresql-config-file>)[socket-directory]: New field. (postgresql-config-file-compiler): Honor it. (postgresql-activation): Create the socket directory if needed. * doc/guix.texi (Database Services): Document it. * gnu/tests/guix.scm (%guix-data-service-os): Adapt it. * gnu/tests/monitoring.scm (%zabbix-os): Ditto. * gnu/tests/web.scm (patchwork-os): Ditto. Signed-off-by: Mathieu Othacehe <othacehe@gnu.org>master
parent
a38d0b0137
commit
6c0679215f
|
@ -19430,6 +19430,12 @@ configuration.
|
|||
@item @code{ident-file} (default: @code{%default-postgres-ident})
|
||||
Filename or G-expression for the user name mapping configuration.
|
||||
|
||||
@item @code{socket-directory} (default: @code{"/var/lib/postgresql"})
|
||||
Specifies the directory of the Unix-domain socket(s) on which PostgreSQL
|
||||
is to listen for connections from client applications. If set to
|
||||
@code{#false} PostgreSQL does not listen on any Unix-domain sockets, in
|
||||
which case only TCP/IP sockets can be used to connect to the server.
|
||||
|
||||
@item @code{extra-config} (default: @code{'()})
|
||||
List of additional keys and values to include in the PostgreSQL config
|
||||
file. Each entry in the list should be a list where the first element
|
||||
|
|
|
@ -43,6 +43,7 @@
|
|||
postgresql-config-file-log-destination
|
||||
postgresql-config-file-hba-file
|
||||
postgresql-config-file-ident-file
|
||||
postgresql-config-file-socket-directory
|
||||
postgresql-config-file-extra-config
|
||||
|
||||
postgresql-configuration
|
||||
|
@ -107,6 +108,8 @@ host all all ::1/128 md5"))
|
|||
(default %default-postgres-hba))
|
||||
(ident-file postgresql-config-file-ident-file
|
||||
(default %default-postgres-ident))
|
||||
(socket-directory postgresql-config-file-socket-directory
|
||||
(default "/var/run/postgresql"))
|
||||
(extra-config postgresql-config-file-extra-config
|
||||
(default '())))
|
||||
|
||||
|
@ -114,7 +117,8 @@ host all all ::1/128 md5"))
|
|||
(file <postgresql-config-file>) system target)
|
||||
(match file
|
||||
(($ <postgresql-config-file> log-destination hba-file
|
||||
ident-file extra-config)
|
||||
ident-file socket-directory
|
||||
extra-config)
|
||||
;; See: https://www.postgresql.org/docs/current/config-setting.html.
|
||||
(define (format-value value)
|
||||
(cond
|
||||
|
@ -136,6 +140,9 @@ host all all ::1/128 md5"))
|
|||
`(("log_destination" ,log-destination)
|
||||
("hba_file" ,hba-file)
|
||||
("ident_file" ,ident-file)
|
||||
,@(if socket-directory
|
||||
`(("unix_socket_directories" ,socket-directory))
|
||||
'())
|
||||
,@extra-config)))
|
||||
|
||||
(gexp->derivation
|
||||
|
@ -211,6 +218,13 @@ host all all ::1/128 md5"))
|
|||
(mkdir-p #$data-directory)
|
||||
(chown #$data-directory (passwd:uid user) (passwd:gid user))
|
||||
|
||||
;; Create the socket directory.
|
||||
(let ((socket-directory
|
||||
#$(postgresql-config-file-socket-directory config-file)))
|
||||
(when (string? socket-directory)
|
||||
(mkdir-p socket-directory)
|
||||
(chown socket-directory (passwd:uid user) (passwd:gid user))))
|
||||
|
||||
;; Drop privileges and init state directory in a new
|
||||
;; process. Wait for it to finish before proceeding.
|
||||
(match (primitive-fork)
|
||||
|
|
|
@ -164,7 +164,10 @@
|
|||
"
|
||||
local all all trust
|
||||
host all all 127.0.0.1/32 trust
|
||||
host all all ::1/128 trust"))))))
|
||||
host all all ::1/128 trust"))
|
||||
;; XXX: Remove when postgresql default socket directory is
|
||||
;; changed to /var/run/postgresql.
|
||||
(socket-directory #f)))))
|
||||
(service guix-data-service-type
|
||||
(guix-data-service-configuration
|
||||
(host "0.0.0.0")))
|
||||
|
|
|
@ -309,7 +309,12 @@ zabbix||{}
|
|||
(service dhcp-client-service-type)
|
||||
(service postgresql-service-type
|
||||
(postgresql-configuration
|
||||
(postgresql postgresql-10)))
|
||||
(postgresql postgresql-10)
|
||||
;; XXX: Remove when postgresql default socket directory is
|
||||
;; changed to /var/run/postgresql.
|
||||
(config-file
|
||||
(postgresql-config-file
|
||||
(socket-directory #f)))))
|
||||
(service zabbix-front-end-service-type
|
||||
(zabbix-front-end-configuration
|
||||
(db-password "zabbix")))
|
||||
|
|
|
@ -569,7 +569,12 @@ HTTP-PORT."
|
|||
(listen '("8080"))))))
|
||||
(service postgresql-service-type
|
||||
(postgresql-configuration
|
||||
(postgresql postgresql-10)))
|
||||
(postgresql postgresql-10)
|
||||
;; XXX: Remove when postgresql default socket directory is
|
||||
;; changed to /var/run/postgresql.
|
||||
(config-file
|
||||
(postgresql-config-file
|
||||
(socket-directory #f)))))
|
||||
(service patchwork-service-type
|
||||
(patchwork-configuration
|
||||
(patchwork patchwork)
|
||||
|
|
Reference in New Issue