Installing Varnish for Faster Magento website
Varnish is an HTTP accelerator designed for content-heavy dynamic web sites. As we know Magento is too heavy when it comes to content, In addition we have multiple free modules/extension installed for having aditional functionality. Adding Varnish in front of Apache is used to speed up Magento websites.
We will use PageCache powered by Varnish Magento Extension found at http://www.magentocommerce.com/magento-connect/pagecache-powered-by-varnish.html in this setup.
Step One – Install Varnish.
We will use apt utility to install on apache with following comand. You will need a sudo user login to install and configure Varnish. You may need to add Varnish repos to apt sources list with following commands
sudo curl http://repo.varnish-cache.org/debian/GPG-key.txt | sudo apt-key add –
Now edit apt sources.list to have
sudo nano /etc/apt/sources.list
deb http://repo.varnish-cache.org/ubuntu/ lucid varnish-3.0
sudo apt-get update
sudo apt-get install varnish
Step Two – Confugure Varnish
Vernish sits in front of Apache so it can deteremine if page needs to be fetched from apache or cached page can be delivered. So we need to configure Varnish to listen on port 80 and apache on other port like 8080.
So open varnish config file and make chnages as mentioned.
sudo nano /etc/default/varnish
Uncomment all of the lines under “DAEMON_OPTS”—under Alternative 2, and make the configuration match the following code:
DAEMON_OPTS=”-a :80 \
-T localhost:6082 \
-f /etc/varnish/default.vcl \
-S /etc/varnish/secret \
-s malloc,256m”
Save and exit out of that file and move default_3.0.vcl file from Magento Varnich extension folder app\code\community\Phoenix\VarnishCache\etc\default_3.0.vcl to /etc/varnish/default.vcl and Open it for editing ports as below-
Configuration shall look like below in vcl file
backend default {
.host = “127.0.0.1”;
.port = “8080”;
}
backend admin {
.host = “127.0.0.1”;
.port = “8080”;
.first_byte_timeout = 18000s;
.between_bytes_timeout = 18000s;
}
Step Three—Configure Apache Server
As Varnish listens on port 80 we make apache to listen on 8080 so varnish can request content from apache is it needed refresh and cached copy cannot be used.
Open apache ports config file with following command
sudo nano /etc/apache2/ports.conf
Change the port number for both the NameVirtualHost and the Listen line to port 8080, and the virtual host should only be accessible from the localhost. The configuration should look like this:
NameVirtualHost 127.0.0.1:8080
Listen 127.0.0.1:8080
We also need to update default virtual host file, so open it with following command
sudo nano /etc/apache2/sites-available/default
The Virtual Host shall be set to port 8080 like below-
<VirtualHost 127.0.0.1:8080>
Now we need to restart apache and Varnish so changes take effect.
sudo service apache2 restart
sudo service varnish restart