To significantly speed up web applications, there is a HTTP web caching accelerator called Varnish. Its main point is to cache contents to speed up the delivery of web pages to its end users. The installation of Varnish may be troublesome, but here are the steps I use to get it working on my own server and for Drupal sites:
- Choose your type of server environment. My server runs on CentOS so these steps may not match exactly depending on your server setup.
- Get Varnish by
rpm --nosignature -i http://repo.varnish-cache.org/redhat/varnish-3.0/el5/noarch/varnish-release-3.0-1.noarch.rpm
and then yum install varnish. - Start it up:
/etc/init.d/varnish start
. - Once Varnish has been downloaded and installed on your server, next comes the configurations. Verify your Apache Listen Port from
vi /etc/httpd/conf/httpd.conf
. It is usually set to Port 80 so make sure that you will be using a different Port for Varnish. Why? Because I made a mistake of using the same port for Varnish and Apache (all of my sites) pretty much won't start up. To check, usesudo netstat -ltnp | grep ':80'
and make sure the results only include httpd, which stands for the Apache server. - The default settings for varnish is located at
vi /etc/sysconfig/varnish
and make sureVARNISH_LISTEN_PORT=6081
is set. If this is the same port as Apache, change it to another port. Save your changes or leave the default options. - Then configure the logic of Varnish at
vi /etc/varnish/default.vcl
and that the.port= "80"
or whatever the Apache Listen Port is setup as. This is the reverse proxy port that's used, so it's not supposed to be the same as the Varnish Listen Port. My default config looks like:backend default { .host = "127.0.0.1"; .port = "80"; .connect_timeout = 600s; .first_byte_timeout = 600s; .between_bytes_timeout = 600s; }
-
For more expert advice on how to better setup the .vcl, I used FourKitchens Varnish as reference.
-
After all of the configurations, it is now time to restart your server
/etc/init.d/httpd restart
and varnish/etc/init.d/varnish restart
. - Wait, your job is not done yet. We have to get this setup for Drupal. Drush and install Varnish module.
-
Edit your site's settings.php and include these on the bottom.
$conf['cache_backends'][] = 'sites/all/modules/varnish/varnish.cache.inc'; $conf['cache_class_cache_page'] = 'VarnishCache'; $conf['reverse_proxy'] = TRUE; $conf['page_cache_invoke_hooks'] = FALSE; $conf['cache'] = 1; $conf['cache_lifetime'] = 0; $conf['page_cache_maximum_age'] = 21600; $conf['reverse_proxy_header'] = 'HTTP_X_FORWARDED_FOR'; $conf['reverse_proxy_addresses'] = array('127.0.0.1'); $conf['omit_vary_cookie'] = TRUE;
- Enable the module and make sure to set the expired caching in the
/admin/config/development/performance
. - Then in
/admin/config/development/varnish
verify that the control terminal has the 127.0.0.1:6082 and your varnish control key comes fromvi /etc/varnish/secret
. - Save configuration and if all is done right, the Status on the bottom should be a Green Checkmark with "Varnish running".