Introduction
Varnish is an HTTP accelerator and a useful tool to speed up web servers which serve very high traffic websites or web apps. We are going to install Varnish as a cache server for Apache because unlike Nginx, Apache doesn’t have any static or dynamic caching ability or module. Varnish is one of the most popular cache server applications, it’s very easy to install and configure and has both static and dynamic caching ability.
We are assuming that you have root permission, otherwise, you may start commands with “sudo”.
Install and configure Apache
Install Apache 2 with the command below:
yum install httpd
When the installation is finished, open the Apache configuration with your favorite text editor:
nano /etc/httpd/conf/httpd.conf
Now you have to change the Apache listening port to “8080”, find the line that starts with “Listen” and change it like below:
Listen 8080
Save and exit.
Enable and restart your Apache service to take effect:
systemctl enable httpd
systemctl restart httpd
Install Varnish
We are going to install the latest version of varnish which is 5.1 at the time of writing.
In order to install the latest version, we have to download the source and compile it.
You have to install some dependencies to compile the Varnish:
yum install autoconf automake libedit-devel libtool ncurses-devel pcre-devel pkgconfig python-docutils python-sphinx
Now you can download the Varnish from the repository:
wget http://repo.varnish-cache.org/source/varnish-5.1.2.tar.gz
Extract the “tar.gz” file with the command below:
tar xvzf varnish-5.1.2.tar.gz
Switch to the extracted directory and start compiling:
cd varnish-5.1.2
Run the following commands one by one:
sh autogen.sh
sh configure
make
make install
ldconfig
Create Varnish 5.1 Service
In this section, we are going to create a “systemd” service for Varnish but first, we have to create a directory in order to store default configuration of Varnish
Make a directory named “varnish” in your “etc”:
cd
mkdir /etc/varnish
Now you can paste the default configuration from the source in the above directory with the command below:
mv varnish-5.1.2/etc/example.vcl /etc/varnish/default.vcl
Then create a service file with your text editor in the following path:
nano /etc/systemd/system/varnish.service
Paste the following script in the file then save and exit:
[Unit]
Description=Varnish HTTP accelerator
[Service]
Type=forking
LimitNOFILE=131072
LimitMEMLOCK=82000
ExecStartPre=/usr/local/sbin/varnishd -f /etc/varnish/default.vcl
ExecStart=/usr/local/sbin/varnishd -a :80 -b localhost:8080
ExecReload=/usr/share/varnish/reload-vcl
[Install]
WantedBy=multi-user.target
Run the following command to take effect:
systemctl daemon-reload
Finally, your Varnish 5.1 has a “systemd” service and you can control it with the following commands:
systemctl enable varnish
systemctl start varnish
systemctl status varnish
systemctl restart varnish
Testing Varnish
To make sure that your Varnish is working properly you can use the “curl” command:
curl -I localhost
Search for the following lines in the output:
X-Varnish: 2
Via: 1.1 varnish (Varnish/5.1)
You can visit Varnish official website for more information and news!