How to install varnish
This is a step-by-step on howto setup and run varnish web cache.
This was done for Linux RedHat 6 64bits, same works for CentOS 5.5 64bits with varnish 3.0
This install is made of Varnish and Apache.
Varnish will listen on port 0.0.0.0:80 and apache on localhost:8080
I have written other two howto’s on older version’s check them here:
1. Pre-Requisites,
Create user and folder,set permissions
# useradd varnish
# mkdir /opt/varnishadm
# chown varnish.root -R /opt/varnish/
Downlaod and install pre-requisites
# yum update
# yum -v -y install automake autoconf libtool gcc ncurses-devel libxslt groff pcre-devel pkgconfig httpd
-(Optional docutils, wget http://docutils.sourceforge.net/docutils-snapshot.tgz uncompress and run setup.py install)
2. Compile and Install
# ./configure –prefix=/opt/varnish –exec-prefix=/opt/varnish –bindir=/opt/varnish/bin –mandir=/usr/share/man –enable-stack-protector
# grep -i WARN config.log
(The only one I could not solve was configure: “WARNING: libedit not found, disabling libedit support”)
# make all
# make install
set Path
# export PATH=/opt/varnish/bin:/opt/varnish/sbin:$PATH
3. Set apache to listen on port 8080
# vim /etc/httpd/conf/httpd.conf
Change the line Listen 80 to:
Listen 127.0.0.1:8080
# service httpd restart
4. Fix the default.vcl
mv /opt/varnish/etc/varnish/default.vcl /opt/varnish/etc/default.vcl
# vim /opt/varnish/etc/default.vcl
uncomment the lines
backend default {
.host = “127.0.0.1”;
.port = “8080”;
}
5. Run the varnishd
# varnishd -f /opt/varnish/etc/default.vcl -s malloc,1G -T 127.0.0:1234 -a 0.0.0.0:80 -u varnish
Make sure its listening on correct port
# netstat -anp |grep varnishd
6.(optional) Set the firewall correctly
# iptables-save^C
# vim /etc/sysconfig/iptables
Add the line:
-A INPUT -m state –state NEW -m tcp -p tcp –dport 80 -j ACCEPT
# iptables-restore < /etc/sysconfig/iptables
# iptables
7. Test if all is working
Keep an eye if varnish is answering the conection
# varnishlog |grep -i -v ng
Go into a web browser and type the IP of the varnish/apache server
8. Optional (setup daemon)
The follow is what I currently use for a production enviroment:
COPY and PASTE
# vim /etc/init.d/varnish
#!/bin/bash # # chkconfig: 345 99 8 # cache: Starts Varnish Cache Service # description: Varnish Reverse Cache for Web Sites # process name: cache # Source function library. . /etc/init.d/functions # Configurado por Felipe Ferreira @ 20/07/11 #Edit here to the name fo your .vcl FILE SITEID=default CONFIG="/opt/varnish/etc/varnish.conf" # not used RETVAL=0 OPTIONS=" -f /opt/varnish/etc/$SITEID.vcl -a 0.0.0.0:80 -l 512M -s malloc,15g -h classic,72227 -w 500,3000,30 -P /var/run/varnishd.pid -t 120 -T :1234 -p connect_timeout=2 -p pipe_timeout=10 -p listen_depth=128 -p lru_interval=60 -p sess_workspace=32768 -p thread_pool_add_delay=1 -u varnish -i $SITEID " getpid() { pid=`ps -ef | grep 'varnishd ' | grep -v grep |head -n 1 | awk '{print $2}'` } start() { echo -n $"Starting Varnish Cache Daemon: " getpid if [ -z "$pid" ]; then # in case of unclean shutdown nohup /bin/su root -c "/opt/varnish/sbin/varnishd $OPTIONS" RETVAL=$? fi if [ $RETVAL -eq 0 ]; then echo_success else echo_failure fi echo return $RETVAL } stop() { echo -n $"Stoping Varnish Cache ID: $SITEID: " getpid RETVAL=$? if [ -n "$pid" ]; then kill $pid sleep 6 getpid if [ -z "$pid" ]; then rm -f /var/run/$SITEID echo_success else echo_failure fi else echo_failure fi echo return $RETVAL } # See how we were called. case "$1" in start) start ;; stop) stop ;; status) getpid echo $pid if [ -n "$pid" ]; then echo "Varnish Daemon $SITEID (pid $pid) is running..." else RETVAL=1 echo "Varnish $SITEID is stopped" fi ;; stats) /opt/varnish/bin/varnishstat -1 |more ;; restart) stop start ;; *) echo $"Usage: $0 {start|stop|status|stats|restart}" exit 1 ;; esac exit $RETVAL
# chmod +x /etc/init.d/varnish
# service varnish restart
# chkconfig –level 345 varnish on
Good
Ref. https://www.varnish-cache.org/docs/3.0/installation/install.html#compiling-varnish-from-source
1 thought on “How to install varnish”