Back-End

26 set, 2012

Guia para configurar o WordPress Multisite – Parte 02

Publicidade

Configurar o WordPress Multisite, também conhecido como WordPress MU ou simplesmente WordPress Multiblog, pode em alguns casos ser uma dor de cabeça; isso devido, principalmente, às configurações dos servidores web que servem os pedidos ao WordPress. Nesta parte, não vamos ainda olhar as soluções para montar ou escalar uma rede com muitos blogs – estamos ainda a dar os passos iniciais!

Durante esta série de artigos iremos:

  • Ensinar como ligar facilmente a opção de Multisite no WordPress e o que fazer após a instalação do Multisite ser concluída;
  • Abordar soluções de plugins testados que podem ajudá-lo no desenvolvimento do seu projecto para criar facilmente a sua rede de blogs;
  • Desenvolver snippets de códigos e mostrar o “canivete suíço” de funções exclusivas do WordPress Multisite;
  • Abordar várias soluções de configuração e ambientes de trabalho: desde o servidor web Apache ao servidor Nginx, passando por outras soluções de roteamento estático, tais como o servidor lighttpd;
  • Abordar as soluções de cache em memória, usando memcached ou APC, assim como soluções de cache persistente estáticas em disco, para acelerar a sua rede e evitar ligações perdidas;
  • Aumentar o poder da sua instalação WordPress Multisite, de modo a poder aceitar mais ligações simultâneas sem perda de performance dos seus sites;
  • Escalar a sua rede para usar multiplas bases de dados e aumentar o poder da sua rede;
  • Como estruturar e manter uma rede com mais de um milhão de blogs;
  • Mostrar soluções encontradas para problemas com o Multisite;
  • Desenvolver teoricamente configurações de rede Multisite para várias soluções de mercado;

Parte 02: configurações do servidor e performance

Na primeira parte desta série abordamos questões relacionadas à instalação do WordPress Multisite em vários ambientes e configurações. Nesta parte, iremos tratar de como configurar o nosso servidor para tirar o maior proveito dele, aumentar a sua performance e escalar a nossa instalação para receber múltiplas conexões no nosso servidor sem perder ligações ou diminuir a velocidade.

Cache persistente versus cache dinâmica

Existem vários tipos de cache em um único servidor. É fácil verificar que a cache, genericamente falando, é parte essencial num serviço/ servidor de alojamento de websites. Para quem não sabe, um sistema de cache é um pequeno programa que vai guardando em memória, seja ela disco rígido ou RAM, os resultados de usos anteriores de um determinado website, de forma que, em uma próxima chamada desse conteúdo, o tempo de carregamento do website seja mais rápido e aceite mais conexões simultâneas do que se o site fosse carregado da maneira usual, isto é, iniciando o WordPress, fazendo as chamadas ao banco de dados e fazendo e apresentado a página prontinha para o usuário.

Temos que saber que, quando estamos usando um sistema multisite, aumentamos consideravelmente o carregamento do servidor, pois colocamos mais sites em uma única rede/ máquina.

  • Cache persistente:

Chamamos de “cache persistente” aquela que é guardada permanentemente no disco rígido, ou na memória, para que seja usada por todas as chamadas ao conteúdo indexado em cache. Desta forma, quando um usuário chama uma página ou artigo qualquer de um website feito em WordPress, o servidor vai correr todos os scripts PHP  e chamar o banco de dados. No entanto, o sistema de cache persistente irá guardar todos os resultados finais em memória, para que seja reutilizado por outro usuário que chame a mesma página. Desta forma, diminuimos muito o tempo de carregamento do servidor.

  • Cache dinâmica:

É um tipo de cache que permanece apenas durante o tempo de carregamento do website e, no final, quando é feito a apresentação dos resultados da página, a cache é limpa. Isto pode parecer estranho lido assim, no entanto é de fácil compreensão se formos analisar em concreto como o WordPress funciona por dentro. Em cada chamada a uma página, o WordPress instância e guarda na memória muitas variáveis e objetos para serem usados na construção da página pedida. Este carregamento dinâmico, no entanto, recria inúmeras vezes muitas rotinas internas; uma delas é o fato de que, em média, o WordPress faz vinte chamadas ao banco de dados por carregamento. Se o WordPress não usasse um sistema de cache dinâmico interno, este número poderia subir para cem, o que iria atrasar – e muito – a apresentação de um website. O que o WordPress faz, basicamente, é guardar em memória, em um array PHP os resultados às queries do banco de dados.

Soluções de cache para WordPress Multisite

Quase todos já ouviram falar em plugins de cache para o WordPress, tais como o W3 Total Cache e o WP Super Cache e muitos usam em seus blogs e websites para acelerar e aumentar a performance. No entanto, em Multisite o problema de cache é uma questão de fundo muito importante e que não pode ser simplesmente resolvida com plugins de cache.

O WordPress Multisite necessita de um sistema de cache avançado implementado no servidor e não de um plugin de cache! Tenha sempre isto em mente, principalmente se você for construir uma rede com vários blogs em uma única instalação Multisite.

Quase todo mundo irá trabalhar em uma plataforma LAMP, isto é Linux, servidor web Apache, banco de dados MySQL e PHP. Deste jeito você terá várias soluções possíveis – a maior parte complicada, mas há algumas bastante simples. Para combater o problema de cache do Multisite iremos usar o memcached e o PHP-APC. Estas são duas soluções de cache dinâmicas e persistentes mais eficazes para o nosso projeto.

O memcached é um sistema de cache distribuido que roda como daemon em linux. Basicamente, ele irá guardar e gerir na memória RAM conteúdos diversos. Vários serviços Linux, incluíndo o mysqld e o httpd, usam-no para guardar informações relevantes. O que vamos fazer é instalá-lo para fazer cache desses serviços. O PHP-APC, tal como o nome indica, é um sistema de cache exclusivo para o PHP. Ele faz exatamente o mesmo que o memcached, no entanto é mais benéfico para PHP, pois não roda como daemon. Ele está intimamente ligado ao PHP fazendo com que não haja delays nas respostas. Vamos usar o PHP-APC para fazer cache de tudo o que vem do WordPress. Para isso, ligando o terminal SSH do seu servidor, digite o comando:

sudo apt-get install memcached php-apc pecl-php-apc

Talvez seja preciso retirar alguns serviços, tais como o php-eaccelarator. Depois de tudo instalado, digitamos os seguintes comandos:

service httpd restart; service memcached start

Pronto! Já tem o sistema de cache que precisamos.

A ligação do WordPress Multiuse com o PHP-APC

Neste momento, apenas precisamos arranjar uma ligação entre a solução de cache interna do WordPress e o PHP-APC. Para isso, vamos ter que criar e descarregar alguns arquivos:

  • Plugin Batcache: Este pequeno plugin de cache é usado como solução de cache para Multisite noWordPress.com. Ela irá fazer cache dos resultados gerados pelo WordPress durante três minutos e depois irá refazê-los, se necessário. Tem a particularidade de só ser usado quando existe um pico de visitantes ao servidor, o que ajuda a manter o conteúdo sempre atualizado.
  • APC Object Cache: Este plugin é o que vai ligar o WordPress ao PHP-APC e guardar na memória RAM todos os resultados, tanto do Batcache como da cache interna do WordPress.

Instalar o Batcache:

Quando descarregar o pacote do Batcache, você irá visualizar dois arquivos PHP importantes: advanced-cache.php e o batcache.php. Descarregue-os em seu ambiente de trabalho e proceda da seguinte maneira:

  • Crie uma diretoria chamada mu-plugins dentro da diretoria wp-content e coloque lá dentro o arquivo batcache.php. Para quem desconhece, todos os arquivos PHP incluídos nesta diretoria serão carregados automaticamente pelo WordPress;
  • Guarde o arquivo advanced-cache.php no wp-content;
  • Edite o arquivo wp-config.php e coloque o seguinte código: define(‘WP_CACHE’, true);

Instalar o APC:

Este é o mais simples: se você descarregar o zip do site, terá apenas o arquivo object-cache.php. Coloque-o juntamente com o advanced-cache.php na diretoria wp-content.

Testando as configurações

Para testar se esta configuração está funcionando, você deverá abrir uma janela do browser anônima e entrar no seu site. Faça o recarregamento do site várias vezes e analise o seu código fonte.

Se esta informação lhe aparecer, então quer dizer que neste momento você terá o WordPress Multisite rodando com um sistema de cache que lhe aumenta bastante a performance. Num próximo artigo da série iremos falar sobre como expandir ainda mais esta solução usando Nginx e PHP-FPM.

Um abraço e até breve!