terça-feira, 23 de dezembro de 2014

INSTALAÇÃO VARNISH 3.0 UBUNTU C/ DRUPAL

INSTALAÇÃO VARNISH 3.0 UBUNTU C/ DRUPAL

Varnish-cache no Ubuntu para sites Drupal


   Vejamos como instalar o Varnish 3.0 para agilizar o Drupal. Encontrei muita informação desnecessária que faz você viajar 40 anos no deserto pra achar a terra prometida, enquanto que, precisamos ir direto ao assunto sem muitos detalhes acadêmicos. Daí, resolví publicar o passo-a-passo juntando tudo o que interessa pra fazer o Varnish rodar com o Drupal sem muito estudo.

   Os sites em Drupal são ótimos, mas pesados. O ideal é rodar o site em um provedor VPS para agilizar a reenderização; utilizar caches etc. Usar um servidor VPS com o Varnish já melhora 10x a velocidade do seu site feito em Drupal. No meu caso, a velocidade do carregamento do site caiu de 60´ para 6´. Ninguém gosta de sites lentos, então vamos lá.

   Você precisa de acesso SSH (Secure Shell) a um servidor VPS. Eu tenho um na Dreamhost que roda na plataforma Ubuntu 12Lts.

   Faça login no seu painel da Dreamhost. Então, você precisa criar um superusuário VPS > Admin Users > Add a new admin user

   Faça login via SSH. Pode usar o Putty para utilizar as seguintes linhas de comando.

Siga esses passos para instalar o Varnish 3.0 no servidor Ubuntu via Secure Shell (SSH):
  1. sudo su
  2. apt-get install apt-transport-https
  3. curl https://repo.varnish-cache.org/ubuntu/GPG-key.txt | apt-key add -
  4. echo "deb https://repo.varnish-cache.org/ubuntu/ precise varnish-3.0" >> /etc/apt/sources.list.d/varnish-cache.list
  5. apt-get update
  6. apt-get install varnish
Se deu tudo certo, o Varnish já está rodando no seu servidor.

   Agora você precisa configurar o módulo Varnish do Drupal com a chave secreta.
  Vai precisar ler o conteúdo do arquivo "secret" que está na pasta "/etc/varnish". Execute a seguinte linha de comando shell:
vim /etc/varnish/secret
   Pronto! Agora vá em admin/settings/varnish configurar o Varnish na página de administração do Drupal. Coloque esse código que você viu no arquivo /etc/varnish/secret no campo VARNISH CONTROL KEY. Salve e veja a mensagem "Server OK: 127.0.0.1:6082 Varnish running.".
-------------------------------------------x-x--------------------------------------------------------

  Você verá que o Drupal vai dizer que o Varnish está rodando normalmente. Entretanto, existem outras configurações que a fazer que não sei se são realmente necessárias e que podem deixar o seu servidor fora do ar por mal configuração. Isto porque existem várias plataformas (Ubuntu, Red hat, Debian, Ngix etc) e nelas várias configurações. Dificilmente se ensina o que temos que fazer, facilmente encontramos várias "receitas de bolo" que não servem para o nosso caso. Todavia, vou colocar aqui essas informações assim mesmo. Siga-as por sua própria conta e risco. No meu caso deu tudo errado e precisei solicitar o suporte técnica para restaurar a minha conta ao padrão original.

Veja em que porta o seu servidor está respondendo o protocolo HTTP. No caso o meu servidor VPS está na porta 80. Então, precisamos configurar o Varnish para escutar a porta certa editando o arquivo /etc/varnish/default.vcl

Abra o arquivo default.vcl com o editor VIM:

cd /etc/varnish
vim default.vcl

Encontre:
backend default {
      .host = "127.0.0.1";
      .port = "8080";
}
e deixe assim:
## Redirect requests to Apache, running on port 8000 on localhost
         backend apache {
                 .host = "127.0.0.1";
                 .port = "8000";
        }
## Fetch
sub vcl_fetch {
## Remove the X-Forwarded-For header if it exists.
         remove req.http.X-Forwarded-For;
## insert the client IP address as X-Forwarded-For. This is the normal IP address of the user.set    req.http.X-Forwarded-For = req.http.rlnclientipaddr;  
## Added security, the "w00tw00t" attacks are pretty annoying so lets block it before it reaches our webserver
         if (req.url ~ "^/w00tw00t") {
             error 403 "Not permitted";
         }
## Deliver the content
         return(deliver);
         }
## Deliver
sub vcl_deliver {
## We'll be hiding some headers added by Varnish. We want to make sure people are not seeing we're using Varnish.
## Since we're not caching (yet), why bother telling people we use it?
        remove resp.http.X-Varnish;
        remove resp.http.Via;
        remove resp.http.Age;
## We'd like to hide the X-Powered-By headers. Nobody has to know we can run PHP and have version xyz of it.
        remove resp.http.X-Powered-By;
}

   Depois salve o arquivo. Para isso, tecle Esc para entrar em modo de comando do VIM, então digite : (esse sinal de dois pontos indica que o que segue é um comando do VIM) e wq
  O comando w quer dizer write (salvar) e o q (quit) abandonar. Isto é, salva e sai.
   Caso você tenha bagunçado o arquivo e precise sair sem salvar, então tecle Esc :q!
   Resumindo:
Instale o apache2
 apt-get install libapache2-mod-rpaf
Deixe o Apache2 escutando a mesma porta do Varnish. Execute o comando:
vim /etc/apache2/ports.conf
Então você vai alterar as seguintes linhas assim:

NameVirtualHost *:80
Listen 80

Para:
NameVirtualHost *:8000
Listen 127.0.0.1:8000

NameVirtualHost *:8000 has no VirtualHosts. Para evitar esse erro, antes de reiniciar os serviços varnish e httpd2 você tem que mudar a configuração dos vhosts assim:
<VirtualHost *:80>
Para:
<VirtualHost *:8000>
Mas que bendito é vhosts? Bem, no meu caso fui achar arquivos com estas strings (palavras) no seguinte arquivo:
  • /dh/apache2/apache2-psXXXXX/etc/httpd.conf
Onde "psXXXXX" é o nome do seu servidor VPS na Dreamhost.
Edite com o vim: vim /dh/apache2/apache2-psXXXXX/etc/httpd.conf

Feitas as alterações agora sim você vai precisar reiniciar o Varnish e o Apache2. Execute a seguinte linha de comando:
 sudo /etc/init.d/varnish restart
 sudo /etc/init.d/httpd2 restart
Com o mouse copie e cole o código do arquivo "secret" no campo de configuração do Varnish do Drupal; Deixe o Varnish versão 3.0 e Ban-Lurker. Não precisa mexer em mais nada. Salve e veja que o Varnish está executando.

Caso você precise apagar o cache do Varnish (Varnish flush cache) você pode usar o comando:
varnishadm -T 127.0.0.1:6082 url.purge


Algumas fontes consultadas:
https://www.varnish-cache.org/installation/ubuntu
http://www.tecmint.com/install-varnish-cache-web-accelerator/
http://www.howtoforge.com/putting-varnish-in-front-of-apache-on-ubuntu-debian

Nenhum comentário:

Postar um comentário