From 0f695d477b57588f9fd908b2b77352d92bf7b81a Mon Sep 17 00:00:00 2001 From: Jamie Nguyen Date: Sun, 4 Oct 2015 08:32:14 +0100 Subject: [PATCH] Remove PID file before starting nginx (#1268621) `nginx -t` creates the file /run/nginx.pid if it doesn't exist. `nginx -t` is executed by ExecStartPre (in nginx.service) and creates /run/nginx.pid with the correct SELinux context. However, when manually running `nginx -t` from the cmdline, the SELinux transition for systemd services doesn't occur and /run/nginx.pid is created with the wrong SELinux context. A workaround is to make sure that the PID file is removed before starting nginx. --- nginx.service | 4 ++++ 1 file changed, 4 insertions(+) diff --git a/nginx.service b/nginx.service index 72931af..8597eb4 100644 --- a/nginx.service +++ b/nginx.service @@ -5,6 +5,10 @@ After=network.target remote-fs.target nss-lookup.target [Service] Type=forking PIDFile=/run/nginx.pid +# Nginx will fail to start if /run/nginx.pid already exists but has the wrong +# SELinux context. This might happen when running `nginx -t` from the cmdline. +# https://bugzilla.redhat.com/show_bug.cgi?id=1268621 +ExecStartPre=/usr/bin/rm -f /run/nginx.pid ExecStartPre=/usr/sbin/nginx -t ExecStart=/usr/sbin/nginx ExecReload=/bin/kill -s HUP $MAINPID