Como instalar Varnish Cache no CPANEL (WHM) com CentOS

Escrito por

em

É muito simples fazer essa instalação, só precisa de atenção ao copiar os códigos e nas versões dos programas utilizados.

O CentOS que estou utilizando está na versão 6.9, o CPANEL (WHM) 66.0.24 e o Varnish Cache 5.2.0.

Para você que ainda está se perguntando, mas o que é Varnish Cache? Em poucas palavras ele é um acelerador web ou um proxy reverso http, que aumentará significativamente o desempenho do seu projeto, seja site, ecommerce ou sistema.

Basicamente o Varnish, armazena uma cópia da página solicitada pelo servidor web a primeira vez que o usuário visita essa página. Na próxima vez que o usuário solicitar a mesma página, o Varnish será consultado ao invés do servidor web. Isso significa que seu servidor web, irá lidar com menos tráfego, desempenho e escalabilidade, deixando seu projeto até 300x mais rápido.

Depois de toda explicação do meu ambiente e o que é esse tal de varnish, vamos implementa-ló?

Como instalar o Varnish Cache?

1. Configurar apache para ouvir outra porta;

O primeiro passo é alterar a porta padrão que o servidor web escuta, nesse caso estamos utilizando o apache, vamos alterar para a porta 8080, você pode fazer de duas formas, com o comando abaixo:

[sourcecode language=”bash”]
vi /etc/httpd/conf/httpd.conf
[/sourcecode]

Ou acessando o painel do WHM, do lado direito, Configuração do Servidor -> Ajustar configurações, no campo de pesquisa, procurar por Apache non-SSL IP/port e alterar para 0.0.0.0:8080

2. Instalar o Varnish Cache;

Depois de alterado vamos iniciar a instalação do Varnish:

[sourcecode language=”bash”]
yum install varnish
[/sourcecode]

Caso de algum erro iremos precisar instalar manualmente com o comando abaixo:

[sourcecode language=”bash” wraplines=”1″]
curl -s https://packagecloud.io/install/repositories/varnishcache/varnish5/script.rpm.sh | sudo bash
[/sourcecode]

Ou com esse código:

[sourcecode language=”bash”]
#!/bin/bash

unknown_os ()
{
echo "Unfortunately, your operating system distribution and version are not supported by this script."
echo
echo "You can override the OS detection by setting os= and dist= prior to running this script."
echo "You can find a list of supported OSes and distributions on our website: https://packagecloud.io/docs#os_distro_version"
echo
echo "For example, to force CentOS 6: os=el dist=6 ./script.sh"
echo
echo "Please email [email protected] and let us know if you run into any issues."
exit 1
}

curl_check ()
{
echo "Checking for curl…"
if command -v curl > /dev/null; then
echo "Detected curl…"
else
echo "Installing curl…"
yum install -d0 -e0 -y curl
fi
}

detect_os ()
{
if [[ ( -z "${os}" ) && ( -z "${dist}" ) ]]; then
if [ -e /etc/os-release ]; then
. /etc/os-release
os=${ID}
if [ "${os}" = "poky" ]; then
dist=`echo ${VERSION_ID}`
elif [ "${os}" = "sles" ]; then
dist=`echo ${VERSION_ID}`
elif [ "${os}" = "opensuse" ]; then
dist=`echo ${VERSION_ID}`
else
dist=`echo ${VERSION_ID} | awk -F ‘.’ ‘{ print $1 }’`
fi

elif [ `which lsb_release 2>/dev/null` ]; then
# get major version (e.g. ‘5’ or ‘6’)
dist=`lsb_release -r | cut -f2 | awk -F ‘.’ ‘{ print $1 }’`

# get os (e.g. ‘centos’, ‘redhatenterpriseserver’, etc)
os=`lsb_release -i | cut -f2 | awk ‘{ print tolower($1) }’`

elif [ -e /etc/oracle-release ]; then
dist=`cut -f5 –delimiter=’ ‘ /etc/oracle-release | awk -F ‘.’ ‘{ print $1 }’`
os=’ol’

elif [ -e /etc/fedora-release ]; then
dist=`cut -f3 –delimiter=’ ‘ /etc/fedora-release`
os=’fedora’

elif [ -e /etc/redhat-release ]; then
os_hint=`cat /etc/redhat-release | awk ‘{ print tolower($1) }’`
if [ "${os_hint}" = "centos" ]; then
dist=`cat /etc/redhat-release | awk ‘{ print $3 }’ | awk -F ‘.’ ‘{ print $1 }’`
os=’centos’
elif [ "${os_hint}" = "scientific" ]; then
dist=`cat /etc/redhat-release | awk ‘{ print $4 }’ | awk -F ‘.’ ‘{ print $1 }’`
os=’scientific’
else
dist=`cat /etc/redhat-release | awk ‘{ print tolower($7) }’ | cut -f1 –delimiter=’.’`
os=’redhatenterpriseserver’
fi

else
aws=`grep -q Amazon /etc/issue`
if [ "$?" = "0" ]; then
dist=’6′
os=’aws’
else
unknown_os
fi
fi
fi

if [[ ( -z "${os}" ) || ( -z "${dist}" ) ]]; then
unknown_os
fi

# remove whitespace from OS and dist name
os="${os// /}"
dist="${dist// /}"

echo "Detected operating system as ${os}/${dist}."
}

finalize_yum_repo ()
{
echo "Installing pygpgme to verify GPG signatures…"
yum install -y pygpgme –disablerepo=’varnishcache_varnish5′
pypgpme_check=`rpm -qa | grep -qw pygpgme`
if [ "$?" != "0" ]; then
echo
echo "WARNING: "
echo "The pygpgme package could not be installed. This means GPG verification is not possible for any RPM installed on your system. "
echo "To fix this, add a repository with pygpgme. Usualy, the EPEL repository for your system will have this. "
echo "More information: https://fedoraproject.org/wiki/EPEL#How_can_I_use_these_extra_packages.3F"
echo

# set the repo_gpgcheck option to 0
sed -i” ‘s/repo_gpgcheck=1/repo_gpgcheck=0/’ /etc/yum.repos.d/varnishcache_varnish5.repo
fi

echo "Installing yum-utils…"
yum install -y yum-utils –disablerepo=’varnishcache_varnish5′
yum_utils_check=`rpm -qa | grep -qw yum-utils`
if [ "$?" != "0" ]; then
echo
echo "WARNING: "
echo "The yum-utils package could not be installed. This means you may not be able to install source RPMs or use other yum features."
echo
fi

echo "Generating yum cache for varnishcache_varnish5…"
yum -q makecache -y –disablerepo=’*’ –enablerepo=’varnishcache_varnish5′
}

finalize_zypper_repo ()
{
zypper –gpg-auto-import-keys refresh varnishcache_varnish5
}

main ()
{
detect_os
curl_check

yum_repo_config_url="https://packagecloud.io/install/repositories/varnishcache/varnish5/config_file.repo?os=${os}&dist=${dist}&source=script"

if [ "${os}" = "sles" ] || [ "${os}" = "opensuse" ]; then
yum_repo_path=/etc/zypp/repos.d/varnishcache_varnish5.repo
else
yum_repo_path=/etc/yum.repos.d/varnishcache_varnish5.repo
fi

echo "Downloading repository file: ${yum_repo_config_url}"

curl -sSf "${yum_repo_config_url}" > $yum_repo_path
curl_exit_code=$?

if [ "$curl_exit_code" = "22" ]; then
echo
echo
echo -n "Unable to download repo config from: "
echo "${yum_repo_config_url}"
echo
echo "This usually happens if your operating system is not supported by "
echo "packagecloud.io, or this script’s OS detection failed."
echo
echo "You can override the OS detection by setting os= and dist= prior to running this script."
echo "You can find a list of supported OSes and distributions on our website: https://packagecloud.io/docs#os_distro_version"
echo
echo "For example, to force CentOS 6: os=el dist=6 ./script.sh"
echo
echo "If you are running a supported OS, please email [email protected] and report this."
[ -e $yum_repo_path ] && rm $yum_repo_path
exit 1
elif [ "$curl_exit_code" = "35" -o "$curl_exit_code" = "60" ]; then
echo
echo "curl is unable to connect to packagecloud.io over TLS when running: "
echo " curl ${yum_repo_config_url}"
echo
echo "This is usually due to one of two things:"
echo
echo " 1.) Missing CA root certificates (make sure the ca-certificates package is installed)"
echo " 2.) An old version of libssl. Try upgrading libssl on your system to a more recent version"
echo
echo "Contact [email protected] with information about your system for help."
[ -e $yum_repo_path ] && rm $yum_repo_path
exit 1
elif [ "$curl_exit_code" -gt "0" ]; then
echo
echo "Unable to run: "
echo " curl ${yum_repo_config_url}"
echo
echo "Double check your curl installation and try again."
[ -e $yum_repo_path ] && rm $yum_repo_path
exit 1
else
echo "done."
fi

if [ "${os}" = "sles" ] || [ "${os}" = "opensuse" ]; then
finalize_zypper_repo
else
finalize_yum_repo
fi

echo
echo "The repository is setup! You can now install packages."
}

main
[/sourcecode]

 

3. Editar as configurações do Varnish Cache;

[sourcecode]vi /etc/sysconfig/varnish[/sourcecode]

Iremos configurar o Varnish para escutar a porta 80, ficando assim: VARNISH_LISTEN_PORT=80

[sourcecode]vi /etc/varnish/default.vcl[/sourcecode]

Com o comando acima, iremos configurar o proxy, com o IP dedicado do seu servidor e a porta do servidor web (apache), deverá ficar da seguinte forma:

[sourcecode]
backend default {
.host = "184.82.165.4";
.port = "8080";
}
[/sourcecode]

4. Iniciar o serviço do Varnish Cache;

[sourcecode]
chkconfig varnish on
service varnish start
[/sourcecode]

5. Fim :D;

Se você chegou até aqui é porque deu tudo certo, ou ao menos esperamos né, hehe…

Para monitorar o seu Varnish Cache utilize o comando:

[sourcecode] varnishstat [/sourcecode]

Dúvidas?

Espero que este tutorial tenha ajudado você a instalar o Varnish Cache no CPANEL (WHM). Como sempre, se você achou esta postagem útil, inscreva-se em nossa newsletter gratuita ou siga-nos no Instagram @douglasvillar, conecte comigo no Linkedin e curta nossa página no Facebook.

Comentários

Uma resposta para “Como instalar Varnish Cache no CPANEL (WHM) com CentOS”

  1. Avatar de Kim
    Kim

    Muito bom seu artigo. Me explica como faria para que ele aparecesse na página de plugins do WHM ? Tipo.. para fazer alterações na configuração sem ser pelo SSH?

Deixe um comentário

O seu endereço de e-mail não será publicado. Campos obrigatórios são marcados com *

Este site utiliza o Akismet para reduzir spam. Saiba como seus dados em comentários são processados.