/ 中存储网

Varnish的安装配置方法

2013-09-03 11:10:27 来源:ITJS.CN

wget http://repo.varnish-cache.org/source/varnish-3.0.0.tar.gz

tar zxf varnish-3.0.0.tar.gz

cd varnish-3.0.0

./configure –prefix=/usr/local/varnish PKG_CONFIG_PATH=/usr/lib/pkgconfig

make

make install

cp redhat/varnish.initrc /etc/init.d/varnish

cp redhat/varnish.sysconfig /usr/local/varnish/etc/init

cd /usr/local/vernish

mkdir cache

mkdir log

default.vcl

backend webserver {

.host = “192.168.1.105″;

.port = “80″;

}

sub vcl_recv {

if (req.http.x-forwarded-for) {

#set req.http.X-Forwarded-For = req.http.X-Forwarded-For “, ” client.ip;

} else {

set req.http.X-Forwarded-For = client.ip;

}

if (req.request != “GET” &&

req.request != “HEAD” &&

req.request != “PUT” &&

req.request != “POST” &&

req.request != “TRACE” &&

req.request != “OPTIONS” &&

req.request != “DELETE”) {

return (pipe);

}

if (req.request != “GET” && req.request != “HEAD”) {

return (pass);

}

#if (req.http.host ~ “^(.*).ixdba.net” || req.http.host ~ “^(.*).ixdba.cn”) {

# set req.backend = webserver;

# }

if (req.url ~ “.(jsp|do|php)($|?)”) {

return (pass);

} else {

return (lookup);

}

}

sub vcl_pipe {

return (pipe);

}

sub vcl_pass {

return (pass);

}

sub vcl_hash {

hash_data(req.url);

if (req.http.host) {

hash_data(req.http.host);

} else {

hash_data(server.ip);

}

return (hash);

}

sub vcl_hit {

return (deliver);

}

sub vcl_miss {

return (fetch);

}

sub vcl_fetch {

if (beresp.ttl <= 0s ||

beresp.http.Set-Cookie ||

beresp.http.Vary == “*”) {

/*

* Mark as “Hit-For-Pass” for the next 2 minutes

*/

set beresp.ttl = 120 s;

return (hit_for_pass);

}

return (deliver);

}

sub vcl_deliver {

if (obj.hits > 0) {

set resp.http.X-Cache = “HIT from 192.168.1.110″;

} else {

set resp.http.X-Cache = “MISS from 192.168.1.110″;

}

return (deliver);

}

配置daemon

#! /bin/sh

#

# varnish Control the Varnish Cache

#

# chkconfig: – 90 10

# description: Varnish is a high-perfomance HTTP accelerator

# processname: varnishd

# config: /etc/sysconfig/varnish

# pidfile: /var/run/varnishd.pid

### BEGIN INIT INFO

# Provides: varnish

# Required-Start: $network $local_fs $remote_fs

# Required-Stop: $network $local_fs $remote_fs

# Default-Start:

# Default-Stop:

# Should-Start: $syslog

# Short-Description: start and stop varnishd

# Description: Varnish is a high-perfomance HTTP accelerator

### END INIT INFO

# Source function library.

. /etc/init.d/functions

retval=0

pidfile=/usr/local/varnish/log/varnish.pid

exec=”/usr/local/varnish/sbin/varnishd”

reload_exec=”/usr/local/varnish/bin/varnish_reload_vcl”

prog=”varnishd”

config=”/usr/local/varnish/etc/init”

lockfile=”/usr/local/varnish/log/varnish.lock”

# Include varnish defaults

[ -e /usr/local/varnish/etc/init ] && . /usr/local/varnish/etc/init

start() {

if [ ! -x $exec ]

then

echo $exec not found

exit 5

fi

if [ ! -f $config ]

then

echo $config not found

exit 6

fi

echo -n “Starting Varnish Cache: ”

# Open files (usually 1024, which is way too small for varnish)

ulimit -n ${NFILES:-131072}

# Varnish wants to lock shared memory log in memory.

ulimit -l ${MEMLOCK:-82000}

# $DAEMON_OPTS is set in /etc/sysconfig/varnish. At least, one

# has to set up a backend, or /tmp will be used, which is a bad idea.

if [ "$DAEMON_OPTS" = "" ]; then

echo “$DAEMON_OPTS empty.”

echo -n “Please put configuration options in $config”

return 6

else

# Varnish always gives output on STDOUT

daemon –pidfile $pidfile $exec -P $pidfile “$DAEMON_OPTS” > /dev/null 2>&1

retval=$?

if [ $retval -eq 0 ]

then

touch $lockfile

echo_success

echo

else

echo_failure

echo

fi

return $retval

fi

}

stop() {

echo -n “Stopping Varnish Cache: ”

killproc -p $pidfile $prog

retval=$?

echo

[ $retval -eq 0 ] && rm -f $lockfile

return $retval

}

restart() {

stop

start

}

reload() {

if [ "$RELOAD_VCL" = "1" ]

then

$reload_exec

else

force_reload

fi

}

force_reload() {

restart

}

rh_status() {

status -p $pidfile $prog

}

rh_status_q() {

rh_status >/dev/null 2>&1

}

configtest() {

if [ -f "$VARNISH_VCL_CONF" ]; then

$exec -f “$VARNISH_VCL_CONF” -C -n /tmp > /dev/null && echo “Syntax ok”

else

echo “VARNISH_VCL_CONF is unset or does not point to a file”

fi

}

# See how we were called.

case “$1″ in

start)

rh_status_q && exit 0

$1

;;

stop)

rh_status_q || exit 0

$1

;;

restart)

$1

;;

reload)

rh_status_q || exit 7

$1

;;

force-reload)

force_reload

;;

status)

rh_status

;;

condrestart|try-restart)

rh_status_q || exit 0

restart

;;

configtest)

configtest

;;

*)

echo “Usage: $0 {start|stop|status|restart|condrestart|try-restart|reload|force-reload}”

exit 2

esac

exit $?

/usr/local/varnish/etc/init启动选项

NFILES=131072

MEMLOCK=82000

DAEMON_OPTS=”-a 192.168.1.110:8888

-T 192.168.1.110:200

-f /usr/local/varnish/etc/varnish/default.vcl

-u root -g root

-s file,/usr/local/varnish/cache/varnish.bin,256M”