services: php-fpm: Add 'timezone' configuration.

* gnu/services/web.scm: (<php-fpm-configuration>)[timezone]: New record field.
(default-php-fpm-config, php-fpm-shepherd-service, php-fpm-activation): Use
this.
* doc/guix.texi (Web Services): Document this.
This commit is contained in:
Oleg Pykhalov 2018-11-29 20:37:55 +03:00
parent 6106d7cae4
commit e517161d6b
No known key found for this signature in database
GPG key ID: 167F8EA5001AFA9C
2 changed files with 30 additions and 20 deletions

View file

@ -17658,6 +17658,8 @@ Determines whether php errors and warning should be sent to clients
and displayed in their browsers.
This is useful for local php development, but a security risk for public sites,
as error messages can reveal passwords and personal data.
@item @code{timezone} (default @code{#f})
Specifies @code{php_admin_value[date.timezone]} parameter.
@item @code{workers-logfile} (default @code{(string-append "/var/log/php" (version-major (package-version php)) "-fpm.www.log")})
This file will log the @code{stderr} outputs of php worker processes.
Can be set to @code{#f} to disable logging.

View file

@ -142,6 +142,7 @@ (define-module (gnu services web)
php-fpm-configuration-log-file
php-fpm-configuration-process-manager
php-fpm-configuration-display-errors
php-fpm-configuration-timezone
php-fpm-configuration-workers-log-file
php-fpm-configuration-file
@ -773,6 +774,8 @@ (define-record-type* <php-fpm-configuration> php-fpm-configuration
(default (php-fpm-dynamic-process-manager-configuration)))
(display-errors php-fpm-configuration-display-errors
(default #f))
(timezone php-fpm-configuration-timezone
(default #f))
(workers-log-file php-fpm-configuration-workers-log-file
(default (string-append "/var/log/php"
(version-major (package-version php))
@ -827,7 +830,7 @@ (define php-fpm-accounts
(shell (file-append shadow "/sbin/nologin")))))))
(define (default-php-fpm-config socket user group socket-user socket-group
pid-file log-file pm display-errors workers-log-file)
pid-file log-file pm display-errors timezone workers-log-file)
(apply mixed-text-file "php-fpm.conf"
(flatten
"[global]\n"
@ -840,6 +843,10 @@ (define (default-php-fpm-config socket user group socket-user socket-group
"listen.owner =" socket-user "\n"
"listen.group =" socket-group "\n"
(if timezone
(string-append "php_admin_value[date.timezone] = \"" timezone "\"\n")
"")
(match pm
(($ <php-fpm-dynamic-process-manager-configuration>
pm.max-children
@ -879,7 +886,8 @@ (define (default-php-fpm-config socket user group socket-user socket-group
(define php-fpm-shepherd-service
(match-lambda
(($ <php-fpm-configuration> php socket user group socket-user socket-group
pid-file log-file pm display-errors workers-log-file file)
pid-file log-file pm display-errors
timezone workers-log-file file)
(list (shepherd-service
(provision '(php-fpm))
(documentation "Run the php-fpm daemon.")
@ -890,27 +898,27 @@ (define php-fpm-shepherd-service
#$(or file
(default-php-fpm-config socket user group
socket-user socket-group pid-file log-file
pm display-errors workers-log-file)))
pm display-errors timezone workers-log-file)))
#:pid-file #$pid-file))
(stop #~(make-kill-destructor)))))))
(define php-fpm-activation
(match-lambda
(($ <php-fpm-configuration> _ _ user _ _ _ _ log-file _ _ workers-log-file _)
#~(begin
(use-modules (guix build utils))
(let* ((user (getpwnam #$user))
(touch (lambda (file-name)
(call-with-output-file file-name (const #t))))
(init-log-file
(lambda (file-name)
(when #$workers-log-file
(when (not (file-exists? file-name))
(touch file-name))
(chown file-name (passwd:uid user) (passwd:gid user))
(chmod file-name #o660)))))
(init-log-file #$log-file)
(init-log-file #$workers-log-file))))))
(define (php-fpm-activation config)
#~(begin
(use-modules (guix build utils))
(let* ((user (getpwnam #$(php-fpm-configuration-user config)))
(touch (lambda (file-name)
(call-with-output-file file-name (const #t))))
(workers-log-file
#$(php-fpm-configuration-workers-log-file config))
(init-log-file
(lambda (file-name)
(when workers-log-file
(when (not (file-exists? file-name))
(touch file-name))
(chown file-name (passwd:uid user) (passwd:gid user))
(chmod file-name #o660)))))
(init-log-file #$(php-fpm-configuration-log-file config))
(init-log-file workers-log-file))))
(define php-fpm-service-type