
ingvar at varnish-cache
Apr 24, 2012, 6:02 AM
Post #1 of 1
(41 views)
Permalink
|
|
[master] 9ec4417 systemd support for fedora
|
|
commit 9ec4417a3aa3c85690815ce86b74a190c148b4d1 Author: Ingvar Hagelund <ingvar [at] redpill-linpro> Date: Tue Apr 24 15:01:10 2012 +0200 systemd support for fedora diff --git a/redhat/varnish.params b/redhat/varnish.params new file mode 100644 index 0000000..d889ee4 --- /dev/null +++ b/redhat/varnish.params @@ -0,0 +1,40 @@ +# Varnish environment configuration description. This was derived from +# the old style sysconfig/defaults settings + +# Set this to 1 to make systemd reload try to switch vcl without restart. +RELOAD_VCL=1 + +# Main configuration file. You probably want to change it. +VARNISH_VCL_CONF=/etc/varnish/default.vcl + +# Default address and port to bind to. Blank address means all IPv4 +# and IPv6 interfaces, otherwise specify a host name, an IPv4 dotted +# quad, or an IPv6 address in brackets. +# VARNISH_LISTEN_ADDRESS=192.168.1.5 +VARNISH_LISTEN_PORT=6081 + +# Admin interface listen address and port +VARNISH_ADMIN_LISTEN_ADDRESS=127.0.0.1 +VARNISH_ADMIN_LISTEN_PORT=6082 + +# Shared secret file for admin interface +VARNISH_SECRET_FILE=/etc/varnish/secret + +# The minimum and maximum number of worker threads to start +VARNISH_MIN_THREADS=1 +VARNISH_MAX_THREADS=1000 + +# Idle timeout for worker threads +VARNISH_THREAD_TIMEOUT=120 + +# Backend storage specification, see Storage Types in the varnishd(5) +# man page for details. +VARNISH_STORAGE="file,/var/lib/varnish/varnish_storage.bin,1G" + +# Default TTL used when the backend does not specify one +VARNISH_TTL=120 + +# User and group for the varnishd worker processes +VARNISH_USER=varnish +VARNISH_GROUP=varnish + diff --git a/redhat/varnish.service b/redhat/varnish.service new file mode 100644 index 0000000..6f7b107 --- /dev/null +++ b/redhat/varnish.service @@ -0,0 +1,47 @@ +[Unit] +Description=Varnish a high-perfomance HTTP accelerator +After=syslog.target network.target + +[Service] + +# +# If you want to make changes to this file, please copy it to +# /etc/systemd/system/varnish.service and make your changes there. +# This will override the file kept at /lib/systemd/system/varnish.service +# +# Enviroment variables may be found in /etc/varnish/varnish.params +# + +# Maximum number of open files (for ulimit -n) +LimitNOFILE=131072 + +# Locked shared memory (for ulimit -l) +# Default log size is 82MB + header +LimitMEMLOCK=82000 + +# Maximum size of the corefile. +LimitCORE=infinity + +EnvironmentFile=/etc/varnish/varnish.params + +Type=forking +PIDFile=/var/run/varnish.pid +PrivateTmp=true +ExecStart=/usr/sbin/varnishd \ + -P /var/run/varnish.pid \ + -f $VARNISH_VCL_CONF \ + -a ${VARNISH_LISTEN_ADDRESS}:${VARNISH_LISTEN_PORT} \ + -T ${VARNISH_ADMIN_LISTEN_ADDRESS}:${VARNISH_ADMIN_LISTEN_PORT} \ + -t $VARNISH_TTL \ + -w ${VARNISH_MIN_THREADS},${VARNISH_MAX_THREADS},${VARNISH_THREAD_TIMEOUT} \ + -u $VARNISH_USER \ + -g $VARNISH_GROUP \ + -S $VARNISH_SECRET_FILE \ + -s $VARNISH_STORAGE \ + $DAEMON_OPTS + +ExecReload=/usr/sbin/varnish_reload_vcl + +[Install] +WantedBy=multi-user.target + diff --git a/redhat/varnish.spec b/redhat/varnish.spec index a66e0b9..f71fc9e 100644 --- a/redhat/varnish.spec +++ b/redhat/varnish.spec @@ -27,6 +27,13 @@ Requires(preun): /sbin/service %if %{undefined suse_version} Requires(preun): initscripts %endif +%if 0%{?fedora} >= 17 +Requires(post): systemd-units +Requires(post): systemd-sysv +Requires(preun): systemd-units +Requires(postun): systemd-units +BuildRequires: systemd-units +%endif # Varnish actually needs gcc installed to work. It uses the C compiler # at runtime to compile the VCL configuration files. This is by design. @@ -160,12 +167,24 @@ mkdir -p %{buildroot}/var/log/varnish mkdir -p %{buildroot}/var/run/varnish mkdir -p %{buildroot}%{_sysconfdir}/ld.so.conf.d/ install -D -m 0644 redhat/default.vcl %{buildroot}%{_sysconfdir}/varnish/default.vcl -install -D -m 0644 redhat/varnish.sysconfig %{buildroot}%{_sysconfdir}/sysconfig/varnish install -D -m 0644 redhat/varnish.logrotate %{buildroot}%{_sysconfdir}/logrotate.d/varnish + +# systemd support +%if 0%{?fedora} >= 17 +mkdir -p %{buildroot}%{_unitdir} +install -D -m 0644 redhat/varnish.service %{buildroot}%{_unitdir}/varnish.service +install -D -m 0644 redhat/varnish.params %{buildroot}%{_sysconfdir}/varnish/varnish.params +install -D -m 0644 redhat/varnishncsa.service %{buildroot}%{_unitdir}/varnishncsa.service +install -D -m 0644 redhat/varnishlog.service %{buildroot}%{_unitdir}/varnishlog.service +sed -i 's,sysconfig/varnish,varnish/varnish.params,' redhat/varnish_reload_vcl +# default is standard sysvinit +%else +install -D -m 0644 redhat/varnish.sysconfig %{buildroot}%{_sysconfdir}/sysconfig/varnish install -D -m 0755 redhat/varnish.initrc %{buildroot}%{_initrddir}/varnish install -D -m 0755 redhat/varnishlog.initrc %{buildroot}%{_initrddir}/varnishlog install -D -m 0755 redhat/varnishncsa.initrc %{buildroot}%{_initrddir}/varnishncsa -install -D -m 0755 redhat/varnish_reload_vcl %{buildroot}%{_bindir}/varnish_reload_vcl +%endif +install -D -m 0755 redhat/varnish_reload_vcl %{buildroot}%{_sbindir}/varnish_reload_vcl echo %{_libdir}/varnish > %{buildroot}%{_sysconfdir}/ld.so.conf.d/varnish-%{_arch}.conf @@ -185,11 +204,22 @@ rm -rf %{buildroot} %doc examples %dir %{_sysconfdir}/varnish/ %config(noreplace) %{_sysconfdir}/varnish/default.vcl -%config(noreplace) %{_sysconfdir}/sysconfig/varnish %config(noreplace) %{_sysconfdir}/logrotate.d/varnish + +# systemd from fedora 17 +%if 0%{?fedora} >= 17 +%{_unitdir}/varnish.service +%{_unitdir}/varnishncsa.service +%{_unitdir}/varnishlog.service +%config(noreplace)%{_sysconfdir}/varnish/varnish.params + +# default is standard sysvinit +%else +%config(noreplace) %{_sysconfdir}/sysconfig/varnish %{_initrddir}/varnish %{_initrddir}/varnishlog %{_initrddir}/varnishncsa +%endif %files libs %defattr(-,root,root,-) @@ -228,19 +258,42 @@ getent passwd varnish >/dev/null || \ exit 0 %post +%if 0%{?fedora} >= 17 +/bin/systemctl daemon-reload >/dev/null 2>&1 || : +%else /sbin/chkconfig --add varnish /sbin/chkconfig --add varnishlog /sbin/chkconfig --add varnishncsa +%endif test -f /etc/varnish/secret || (uuidgen > /etc/varnish/secret && chmod 0600 /etc/varnish/secret) +%triggerun -- varnish < 3.0.2-1 +# Save the current service runlevel info +# User must manually run systemd-sysv-convert --apply varnish +# to migrate them to systemd targets +%{_bindir}/systemd-sysv-convert --save varnish >/dev/null 2>&1 ||: + +# If the package is allowed to autostart: +#/bin/systemctl --no-reload enable varnish.service >/dev/null 2>&1 ||: + +# Run these because the SysV package being removed won't do them +/sbin/chkconfig --del varnish >/dev/null 2>&1 || : +#/bin/systemctl try-restart varnish.service >/dev/null 2>&1 || : + %preun if [ $1 -lt 1 ]; then + # Package removal, not upgrade + %if 0%{?fedora} >= 17 + /bin/systemctl --no-reload disable varnish.service > /dev/null 2>&1 || : + /bin/systemctl stop varnish.service > /dev/null 2>&1 || : + %else /sbin/service varnish stop > /dev/null 2>&1 /sbin/service varnishlog stop > /dev/null 2>&1 /sbin/service varnishncsa stop > /dev/null 2>%1 /sbin/chkconfig --del varnish /sbin/chkconfig --del varnishlog /sbin/chkconfig --del varnishncsa + %endif fi %post libs -p /sbin/ldconfig diff --git a/redhat/varnishlog.service b/redhat/varnishlog.service new file mode 100644 index 0000000..1e3e274 --- /dev/null +++ b/redhat/varnishlog.service @@ -0,0 +1,11 @@ +[Unit] +Description=Varnish HTTP accelerator logging daemon +After=network.target + +[Service] +Type=forking +PIDFile=/run/varnishlog.pid +ExecStart=/usr/bin/varnishlog -a -w /var/log/varnish/varnish.log -D -P /run/varnishlog.pid + +[Install] +WantedBy=multi-user.target diff --git a/redhat/varnishncsa.service b/redhat/varnishncsa.service new file mode 100644 index 0000000..df5f19f --- /dev/null +++ b/redhat/varnishncsa.service @@ -0,0 +1,11 @@ +[Unit] +Description=Varnish NCSA logging +After=network.target + +[Service] +Type=forking +PIDFile=/run/varnishncsa.pid +ExecStart=/usr/bin/varnishncsa -a -w /var/log/varnish/varnishncsa.log -D -P /run/varnishncsa.pid + +[Install] +WantedBy=multi-user.target _______________________________________________ varnish-commit mailing list varnish-commit [at] varnish-cache https://www.varnish-cache.org/lists/mailman/listinfo/varnish-commit
|