Goldlilys Media

San Diego Web Design and Development Company

How To Install Varnish

Varnish Cache

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:

  1. Choose your type of server environment. My server runs on CentOS so these steps may not match exactly depending on your server setup.  
  2. 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.
  3. Start it up: /etc/init.d/varnish start.
  4. 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, use sudo netstat -ltnp | grep ':80' and make sure the results only include httpd, which stands for the Apache server.
  5. The default settings for varnish is located at vi /etc/sysconfig/varnish and make sure VARNISH_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.
  6. 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; }

  7. For more expert advice on how to better setup the .vcl, I used FourKitchens Varnish as reference.

  8. 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.

  9. Wait, your job is not done yet. We have to get this setup for Drupal. Drush and install Varnish module.
  10. 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;

  11. Enable the module and make sure to set the expired caching in the /admin/config/development/performance.
  12. Then in /admin/config/development/varnish verify that the control terminal has the 127.0.0.1:6082 and your varnish control key comes from vi /etc/varnish/secret.
  13. Save configuration and if all is done right, the Status on the bottom should be a Green Checkmark with "Varnish running".
Blog Category: Web Tools: Services:

Grow Your Business!

Want more business insights and website improvement tips ?

Contact

Address:

Hera Hub Mission Valley
8885 Rio San Diego Drive, Suite 237
San Diego, CA 92108

Hera Hub Sorrento Mesa
9276 Scranton Rd #600
San Diego, CA 92121

Office Hours:

Monday - Friday 10am - 5pm

For a consultation, schedule an appointment.