mirror of
https://git.in.rschanz.org/ryan77627/guix.git
synced 2025-01-13 14:40:21 -05:00
services: nginx: Get the Shepherd to respawn NGINX.
* gnu/services/web.scm (nginx-shepherd-service): Change 'start' (that is, all actions that don't send a signal to the master process) to return the PID. Wait until the PID file is created and contains an integer because it might be created after the parent process exits.
This commit is contained in:
parent
0b6678cd44
commit
9fc2922794
1 changed files with 15 additions and 1 deletions
|
@ -599,19 +599,33 @@ (define (nginx-shepherd-service config)
|
||||||
<nginx-configuration>
|
<nginx-configuration>
|
||||||
(nginx file run-directory)
|
(nginx file run-directory)
|
||||||
(let* ((nginx-binary (file-append nginx "/sbin/nginx"))
|
(let* ((nginx-binary (file-append nginx "/sbin/nginx"))
|
||||||
|
(pid-file (in-vicinity run-directory "pid"))
|
||||||
(nginx-action
|
(nginx-action
|
||||||
(lambda args
|
(lambda args
|
||||||
#~(lambda _
|
#~(lambda _
|
||||||
(invoke #$nginx-binary "-c"
|
(invoke #$nginx-binary "-c"
|
||||||
#$(or file
|
#$(or file
|
||||||
(default-nginx-config config))
|
(default-nginx-config config))
|
||||||
#$@args)))))
|
#$@args)
|
||||||
|
(match '#$args
|
||||||
|
(("-s" . _) #t)
|
||||||
|
(_
|
||||||
|
(let loop ((duration 0))
|
||||||
|
;; https://bugs.launchpad.net/ubuntu/+source/nginx/+bug/1581864/comments/7
|
||||||
|
(sleep duration)
|
||||||
|
(if (file-exists? #$pid-file)
|
||||||
|
(let ((pid (call-with-input-file #$pid-file read)))
|
||||||
|
;; it could be #<eof>
|
||||||
|
(if (integer? pid) pid (loop 1)))
|
||||||
|
(loop 1)))))))))
|
||||||
|
|
||||||
;; TODO: Add 'reload' action.
|
;; TODO: Add 'reload' action.
|
||||||
(list (shepherd-service
|
(list (shepherd-service
|
||||||
(provision '(nginx))
|
(provision '(nginx))
|
||||||
(documentation "Run the nginx daemon.")
|
(documentation "Run the nginx daemon.")
|
||||||
(requirement '(user-processes loopback))
|
(requirement '(user-processes loopback))
|
||||||
|
(modules `((ice-9 match)
|
||||||
|
,@%default-modules))
|
||||||
(start (nginx-action "-p" run-directory))
|
(start (nginx-action "-p" run-directory))
|
||||||
(stop (nginx-action "-s" "stop")))))))
|
(stop (nginx-action "-s" "stop")))))))
|
||||||
|
|
||||||
|
|
Loading…
Reference in a new issue