Configurar o WordPress Multisite, também conhecido como WordPress MU ou simplesmente WordPress Multiblog, pode em alguns casos ser uma dor de cabeça devido principalmente às configurações dos servidores web que servem os pedidos ao WordPress. Nesta primeira parte da série iremos abordar como facilmente ligar e instalar a opção Multisite do WordPress tentando abordar todo o tipo de configurações que o seu servidor possa deter incluindo diferentes ambientes e servidores. 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 tutoriais iremos:

  • Ensinar como ligar facilmente a opção de Multisite no WordPress e o que fazer após a instalação do Multisite concluída;
  • Abordar soluções de plugins testados que podem ajudá-lo no desenvolvimento do seu projecto para criar facilmente a sua rede de blogues;
  • 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 routeamento 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 1 milhão de blogues;
  • Mostrar soluções encontradas para problemas com o Multisite;
  • Desenvolver teoricamente configurações de rede Multisite para várias soluções de mercado;

PARTE II – CONFIGURAÇÕES DO SERVIDOR E PERFORMANCE

Na primeira parte desta série abordámos questões relacionadas com a 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 ao nosso servidor sem perder ligações ou diminuir a velocidade.

CACHE PERSISTENTE VS. CACHE DINÂMICA

Existem vários tipos de cache num ú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 duro ou RAM, os resultados de usos anteriores de um determinado website, por forma a que, numa próxima chamada desse conteúdo, o tempo de carregamento do website seja mais rápido e aceite mais conexões simultâneas 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 ter em atenção que, quando estamos a usar um sistema multisite, estamos a aumentar consideravelmente o carregamento do servidor, pois estamos a colocar mais sites numa única rede / máquina.

Cache Persistente:

Chamamos “Cache Persistente” à cache que é guardada permanentemente no disco duro 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 estamos a diminuir imenso 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 várias variáveis e objetos para serem usados na construção da página pedida. Este carregamento dinâmico no entanto recria inumeras vezes várias rotinas internas, uma delas é o facto de que, em média o WordPress faz 20 chamadas ao banco de dados por carregamento. Se o WordPress não usasse um sistema de cache dinâmico interno, este número poderia passar para perto das 100 chamadas, o que iria atrasar em muito a apresentação de um website. O que o WordPress faz, basicamente é guardar em memória, num 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çada, 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 numa única instalação multisite.

Soluções de cache para WordPress Multisite:

Quase todo o mundo irá trabalhar numa 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 complicadas 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

Pode ter que retirar alguns serviços tais como o php-eaccelarator. Depois de tudo instalado digitamos os seguintes comandos:

service httpd restart; service memcached start

E prontinho! Já tem o sistema de cache que precisamos a funcionar.

A LIGAÇÃO DO WORDPRESS MULTISITE COM O PHP-APC

Neste momento apenas precisamos de 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 ficheiros:

  • Plugin Batcache: Este pequeno plugin de cache é usado como solução de cache para multisite no WordPress.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 ficheiros PHP importantes: advanced-cache.php e o batcache.php. Descarregue esses ficheiros para o 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 ficheiro batcache.php. Para quem desconhece, todos os ficheiros PHP incluidos nesta diretoria serão carregados automaticamente pelo WordPress.
  • Guarde o ficheiro advanced-cache.php no wp-content.
  • Edite o ficheiro 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 ficheiro 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 irá entrar no seu site. Faça o recarregamento do seu 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 a rodar 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!