O armazenamento em cache é um recurso indispensável da hospedagem de aplicativos econômica e de experiências de usuário rápidas e de baixa latência. O cache na memória é uma das técnicas mais usadas, e os recursos de cache na memória do Memcached são usados por milhares de desenvolvedores, provedores de hospedagem e gigantes de serviços da web como Facebook®, Shopify® e Slack®.
Neste artigo, exploramos como o Memcached funciona e como você pode integrá-lo a aplicativos PHP hospedados em seu servidor cPanel e WHM.
Antes de começarmos, um aviso: o método descrito aqui deve ser usado apenas em servidores dedicados de um único locatário, como cPanel solo e hospedagem de servidor virtual. Não é adequado para ambientes de hospedagem compartilhada multilocatário sem configuração adicional para habilitar autenticação ou criptografia.
O que é Memcached?
O Memcached é um sistema de cache de objetos. Ele é usado principalmente para armazenar em cache os resultados de consultas de banco de dados, ajudando sites dinâmicos como WordPress® e Drupal a veicular páginas mais rapidamente. Ele também pode diminuir significativamente o uso de recursos em um servidor Web ocupado, reduzindo as chamadas para o banco de dados.
Como todos os caches, o Memcached armazena dados gerados por uma operação cara para que possam ser usados novamente sem repetir a operação. Por exemplo, para construir uma página da web, um aplicativo PHP geralmente precisa consultar um banco de dados relacional como o MySQL. Os bancos de dados relacionais geralmente armazenam dados em um disco rígido ou SSD, ambos lentos em comparação com a RAM do servidor. O Memcached coloca os dados mais usados na RAM, permitindo que eles sejam acessados muito mais rapidamente.
O armazenamento em cache com o Memcached funciona assim:
- Um navegador da Web solicita uma página e o servidor executa o código PHP para construí-la.
- O PHP solicita ao Memcached os dados da página por meio de uma extensão do Memcached.
- Se os dados estiverem armazenados em cache, eles serão enviados de volta ao PHP.
- Se não estiver armazenado em cache, o Memcached envia a consulta ao banco de dados, retorna os dados ao PHP e os armazena para a próxima solicitação.
Quando seu armazenamento alocado está cheio, o cache descarta os dados LRU (menos usados recentemente). Os itens no cache também têm uma data de expiração para que os dados obsoletos sejam removidos.
Agora que entendemos o que o Memcached faz, vamos ver como instalá-lo e configurá-lo em um servidor web cPanel que hospeda aplicativos PHP como WordPress, Drupal e Adobe Commerce (anteriormente Magento).
Instalar e configurar o Memcached no cPanel
Antes de começarmos, vamos dar uma olhada no que faremos para colocar o Memcached em funcionamento com aplicativos PHP hospedados em seu servidor. O plano é:
- Instale o daemon Memcached (um daemon é um software executado em segundo plano).
- Configure o daemon para funcionar com segurança. A configuração padrão não é segura.
- Instale as extensões PHP do EasyApache4 Memcached.
- Teste para ter certeza de que está funcionando conforme o esperado.
- Configure aplicativos PHP para usar o cache.
Primeiro, instalaremos o daemon Memcached, o software que armazena em cache os objetos PHP na memória. Faça login no seu servidor com SSH e execute o seguinte como usuário root:
yum install memcached
Em seguida, registraremos o Memcached com o gerenciador de serviços Systemd do CentOS para que possamos controlar quando ele inicia e para.
systemctl enable memcached
Criando uma configuração segura do Memcached
O Memcached não possui recursos de segurança integrados, e é por isso que não é uma boa ideia usá-lo em plataformas de hospedagem compartilhada. Sua configuração padrão aceita conexões de todos na internet, uma vulnerabilidade frequentemente explorada em ataques distribuídos de negação de serviço . Adicionaremos algumas opções de inicialização para criar uma configuração mais segura.
Abra o arquivo de configuração em seu editor de texto preferido.
nano /etc/sysconfig/memcached
Edite a última linha do arquivo para que leia:
OPTIONS="-l 127.0.0.1 -U 0"
A opção “-l 127.0.0.1” liga o Memcached à interface de rede local. A opção -U desativa o protocolo UDP, que é comumente usado em ataques DDoS.
Enquanto temos o arquivo de configuração aberto, também podemos alterar a quantidade de memória disponível para armazenamento em cache. O padrão é 64 megabytes, mas você pode alterá-lo editando a opção CACHESIZE neste arquivo. Por exemplo, para dobrar a memória disponível, altere a linha para ler:
CACHESIZE="128"
Salve o arquivo e estamos prontos para iniciar (ou reiniciar) o daemon com a configuração segura:
systemctl restart memcached
Como instalar extensões PHP do Memcached no cPanel
Precisamos instalar as extensões do PHP EasyApache4 Memcached. O PHP não suporta o Memcached nativamente, e as extensões permitem que eles trabalhem juntos. Algumas informações ajudarão você a entender o que estamos prestes a fazer:
- Existem duas extensões do PHP Memcached, chamadas confusamente de “memcached” e “memcache”. Existem algumas diferenças, mas eles fazem essencialmente o mesmo trabalho. Instalaremos ambos.
- As versões do PHP precisam de uma extensão correspondente, portanto, se você usar várias versões do PHP em seu servidor, deverá instalar extensões para cada uma.
Poderíamos instalar as extensões na linha de comando com “yum”, mas é mais fácil instalar as corretas no WHM.
No menu da barra lateral WHM , selecione EasyApache 4 na seção Software . Clique no botão Personalizar em Pacotes Instalados Atualmente .
Selecione a guia Extensões PHP e procure por “memcached”. O cPanel mostra as extensões para as versões instaladas do PHP. Clique no botão naqueles que você gostaria de instalar.
Selecione a guia Revisão e clique no botão Provisionar na parte inferior da página. O cPanel instalará as extensões e suas dependências.
Com as extensões instaladas, retorne à sua sessão SSH e reinicie o memcached:
systemctl restart memcached
Os blocos de construção estão no lugar e o memcached deve estar pronto para iniciar o armazenamento em cache, mas vamos nos certificar de que tudo ocorreu conforme o planejado. Primeiro, verificaremos se o memcached está funcionando com PHP.
ea-php73 -i | grep "memcached"
Estamos solicitando a instalação do EasyApache4 PHP 7.3 do sistema para exibir seus dados de configuração interna e filtrar os resultados com “grep” para extrair as linhas relevantes. Para diferentes versões do PHP, substitua o “73”. Por exemplo, se seus aplicativos usam PHP 7.4, o comando deve começar com “ea-php74”.
Se tudo estiver bem, o PHP imprimirá muitos dados, começando com linhas assim:
Para ver informações semelhantes em seu navegador da Web, crie um arquivo chamado phpinfo.php no diretório public_html do seu domínio com o seguinte conteúdo:
<?php phpinfo(); ?>
Salve o arquivo e visite-o em uma guia do navegador.
http://example.com/phpinfo.php
Substitua example.com pelo seu domínio. Você deve excluir este arquivo quando não precisar mais dele. Ele contém informações sobre seu servidor que podem revelar vulnerabilidades de segurança para agentes mal-intencionados.
Se você está curioso sobre a quantidade de informações armazenadas em cache e outras estatísticas, você pode descobrir com o comando:
memcached-tool 127.0.0.1:11211 stats
No entanto, ainda não conectamos nenhum aplicativo PHP ao cache, então você não verá muita atividade. Vamos consertar isso.
Como configurar aplicativos PHP para trabalhar com o Memcached
Temos o Memcached em execução no servidor, mas os aplicativos não o usarão até que nós digamos a eles. O processo difere dependendo do aplicativo, mas as extensões do Memcached estão disponíveis para os sistemas de gerenciamento de conteúdo e lojas de comércio eletrônico mais populares.
- WordPress : W3 Total Cache , LiteSpeed e muitos outros plugins suportam Memcached.
- Drupal : A API do Memcache e o módulo de integração permitem armazenamento em cache, gerenciamento e estatísticas.
- Joomla: Joomla inclui suporte memcached nativo .
- Adobe Commerce: a integração do Memcached é suportada com apenas algumas edições de configuração .
Siga a documentação do Memcached para seu aplicativo ou plug-in PHP. Eles podem detectar automaticamente o Memcached e tudo o que você precisa fazer é ativar o cache. No entanto, pode ser necessário inserir o endereço IP e a porta à qual o cache está conectado, que é 127.0.0.1:11211. A porta é a parte após os dois pontos: 11211.
O Memcached pode reduzir significativamente a carga em servidores ocupados, ajudando os administradores de servidor a controlar os custos de hospedagem enquanto acelera os aplicativos PHP para uma melhor experiência do usuário. As ferramentas de gerenciamento de PHP EasyApache4 do cPanel e WHM facilitam a instalação e o gerenciamento das extensões que você precisa para usar o Memcached com PHP.