diff options
Diffstat (limited to 'network/varnish/rc.varnishd')
-rwxr-xr-x | network/varnish/rc.varnishd | 78 |
1 files changed, 78 insertions, 0 deletions
diff --git a/network/varnish/rc.varnishd b/network/varnish/rc.varnishd new file mode 100755 index 0000000000..b6354687f7 --- /dev/null +++ b/network/varnish/rc.varnishd @@ -0,0 +1,78 @@ +#!/bin/sh + +# varnish rc script +# written by Matt Schurenko <matt.schurenko@gmail.com> + +USAGE="usage: $0 start|stop|restart" +BIN='/usr/sbin/varnishd' +CONF='/etc/varnish/default.vcl' +PID='/var/run/varnish.pid' + +## +# adjust the following variables accordingly +## +BACKING_FILE='/var/lib/varnish-cache' +ADMIN_IP='127.0.0.1' +ADMIN_PORT=8001 +HTTP_IP='0.0.0.0' +HTTP_PORT=80 +CACHE_SIZE='1g' +# ttl assigned to objects without ttl values (default 120s) +DEFAULT_TTL=604800 # 7 days +FILE_DESCRIPTORS=131072 +MIN_THREADS=5 +MAX_THREADS=500 +THREAD_TIMEOUT=300 +# maximum number of http headers (default is 64) +HTTP_HEADERS=384 +# connection timout for backend (default is 0.4s) +CONNECT_TIMEOUT='4.0' + +VARNISH_OPTS="-f $CONF \ + -s file,${BACKING_FILE},$CACHE_SIZE \ + -T $ADMIN_IP:${ADMIN_PORT} \ + -a $HTTP_IP:${HTTP_PORT} \ + -t $DEFAULT_TTL \ + -w${MIN_THREADS},${MAX_THREADS},${THREAD_TIMEOUT} \ + -P $PID" + +VARNISH_PARAMS="-p http_headers=$HTTP_HEADERS \ + -p connect_timeout=$CONNECT_TIMEOUT" + +varnish_start() { + if [ -e $PID ];then + if [ `pgrep varnishd|head -n1` == `cat $PID` ];then + echo "varnish is already running" + exit 1 + else # pid file must be stale + "$PID exists but pid doesn't match pid of varnishd. please investigate." + exit 2 + fi + fi + ulimit -n $FILE_DESCRIPTORS + echo "starting varnish..." + $BIN $VARNISH_OPTS $VARNISH_PARAMS +} +varnish_stop() { + echo "stopping varnish..." + killall `echo $BIN | awk -F'/' '{print $NF}'` + if [ -e $PID ];then + rm $PID + fi +} + +case "$1" in + start) + varnish_start + ;; + stop) + varnish_stop + ;; + restart) + varnish_stop + sleep 1 + varnish_start + ;; + *) echo -e $USAGE + ;; +esac |