Add systemd instantiated service nginx@.service, allowing e.g.
"systemctl start nginx@foobar.service" to start an instance of nginx using /etc/nginx/foobar.conf as the configuration.
This commit is contained in:
parent
4e6163260f
commit
26626a2b5d
20
instance.conf
Normal file
20
instance.conf
Normal file
@ -0,0 +1,20 @@
|
|||||||
|
#
|
||||||
|
# This is an example instance-specific configuration file.
|
||||||
|
#
|
||||||
|
# To use this example, copy instance.conf to /etc/nginx/foobar.conf
|
||||||
|
# and replace all the references to @INSTANCE@, for example using:
|
||||||
|
#
|
||||||
|
# # sed s/@INSTANCE@/foobar/g < instance.conf > /etc/nginx/foobar.conf
|
||||||
|
#
|
||||||
|
# This new configuration file be used instead of /etc/nginx/nginx.conf
|
||||||
|
# when running:
|
||||||
|
#
|
||||||
|
# # systemctl start nginx@foobar.service
|
||||||
|
#
|
||||||
|
# This example configuration adjust the location of the PID file,
|
||||||
|
# access and error logs to be instance-specific. Further
|
||||||
|
# customisations will be required for an instance to run
|
||||||
|
# simultaneously to nginx.service under the default configuration,
|
||||||
|
# e.g. changing the port and root directory as appropriate.
|
||||||
|
#
|
||||||
|
|
18
nginx.spec
18
nginx.spec
@ -84,9 +84,11 @@ Source14: nginx-upgrade.8
|
|||||||
Source15: macros.nginxmods.in
|
Source15: macros.nginxmods.in
|
||||||
Source16: nginxmods.attr
|
Source16: nginxmods.attr
|
||||||
Source17: nginx-ssl-pass-dialog
|
Source17: nginx-ssl-pass-dialog
|
||||||
|
Source18: nginx@.service
|
||||||
Source102: nginx-logo.png
|
Source102: nginx-logo.png
|
||||||
Source200: README.dynamic
|
Source200: README.dynamic
|
||||||
Source210: UPGRADE-NOTES-1.6-to-1.10
|
Source210: UPGRADE-NOTES-1.6-to-1.10
|
||||||
|
Source220: instance.conf
|
||||||
|
|
||||||
# removes -Werror in upstream build scripts. -Werror conflicts with
|
# removes -Werror in upstream build scripts. -Werror conflicts with
|
||||||
# -D_FORTIFY_SOURCE=2 causing warnings to turn into errors.
|
# -D_FORTIFY_SOURCE=2 causing warnings to turn into errors.
|
||||||
@ -267,10 +269,10 @@ Requires: zlib-devel
|
|||||||
cat %{S:2} %{S:3} %{S:4} %{S:5} %{S:6} > %{_builddir}/%{name}.gpg
|
cat %{S:2} %{S:3} %{S:4} %{S:5} %{S:6} > %{_builddir}/%{name}.gpg
|
||||||
%{gpgverify} --keyring='%{_builddir}/%{name}.gpg' --signature='%{SOURCE1}' --data='%{SOURCE0}'
|
%{gpgverify} --keyring='%{_builddir}/%{name}.gpg' --signature='%{SOURCE1}' --data='%{SOURCE0}'
|
||||||
%autosetup -p1
|
%autosetup -p1
|
||||||
cp %{SOURCE200} %{SOURCE210} %{SOURCE10} %{SOURCE12} .
|
cp %{SOURCE200} %{SOURCE210} %{SOURCE10} %{SOURCE12} %{SOURCE18} %{SOURCE220} .
|
||||||
|
|
||||||
%if 0%{?rhel} > 0 && 0%{?rhel} < 8
|
%if 0%{?rhel} > 0 && 0%{?rhel} < 8
|
||||||
sed -i -e 's#KillMode=.*#KillMode=process#g' nginx.service
|
sed -i -e 's#KillMode=.*#KillMode=process#g' nginx.service nginx@.service
|
||||||
sed -i -e 's#PROFILE=SYSTEM#HIGH:!aNULL:!MD5#' nginx.conf
|
sed -i -e 's#PROFILE=SYSTEM#HIGH:!aNULL:!MD5#' nginx.conf
|
||||||
%endif
|
%endif
|
||||||
|
|
||||||
@ -281,6 +283,13 @@ sed \
|
|||||||
-i auto/lib/openssl/conf
|
-i auto/lib/openssl/conf
|
||||||
%endif
|
%endif
|
||||||
|
|
||||||
|
# Prepare template config for instances
|
||||||
|
sed -e '/^error_log /s|error\.log|@INSTANCE@_error.log|' \
|
||||||
|
-e '/^pid /s|nginx\.pid|nginx-@INSTANCE@.pid|' \
|
||||||
|
-e '/^ *access_log/s|access\.log|@INSTANCE@_access.log|' \
|
||||||
|
nginx.conf >> instance.conf
|
||||||
|
touch -r %{SOURCE12} instance.conf
|
||||||
|
|
||||||
# Prepare sources for installation
|
# Prepare sources for installation
|
||||||
cp -a ../%{name}-%{version} ../%{name}-%{version}-%{release}-src
|
cp -a ../%{name}-%{version} ../%{name}-%{version}-%{release}-src
|
||||||
mv ../%{name}-%{version}-%{release}-src .
|
mv ../%{name}-%{version}-%{release}-src .
|
||||||
@ -377,6 +386,8 @@ find %{buildroot} -type f -iname '*.so' -exec chmod 0755 '{}' \;
|
|||||||
|
|
||||||
install -p -D -m 0644 ./nginx.service \
|
install -p -D -m 0644 ./nginx.service \
|
||||||
%{buildroot}%{_unitdir}/nginx.service
|
%{buildroot}%{_unitdir}/nginx.service
|
||||||
|
install -p -D -m 0644 ./nginx@.service \
|
||||||
|
%{buildroot}%{_unitdir}/nginx@.service
|
||||||
install -p -D -m 0644 %{SOURCE11} \
|
install -p -D -m 0644 %{SOURCE11} \
|
||||||
%{buildroot}%{_sysconfdir}/logrotate.d/nginx
|
%{buildroot}%{_sysconfdir}/logrotate.d/nginx
|
||||||
|
|
||||||
@ -538,11 +549,12 @@ fi
|
|||||||
%{_mandir}/man8/nginx.8*
|
%{_mandir}/man8/nginx.8*
|
||||||
%{_mandir}/man8/nginx-upgrade.8*
|
%{_mandir}/man8/nginx-upgrade.8*
|
||||||
%{_unitdir}/nginx.service
|
%{_unitdir}/nginx.service
|
||||||
|
%{_unitdir}/nginx@.service
|
||||||
%{_libexecdir}/nginx-ssl-pass-dialog
|
%{_libexecdir}/nginx-ssl-pass-dialog
|
||||||
|
|
||||||
%files core
|
%files core
|
||||||
%license LICENSE
|
%license LICENSE
|
||||||
%doc CHANGES README README.dynamic
|
%doc CHANGES README README.dynamic instance.conf
|
||||||
%{_sbindir}/nginx
|
%{_sbindir}/nginx
|
||||||
%config(noreplace) %{_sysconfdir}/nginx/fastcgi.conf
|
%config(noreplace) %{_sysconfdir}/nginx/fastcgi.conf
|
||||||
%config(noreplace) %{_sysconfdir}/nginx/fastcgi.conf.default
|
%config(noreplace) %{_sysconfdir}/nginx/fastcgi.conf.default
|
||||||
|
23
nginx@.service
Normal file
23
nginx@.service
Normal file
@ -0,0 +1,23 @@
|
|||||||
|
[Unit]
|
||||||
|
Description=The nginx HTTP and reverse proxy server
|
||||||
|
After=network-online.target remote-fs.target nss-lookup.target
|
||||||
|
Wants=network-online.target
|
||||||
|
|
||||||
|
[Service]
|
||||||
|
Type=forking
|
||||||
|
Environment=NGINX_INSTANCE=%i
|
||||||
|
PIDFile=/run/nginx-%i.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-%i.pid
|
||||||
|
ExecStartPre=/usr/sbin/nginx -t -c /etc/nginx/%i.conf
|
||||||
|
ExecStart=/usr/sbin/nginx -c /etc/nginx/%i.conf
|
||||||
|
ExecReload=/usr/sbin/nginx -s reload -c /etc/nginx/%i.conf
|
||||||
|
KillSignal=SIGQUIT
|
||||||
|
TimeoutStopSec=5
|
||||||
|
KillMode=mixed
|
||||||
|
PrivateTmp=true
|
||||||
|
|
||||||
|
[Install]
|
||||||
|
WantedBy=multi-user.target
|
Loading…
Reference in New Issue
Block a user